元素名称的案例约定?

时间:2009-07-02 13:48:38

标签: xml case-sensitive

XML中有关于元素大小写的正式建议吗?

我知道XHTML使用小写元素名称(而不是HTML,它通常使用大写但不区分大小写。)

但我在谈论XML用于通用内容。

小写:

<customer> 
   <accountnumber>619</accountnumber>
   <name>Shelby Lake</name>
</customer>

驼峰:

<customer> 
   <accountNumber>619</accountNumber>
   <name>Shelby Lake</name>
</customer>

PascalCase:

<Customer> 
   <AccountNumber>619</AccountNumber>
   <Name>Shelby Lake</Name>
</Customer>

大写:

<CUSTOMER> 
   <ACCOUNTNUMBER>619</ACCOUNTNUMBER>
   <NAME>Shelby Lake</NAME>
</CUSTOMER>

注意:我正在寻找被引用的指导而非意见。但是,投票率最高的意见可以被视为一个指导原则。

10 个答案:

答案 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)说要使用:

  • 元素的上层CamelCase(PascalCase)。
  • (下)camelCase for attributes。

当你想要符合某种标准时,NIEM是一个很好的选择。

答案 4 :(得分:13)

有关若干标准中使用的一些示例规则,请参阅UN/CEFACT XML Naming and Design Rules Technical Specification Version 3.0第23页。

细节(2009年12月17日版本3.0第23页):

  • LowerCamelCase(LCC)必须用于命名属性。
  • UpperCamelCase(UCC)必须用于命名元素和类型。
  • 元素,属性和类型名称必须是单数形式,除非概念本身是复数。

other link, Swedish site

答案 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)

骆驼案获得了我的投票。

至于引用的例子,也许这个问题可能是人们引用的链接。