2.4 XML元素的基本规则

元素是XML文档的基本单元,XML文档就是由一个一个层层嵌套的元素所组成。整个XML文档从根元素开始,根元素包含若干子元素,而每个子元素又可以包含若干子元素,从而可以组织成庞大的XML文档。标准的XML元素包含一个起始标签、一个结束标签以及标签之间的数据内容,此处的数据内容可能是基本的字符串,也可能是子元素,甚至可能是包含子元素的子元素。关于XML元素还有如下几个值得注意的地方。

2.4.1 合法的标签名

与HTML不同,XML没有预置任何元素,因此XML允许开发者自己扩展元素。通常情况下,XML元素由开始标签和结束标签组成,结束标签比开始标签多一条斜线。XML文档严格区分大小写,因此,开始标签和结束标签的标签名必须绝对相同,大小写也要完全一致。例如下面的元素:

alt

该元素是错误的:对于XML文档而言,name和Name是两个不同的标签名。XML文档对于标签名有如下要求:

alt 标签名可以由字母(包括非西欧字符)、数字、下画线(_)、中画线(-)、冒号(:)和点号(.)组成,但不能以数字、中画线和点号开头。

alt 标签名不能包含<、>、,、$等符号。

alt 标签名中尽量不要出现英文冒号“:”,除非是在使用名字空间。

alt 标签名不能以字符“xml”(或者XML、Xml等任意大小写组合)开始。

alt 标签名不能包含空格。

基本上,XML没有任何保留字,因此XML标签名可以使用任何名称。


alt提示

XML标签名应该具有描述性,这样可以保证XML文档具有最好的“自我描述性”。通常情况下,推荐使用简短的标签名,在标签名中使用下画线也是不错的选择。XML 文档通常有一个对应的数据库,其中的字段会对应XML 文档中的元素。有一个比较实用的经验:使用数据库的命名规则来命名XML文档中的标签比较合适。除此之外,还有如下3点需要注意:

alt  尽量避免使用中画线(-)。如果按照这样的方式进行命名:first-name,一些软件会认为只需要提取第一个单词。

alt  尽量避免使用点号(.)。如果按照这样的方式进行命名:first.name,一些软件会认为first是对象,而name是first对象的属性。

alt  尽量避免使用英文冒号(:)。使用冒号会被当成命名空间来处理。


2.4.2 嵌套子元素

XML允许无限深度地嵌套子元素,只要保证元素之间合理嵌套即可,而且XML元素可以嵌套多个重名的子元素,这多个子元素之间是有序的。例如如下XML代码片段:

alt

上面的<疯狂Java体系…/>元素里包含了6个<书籍…/>子元素,这6个子元素之间有严格的先后顺序,代表了疯狂Java体系6本图书的学习顺序。如果将上面的文档改为如下形式:

alt

该XML文档也是正确的,只是与前面的XML文档所表达的意义就完全不同了。

2.4.3 空元素

XML允许使用空元素语法,空元素不可接受子元素,也不可接受字符串内容。值得指出的是,空元素和内容为空的元素并不相同。例如如下元素是空元素:

alt

但上面的元素与如下元素不同:

alt

上面的<book…/>元素其实是包含内容的,它包含的内容是一个空格,空格也是字符。

空元素还可以写成如下形式:

alt

需要指出的是,空元素只是不能包含子元素,也不能包含字符串内容,但完全可以接受属性,而且可以接受任意多个属性。例如如下XML元素也是合法的:

alt