XML元素是否有标准的命名约定?[关闭]


96

是否存在XML文档的事实上的标准或其他标准?例如,哪种是编写标签的“最佳”方法?

<MyTag />
<myTag />
<mytag />
<my-tag />
<my_tag />

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

<myTag attribute="value one"/>
<myTag attribute="ValueOne"/>
<myTag attribute="value-one"/>

2
从技术上讲,您也可以使用<my.tag />。在某些情况下可能不是一个好主意...
PhiLho


在网上找到了几种“标准”
。– user2864740 2014年

Answers:


46

我怀疑最常见的价值观会是驼色的-即

<myTag someAttribute="someValue"/>

特别是,如果与代码生成器混合使用,空格会引起一些小故障(即,将xml反序列化为对象),因为没有太多的语言允许枚举使用空格(要求两者之间有映射关系)。


35
嗯……最好的答案……我认为这是一个不错的答案,但这只是一种意见。有某种参考会很好。
Hamish Grubijan 2010年

4
我不同意,我不习惯看到带有驼峰案例的XML。
拉法

我知道这是一个旧答案,但是我见过的大多数较新的 Microsoft XML都倾向于不同的格式选择。但随后IIS喜欢dot.naming所以..
user2246674

4
众所周知,它是个人的,但是我遵循您的方法,因为我总是使用XMLSchema定义XML,而XMLSchema遵循这种方法。w3.org/2001/XMLSchema.xsd 。对我而言,它与编程语言无关。我们使用XML是因为它是一个可互操作的接口标准。编程语言只是实现细节,每种语言都有其自己的约定。
丹·卡特

我的2美分-我看过CamelCase和所有小写字母;很少都是大写(旧的HTML),而且我看过小写。我不记得曾经见过camelBack。我更喜欢CamelCase或小写字母。属性,但是,我倾向于看到所有的小写字母。
Kit10 2015年

30

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

可以使用任何名称,不保留任何单词(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

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


13

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

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

我没有“属性值中没有空格”规则。不知何故,它引发了辩论“什么要输入属性,什么要作为文本输入?”。
也许这些不是最好的示例,但是有一些在属性中使用空格的众所周知的XML格式:

  • XHTML,特别是类属性(可以放置两个或多个类),当然还有alt和title属性。
  • SVG,例如具有path标签的d属性。
  • 两者都具有样式属性...

我不完全理解反对该做法的论点(似乎仅适用于某些用法),但它至少是合法的,并且被广泛使用。显然有缺点。

哦,您不需要在自动关闭斜杠前加空格。:-)


反对空格的原因是,这仅是因为在问题中专门询问了该问题,如果枚举该值然后支持解析,没有多少语言支持空格枚举,但是我们中许多人在C / C ++,C#中使用XML或Java(我使用但不限于这些语言)通常会将属性值映射到枚举。然后,我们可以简单地将文字解析为地图/字典(对于Java和C#,则更容易)。最终,我同意这似乎是热情的问题而不是标准。我只是遵循“在罗马时”的哲学。
Kit10

12

我喜欢TitleCase作为元素名称,而camelCase作为属性。两者都没有空格。

<AnElement anAttribute="Some Value"/>

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


8

我倾向于使用小写驼峰标签,并且由于属性通常应反映数据值(而不是内容),因此我会坚持使用一个值,该值在任何平台/语言可能感兴趣的地方都可以用作变量名,即避免使用空格,而另一个两种形式可以


+1考虑变量/函数名称
Ates Goral

@downvoter:请帮我解释一下自己。
annakata

8

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

<my_tag attribute="some value">

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


2
+1是因为您引用的参考文献中包含“最佳命名惯例”部分(而不仅仅是意见)
Fuhrmanator 2014年

2
@Fuhrmanator“引用”本身是一种意见,即使确实提供了一些理由。无论如何,它都不是标准-并且(尽管它比以前要糟糕得多)我建议或不使用w3schools作为“参考”。有更多原始和全面的资源。
user2864740 2014年

@ user2864740之类的?在提供更多原始且更全面的资源之前,您已完成评论。我+1的意思是OP要求提供标准,但大多数答案都提供了意见。
Fuhrmanator 2014年

