XML文档是否有任何标准,事实上或其他标准?例如哪个是编写标签的“最佳”方式?
<MyTag />
<myTag />
<mytag />
<my-tag />
<my_tag />
同样,如果我有一个更好的属性的枚举值
<myTag attribute="value one"/>
<myTag attribute="ValueOne"/>
<myTag attribute="value-one"/>
答案 0 :(得分:42)
我怀疑最常见的值是camelCased - 即
<myTag someAttribute="someValue"/>
特别是,如果与代码生成器混合(即将[de]序列化xml到对象),空格会引起一些小故障,因为没有多少语言允许带空格的枚举(要求两者之间的映射)。
答案 1 :(得分:26)
- 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
可以使用任何名称,不保留任何单词(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.
没有为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
答案 2 :(得分:13)
对我来说,就像讨论编程语言的代码风格一样:有些人会争论一种风格,有些人则会捍卫另一种选择。我看到的唯一共识是:“选择一种风格并保持一致”!
我注意到许多XML方言只使用小写名称(SVG,Ant,XHTML ......)。
我没有得到“属性值中没有空格”规则。不知何故,它向辩论发出了“将属性放入什么以及放置什么作为文本?” 也许这些不是最好的例子,但有一些众所周知的XML格式在属性中使用空格:
我并不完全理解反对这种做法的论点(似乎只适用于某些用法)但它至少是合法的,而且使用得相当广泛。有缺点,显然。
哦,在自动关闭斜线之前你不需要空格。 : - )
答案 3 :(得分:12)
我赞成使用TitleCase作为元素名称,而使用camelCase作为属性。两者都没有空格。
<AnElement anAttribute="Some Value"/>
顺便说一下,我快速搜索了XML中的最佳实践,并提出了这个相当有趣的链接:XML schemas: Best Practices。
答案 4 :(得分:8)
我倾向于支持小写或 camelcase 标记,因为属性通常应该反映数据值 - 而不是内容 - 我会坚持使用可以用作任何平台/语言可能感兴趣的变量名称,即避免空格,但其他两种形式可以可以
答案 5 :(得分:8)
这是主观的,但如果元素标签中有两个单词,则可以通过在单词之间添加下划线(例如<my_tag>
)而不是不使用分隔符来增强可读性。参考:http://www.w3schools.com/xml/xml_elements.asp。所以根据w3schools,答案是:
<my_tag attribute="some value">
该值不需要使用下划线或分隔符,因为在属性值中允许使用空格,但在元素标记名称中不允许使用空格。
答案 6 :(得分:7)
许多以文档为中心的XML方言使用小写基本拉丁语和破折号。我倾向于这样做。
将XML直接映射到编程语言标识符的代码生成器很脆弱,并且在可移植文档格式中应避免(除了简单的对象序列化,例如XAML);为了最好地重用和信息寿命,XML应该尝试匹配域,而不是实现。
答案 7 :(得分:3)
rss可能是世界上使用最多的xml架构之一,它是camelCased。
规格在这里:http://cyber.law.harvard.edu/rss/rss.html
当然,它在模式中没有节点属性,但所有节点元素名称都是camelCased。例如:
lastBuildDate 总编辑 pubdate的
答案 8 :(得分:2)
我通常将XML命名约定与代码的其他部分中的相同命名约定对齐。原因是当我将XML加载到Object时,它的属性和元素名称可以被称为当前在项目中使用的相同命名约定。
例如,如果您的javascript使用camelCase,那么您的XML也使用camelCase。
答案 9 :(得分:2)
Microsoft采用两种惯例:
对于配置,Microsoft使用 camelCase 。查看Visual Studio配置文件。对于VS2013,它存储在:
C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ devenv.exe.config
示例:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
示例:
<MenuItem Header="Open..." Command="ApplicationCommands.Open">
<MenuItem.Icon>
<Image Source="/Images/folder-horizontal-open.png" />
</MenuItem.Icon>
</MenuItem>
答案 10 :(得分:1)
没有明确的建议。根据W3C的其他建议XHTML的建议,我选择了小写:
4.2。元素和属性名称必须为小写
XHTML文档必须对所有HTML元素和属性使用小写 名。这种差异是必要的,因为XML区分大小写,例如 &LT;李&GT;和&lt; LI&gt;是不同的标签。
答案 11 :(得分:0)
XML命名规则
XML元素必须遵循以下命名规则:
来源:W3 School
答案 12 :(得分:0)
我一直在寻找一个好的方法,也读这个帖子和其他一些我会投票使用连字符。
它们广泛用于ARIA(https://developer.mozilla.org/de/docs/Web/Barrierefreiheit/ARIA),可以在许多源代码中看到,因此很常见。正如这里已经指出的那样,它们当然是被允许的,这也在这里解释:Using - in XML element name
另外还有一个好处:当与CSS结合使用HTML时,您经常会有一些类,其名称默认使用连字符作为分隔符。现在,如果您有使用CSS类的自定义标记或使用CSS类的标记的自定义属性,那么类似于:
<custom-tag class="some-css-class">
更加一致,读起来 - 用我的拙见 - 比以下更好:
<customTag class="some-css-class">