125

是否有关于 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>

注意:我正在寻找引用的指南而不是意见。但是投票最多的意见可以被视为指导方针。

4

10 回答 10

91

大多数源自 W3C 的 XML 标准倾向于使用带有连字符的小写字母。

在将 XML 视为平台中立文档的格式(W3C 标准试图鼓励这种格式)与将 XML 视为平台特定对象图的序列化的语言(如 XAML)之间存在哲学上的区别。

如果您没有将 XML 用作平台中立的文档格式,而是用作特定于应用程序的序列化,那么您不妨省去一些麻烦,并在 XML 名称和平台特定名称之间建立 1:1 的对应关系。但几乎任何其他对象图格式都比 XML 更好。

如果你是,那么你可能想要适应 XHTML、XSLT、SVG、XProc、RelaxNG 和其他。

于 2009-07-02T15:18:27.737 回答
64

这并不重要,但我一直偏爱 PascalCase 的 Elements 和 camelCase 的属性:

<Root>
  <ParentElement attributeId="1">
    <ChildElement attributeName="foo" />
  </ParentElement>
</Root>
于 2009-07-02T13:59:07.493 回答
31

没有正式的建议。

由于 XML 的设计具有保存文档在不同系统之间交换信息的双重目的,因此它被设计为能够匹配使用它的应用程序。

所以 .Net XML 倾向于使用 ProperCasing(见证 XAML),而其他 XML 将使用 camelCasing、python_conventions、dot.naming 甚至 COBOL-CONVENTIONS。W3C 似乎更喜欢小写加破折号(例如 XSLT)或只是小写单词混合在一起(例如 MathML)。

我喜欢全部小写且没有下划线,因为这意味着较少使用 [Shift] 键,而且我的手指有点懒惰。:)

于 2009-07-02T14:06:18.553 回答
25

添加到 Metro Smurf 的答案。

国家信息交换模型(NIEM:http ://en.wikipedia.org/wiki/National_Information_Exchange_Model )说要使用:

  • 元素的大驼峰(PascalCase)。
  • (下)camelCase 用于属性。

当您希望符合某些标准时,NIEM 是一个不错的选择。

于 2012-05-19T11:30:47.833 回答
13

有关多个标准中使用的一些示例规则,请参阅UN/CEFACT XML 命名和设计规则技术规范版本 3.0第 23 页。

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

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

其他链接,瑞典网站

于 2010-06-29T16:46:46.087 回答
13

Google 的样式指南建议(甚至可能强制要求)所有元素名称和属性名称都使用驼峰命名法:

所有名称都必须使用lowerCamelCase. 也就是说,它们以首字母小写字母开头,然后名称中的每个新单词都以首字母大写字母开头。

基本原理:采用单一样式可提供一致性,这在提及名称时会有所帮助,因为大小写是已知的,因此不必记住。它与 Java 风格相匹配,其他语言可以使用自动名称转换来处理。

于 2013-04-24T17:56:12.233 回答
13

扩展我上面的评论:使用“带连字符的小写”在 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

单个空格的存在会更改上面的输出,但两种变体都不是错误。

于 2013-09-21T03:26:44.320 回答
4

XML 大小写的最初意图是带有连字符的小写。它区分大小写,并且不需要您遵循该约定——因此您可以做任何您想做的事情。我没有引用,对不起。

于 2009-07-02T15:22:59.303 回答
1

我不会说 HTML“规范地”使用大写。我认为最初使用大写字母更容易在视觉上将 HTML 与内容分开。现在有了语法突出显示,这不是必需的。

我转向小写字母,必要时使用破折号(也可以更快地输入)。在 XML 中混合大小写对我来说是错误的。

于 2009-07-06T12:54:07.517 回答
-2

骆驼案得到我的投票。

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

于 2009-07-02T13:53:50.013 回答