我正在查看工具的输出,将数据库表转储到XML.其中一列被命名为64kbit,该工具就是这样编码的,我需要复制它:
<_x0036_4kbit>0
这是某种标准编码吗?我在哪里可以了解更多信息?
官方的说法是对Xml命名约定施加的限制是从Xml的父集SGML继承的,仅有一个例外:在Xml中,作为附加选项,名称可以以下划线'_'字符开头.
SGML是由IBM在20世纪60年代由一群思考"20世纪60年代风格"的思想家开发的.
因此,导致SGML创造的大脑风暴很可能被太空船,时间旅行和厨房用铝箔制成的防止"外星人"及其傻瓜的压倒性观念分散注意力 - 强烈的思想挑衅和思维控制尝试是合理的思维过程.
所以.问题仍然存在.为什么SGML不允许数字?此外,为什么对控制字符以外的任何字符的使用都会施加任何限制; <,>,&和空的空间?这将是一种疯狂,当然要向计算机爱好者提供这么多不同角色的钥匙,只是为了阻止他或她使用它们.
最重要的原因是20世纪60年代的思维解析器,它遵循复杂性规则到一定程度的彻底迂腐.
"解析器越简单,它的执行速度就越快"
字母表中有26个大写字母+ 26个非大写字母,总数为52个.允许数字是另外十个数字,大约是六分之一!
从人的角度来说,这就像是要洗六个隐形污垢的罐子,每一个花一个小时来清洗,然后隐藏在最后一个锅底下是一个额外的奖金罐洗,你必须洗它!你必须在你的余生中每天重复这个例行程序,而这正是它所喜欢的.正是!
标记语言文档具有内容膨胀的趋势.因此,解析器的作业越少,意味着性能速度的直接提高.然后,这些好处逐渐渗透到整个队伍中,直到它们变成纯粹的利润丰厚的表现.
在'Ye olde days of horse,carriage and a Commodore 64'中,用户有责任手动计算其位和字节,以便千字节自行处理.然而,由于现代CPU比其古老的前辈更能应对,解析器所施加的限制已经变得比性能问题更重要.
如果有任何安慰,如果我自己设计一种标记语言(为了论证的缘故,我们将称之为NAM-LIT-MAML,因为尼古拉斯令人敬畏的标记语言是最棒的标记语言(永远! ),那么它将允许你在世界的整个历史中使用任何数量的所有角色,甚至是宇宙,毫无例外地,我会努力创造一些从未在角色之前用过的语言自己使用,它仍然可以通过使用自己的转义字符在文档中使用,该转义字符看起来与任何人曾经使用过的任何其他字符完全不同.
Xml施加的限制是从SGML继承而来的,我们都同意,在太空船骆驼和其他有用的机器人哺乳动物的这个时代,它们是不必要的,愚蠢的,并且违背了面向对象的编程.
进一步阅读http://www.w3.org/TR/REC-xml/
虽然我发现使名称xml兼容的最简单方法是包含后缀"_",但没有标准,因此正在使用其他方法.
在您的示例中,第一个字符已转换为十六进制值.此十六进制值表示ASCII,Unicode和毫无疑问的其他字符中的'6'字符.
使用十六进制值的一个好处是可以表示代码集中的所有字符,例如Unicode.
一件坏事是它们一目了然不那么可读.
好吧,它似乎不太标准,但XML显然不允许数字(以及其他一些东西)作为元素名称的第一个字符:
NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
如果这个编码不符合要求,那么这种编码只会逃脱第一个字符.它使用该字符的十六进制值._x0036_
显然对应于hexadeximal 0x36
其是54
在十进制和表示数字6
.
XML名称不能以数字开头,因此必须使用一些其他表示,可以理解为'6'.
该工具已选择写入字符的十六进制表示,由下划线包围.代码\x0036
是字符"6"的十六进制代码,十进制为54.下划线是XML名称开头的有效字符,因此可行.
可以使用相同的技术来转义XML名称中无效的其他字符.这项技术是由微软的XmlConvert用于例如,描述在这里,但我敢肯定有它使用相同的技术太等工具.