XML中有关于元素大小写的正式建议吗?
我知道XHTML使用小写元素名称(而不是HTML,它通常使用大写但不区分大小写。)
但我在谈论XML用于通用内容。
<customer>
<accountnumber>619</accountnumber>
<name>Shelby Lake</name>
</customer>
<customer>
<accountNumber>619</accountNumber>
<name>Shelby Lake</name>
</customer>
<Customer>
<AccountNumber>619</AccountNumber>
<Name>Shelby Lake</Name>
</Customer>
<CUSTOMER>
<ACCOUNTNUMBER>619</ACCOUNTNUMBER>
<NAME>Shelby Lake</NAME>
</CUSTOMER>
注意:我正在寻找被引用的指导而非意见。但是,投票率最高的意见可以被视为一个指导原则。
答案 0 :(得分:87)
源自W3C的大多数XML标准倾向于使用带有连字符的小写。
将XML视为平台中立文档的格式(W3C标准试图鼓励的)与XAML之类的语言之间存在哲学上的区别,XAML将XML视为平台特定对象图的序列化。
如果您没有使用XML作为平台中立文档格式,而是作为特定于应用程序的序列化,那么您可能会省去一些麻烦,并且在XML名称和平台特定名称之间具有1:1的对应关系。但是为了这个目的,几乎任何其他对象图格式都比XML更好。
如果你是,那么你可能想要适应XHTML,XSLT,SVG,XProc,RelaxNG和其他。
答案 1 :(得分:62)
并不重要,但我一直偏爱PascalCase for Elements和camelCase的属性:
<Root>
<ParentElement attributeId="1">
<ChildElement attributeName="foo" />
</ParentElement>
</Root>
答案 2 :(得分:30)
没有正式的推荐。
由于XML的设计具有持有文档和在不同系统之间交换信息的双重目的,因此它的设计是为了能够匹配使用它的应用程序。
因此.Net XML倾向于使用ProperCasing(见证XAML),而其他XML将使用camelCasing,python_conventions,dot.naming甚至COBOL-CONVENTIONS。 W3C似乎喜欢小写与短划线(相当于一点点)(例如XSLT)或仅仅是低速行动(例如MathML)。
我喜欢所有小写,没有下划线,因为这意味着更少使用[Shift]键,我的手指有点懒。 :)
答案 3 :(得分:23)
添加Metro Smurf的答案。
国家信息交换模型(NIEM:http://en.wikipedia.org/wiki/National_Information_Exchange_Model)说要使用:
当你想要符合某种标准时,NIEM是一个很好的选择。
答案 4 :(得分:13)
有关若干标准中使用的一些示例规则,请参阅UN/CEFACT XML Naming and Design Rules Technical Specification Version 3.0第23页。
细节(2009年12月17日版本3.0第23页):
答案 5 :(得分:11)
扩展my comment above:在XSLT中使用带有连字符的小写字母有一些问题。具体而言,很容易将称为“年龄与年龄”的节点混淆为公式“年龄”(例如,从年份中减去年龄)。
正如@KarlKieninger所指出的,这只是人类层面的问题,而不是XSLT解析器。但是,由于这通常会不会产生错误,因此使用'带小写连字符'作为标准就是要求麻烦,恕我直言。
一些相关的例子:
<a>1</a><b>1</b>
<xsl:value-of select="a+b"/>
outputs 2, as expected
<a>1</a><b>1</b>
<xsl:value-of select="a-b"/>
DOES NOT ERROR, BUT OUTPUTS NOTHING AT ALL
在上面的代码中,你必须在减法运算符之前放置至少一个空格,但是对于加法运算符没有这样的要求。
<a-b>1</a-b><c>1</c>
<xsl:value-of select="a-b -c"/>
outputs 0, as expected
但请注意以上内容是多么令人困惑!
<a>1</a><a-b>3</a-b><b>2</b>
<xsl:value-of select="a-b"/>
outputs 3
<a>1</a><a-b>3</a-b><b>2</b>
<xsl:value-of select="a -b"/>
outputs -1
单个空格的存在会改变上面的输出,但这两个变量都不是错误。
答案 6 :(得分:9)
Google's style guide为所有元素名称以及属性名称推荐(甚至可能是强制性的)camelCase。
答案 7 :(得分:4)
XML套管的原始意图是连字符的小写。它区分大小写并且不要求您遵循该惯例 - 因此您可以做任何您想做的事情。对不起,我没有引用。
答案 8 :(得分:1)
我不会说HTML“规范”使用大写。我认为最初的大写字母用于在视觉上将HTML与内容分开。现在使用语法高亮,这是不必要的。
我转向小写,必要时使用短划线(也可以更快地输入)。用XML混合大小写对我来说是错误的。
答案 9 :(得分:-1)
骆驼案获得了我的投票。
至于引用的例子,也许这个问题可能是人们引用的链接。