是否有XML元素的标准命名约定?

tpo*_*wer 91 xml coding-style naming-conventions

XML文档是否有任何标准,事实上或其他标准?例如哪个是编写标签的"最佳"方式?

<MyTag />
<myTag />
<mytag />
<my-tag />
<my_tag />
Run Code Online (Sandbox Code Playgroud)

同样,如果我有一个更好的属性的枚举值

<myTag attribute="value one"/>
<myTag attribute="ValueOne"/>
<myTag attribute="value-one"/>
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 43

我怀疑最常见的值是camelCased - 即

<myTag someAttribute="someValue"/>
Run Code Online (Sandbox Code Playgroud)

特别是,如果与代码生成器混合(即将[de]序列化xml到对象),这些空间会引起一些小故障,因为没有多少语言允许带空格的枚举(要求两者之间的映射).

  • 嗯......最好的答案......我认为这是一个不错的答案,但这只是一个意见.有某种参考会很好. (34认同)
  • 我不同意,我不习惯看到带有驼峰的XML. (4认同)
  • 每个人都提到它是个人的,但我遵循你的方法,因为我总是使用XMLSchema定义我的XML,而XMLSchema遵循这种方法.http://www.w3.org/2001/XMLSchema.xsd.对我来说,它与编程语言无关.我们使用XML,因为它是一个可互操作的接口标准.编程语言只是一个实现细节,每种语言都有自己的约定. (4认同)

Far*_*eki 27

XML命名规则

XML元素必须遵循以下命名规则:

    - Element names are case-sensitive 
    - Element names must start with a letter or underscore
    - Element names cannot start with the letters xml(or XML, or Xml, etc) 
    - Element names can contain letters, digits, hyphens, underscores, and periods 
    - Element names cannot contain spaces
Run Code Online (Sandbox Code Playgroud)

可以使用任何名称,不保留任何单词(xml除外).

最佳命名实践

    - Create descriptive names, like this: <person>, <firstname>, <lastname>.
    - Create short and simple names, like this: <book_title> not like this: <the_title_of_the_book>.
    - Avoid "-". If you name something "first-name", some software may think you want to subtract "name" from "first".
    - Avoid ".". If you name something "first.name", some software may think that "name" is a property of the object "first".
    - Avoid ":". Colons are reserved for namespaces (more later).
    - Non-English letters like éòá are perfectly legal in XML, but watch out for problems if your software doesn't support them.
Run Code Online (Sandbox Code Playgroud)

命名样式

没有为XML元素定义命名样式.但这里有一些常用的:

    - Lower case    <firstname> All letters lower case
    - Upper case    <FIRSTNAME> All letters upper case
    - Underscore    <first_name>    Underscore separates words
    - Pascal case   <FirstName> Uppercase first letter in each word
    - Camel case    <firstName> Uppercase first letter in each word except the first
Run Code Online (Sandbox Code Playgroud)

参考 http://www.w3schools.com/xml/xml_elements.asp


Phi*_*Lho 13

对我而言,就像讨论编程语言的代码风格一样:有些人会争论一种风格,有些人则会捍卫另一种风格.我看到的唯一共识是:"选择一种风格并保持一致"!

我只是注意到许多XML方言只使用小写名称(SVG,Ant,XHTML ......).

我没有得到"属性值中没有空格"规则.不知何故,它向辩论发出了"将属性放入什么以及将什么放作文本?".
也许这些不是最好的例子,但有一些众所周知的XML格式在属性中使用空格:

  • XHTML,特别是class属性(你可以放两个或更多的类),当然还有alt和title属性.
  • SVG,例如路径标记的d属性.
  • 两者都有风格属性......

我并不完全理解反对这种做法的论点(似乎仅适用于某些用法),但它至少是合法的,而且使用得相当广泛.有缺点,显然.

哦,在自动关闭斜线之前你不需要空格.:-)


Rai*_*lin 12

我赞成使用TitleCase作为元素名称,而使用camelCase作为属性.两者都没有空格.

<AnElement anAttribute="Some Value"/>
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我快速搜索了XML中的最佳实践,并提出了这个相当有趣的链接:XML模式:最佳实践.


ann*_*ata 8

我倾向于支持小写camelcase标签,因为属性通常应该反映数据值 - 而不是内容 - 我会坚持一个值,可以用作任何平台/语言可能感兴趣的变量名,即避免空间但另一个两种形式可以是确定


ali*_*air 8

这是主观的,但如果元素标记中有两个单词,则可以通过在单词之间添加下划线(例如<my_tag>)而不是不使用分隔符来增强可读性.参考:http://www.w3schools.com/xml/xml_elements.asp.所以根据w3schools,答案是:

<my_tag attribute="some value">
Run Code Online (Sandbox Code Playgroud)

该值不需要使用下划线或分隔符,因为在属性值中允许使用空格,但在元素标记名称中不允许使用空格.

  • +1,因为您引用了具有"最佳命名惯例"部分的参考(不仅仅是意见) (2认同)
  • @Fuhrmanator"参考"本身就是一种观点,即使它确实提供了一些理由.它绝不是一个标准 - 并且(尽管它不如它那么糟糕)我*不*推荐或使用w3schools作为"参考".还有更多原创和全面的资源. (2认同)

Pet*_*ham 7

许多以文档为中心的XML方言使用小写基本拉丁语和破折号.我倾向于这样做.

将XML直接映射到编程语言标识符的代码生成器很脆弱,并且在可移植文档格式中应该避免(除了简单的对象序列化,例如XAML); 为了获得最佳重用和信息寿命,XML应该尝试匹配域,而不是实现.