该答案提供意见,与w3schools的链接无关紧要,并且不会删除此类链接。至于标准,请参见实现规则(如RSS)或组织规则(如OAGi)-在某种程度上,“标准”仅适用于特定的应用程序/业务级别。w3schools链接仅在非常模糊的意义上提供了它自己的观点/最佳实践(它提供了一些技巧,并说“这是完成它的一些方法”)。
user2864740

也就是说,仅包含链接并不能使答案(或链接的资源)具有权威性。
user2864740

7

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

直接将XML映射到编程语言标识符的代码生成器很脆弱,并且(在XAML这样的天真的对象序列化除外)应避免使用;为了获得最佳的重用性和信息寿命,XML应该尝试匹配域,而不是实现。


3

rss可能是世界上使用最广泛的xml模式之一,它是驼峰式的。

规范在这里:http : //cyber.law.harvard.edu/rss/rss.html

授予它在架构中没有节点属性,但所有节点元素名称均为驼峰式。例如:

lastBuildDate管理编辑器pubDate


2

我通常将XML命名约定与其他代码部分中的相同命名约定对齐。原因是当我将XML加载到Object中时,其属性和元素名称可以称为项目中当前使用的相同命名约定。

例如,如果您的JavaScript使用camelCase,那么您的XML也将使用camelCase。


1
虽然intraproject工作有用,这迅速分解时XML作为语言无关的交换格式..下来
user2864740

因此,项目中的组件是一致的,但是您如何设计项目所遵循的初始标准?
Gqqnbig

2

Microsoft遵循两个约定:

  1. 对于配置,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>
  1. 微软还对XAML 使用UpperCase。我想这是要区别于HTML(使用小写字母)。

例:

<MenuItem Header="Open..." Command="ApplicationCommands.Open">
    <MenuItem.Icon>
        <Image Source="/Images/folder-horizontal-open.png" />
    </MenuItem.Icon>
</MenuItem>

1

没有明确的建议。根据W3C的其他建议,即XHTML的建议,我选择了小写字母:

4.2。元素和属性名称必须小写

XHTML文档的所有HTML元素和属性名称都必须使用小写。这种差异是必要的,因为XML区分大小写,例如<li>和<LI>是不同的标记。


0

XML命名规则

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

  • 名称可以包含字母,数字和其他字符
  • 名称不能以数字或标点符号开头
  • 名称不能以字母xml(或XML或Xml等)开头
  • 名称不能包含空格可以使用任何名称,不保留任何单词。

资料来源:W3学校


对可能使用哪种名称的模糊描述几乎没有指导应使用哪种可能的名称。
Samuel Edwin Ward

尽管它们定义了可能的基准-对吗?
petermeissner

10
当然,但这就像有人问“我应该给我的孩子起什么名字,以便他们在学校不被别人接见”,而您回答“好吧,这是人类能够发出的声音清单”。
塞缪尔·埃德温·沃德,

是的,但是htat实际上不是问题,对吗?因为问题是:“是否存在XML元素的标准命名约定?” 和“是否存在XML文档的事实上或其他标准?” 所以这是一个答案吧?一个回答问题的人,不仅回答问题的一种常见方式。
petermeissner,2013年

3
如果您忽略了这两句话之后的其余问题,这只是一个答案。您没有尝试回答“哪个是“最好的””或“哪个更好的”。
塞缪尔·埃德温·沃德,

0

我一直在寻找一个好的方法,也正在阅读此主题以及其他一些主题,我会投票赞成使用连字符

它们在ARIA(https://developer.mozilla.org/de/docs/Web/Barrierefreiheit/ARIA)中得到广泛使用,可以在许多源代码中看到它们,因此很常见。正如这里已经指出的,它们肯定是允许的,这也在这里进行了解释:在XML元素名称中使用-

另外还有一个好处:当结合CSS编写HTML时,通常也有一些类的名称默认情况下也使用连字符作为分隔符。现在,如果您有使用CSS类的自定义标签或使用CSS类的标签的自定义属性,则类似于:

<custom-tag class="some-css-class">

更加一致,并且-以我的拙见-比以下内容好得多:

<customTag class="some-css-class">

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.