使用具有描述性的名字可以使人更易于理解。想像一下读到下面内容时你会遇到的困惑:
下面来总结一下XML的命名规则:
l XML名字不能以数字或标点符号开头; l XML名字不能包含空格;
l 如果不是表示命名空间,就不要在名字中包含冒号; l XML名字是区分大小写的。
下面将更详细地描述XML文档的内容。首先从可能出现在序言中的元素开始。
1.3.3 XML文档序言
XML文档的序言里包含了关于文档本身的元信息,而不是文档的内容。它可能包含XML声明、处理指令、注释以及嵌入的DTD或模式。
1.XML声明
XML文档通常都以一个XML声明开始,虽然这并不是必需的:
在XML文档中,包含一个声明是好的做法,因为它可以告诉应用程序或人随后的是一段XML内容。它还能向处理程序提供关于该文档的额外信息,比如它的字符编码类型。
如果在XML中包含声明,就必须将它置于文档的第一行。任何内容都不能放在XML声明前面,空格也不行。如果你不小心在声明前面放了一个空格,XML处理程序就将无法正确解析文档的内容,并且会产生错误消息。
XML声明中还可以包含一些属性,这些属性提供关于版本、编码以及文档是否独立的信息:
在本书的写作期间,XML的最新版本是1.1。然而,很多处理程序还不支持这个版本,所以最好还是坚持将版本声明为1.0以保持向后兼容。
声明中的encoding属性描述的是XML文档的字符集。如果没有包含encoding属性,则文档会被认为使用UTF-8编码。
声明中的standalone属性的值只能为yes或no。这个值表示要正确处理当前的文档是否还需要外部文件。
XML声明中的每个属性都是可选的,但是它们的顺序很重要。如果需要包含encoding属性,那它必须出现在version属性的后面。而standalone属性只能是声明中的最后一个属性。
2.处理指令
序言中还可包含处理指令(processing instruction,PI),它们将关于XML文档的信息传递给其他应用程序。XML处理程序并不处理PI,而是将它们原封不动地传递给应用程序。
PI以结束。它们通常会在序言中出现,虽然它们也可出现在XML文档内的其他地方。
注解 XML声明也以
下面的PI指定了一个到XSL样式表的引用:
PI中的第一项是一个名字,称为PI目标。上面的PI的名字是xml-stylesheet。以xml开头的名字被保留为XML专用PI的名字。这个PI还有一段文本字符type=\。虽然看起来像是两个属性,但是这段内容却并不是这么处理的。在第6章和第7章中还会有更多样式表PI的例子。
3.注释
注释几乎可以出现在XML文档的任何地方。上面的XML文档例子中在序言里包含了一段注释,所以我们在了解其他序言内容时也看一看注释。
XML注释看起来与XHTML注释一样。它们以结束:
注释并不影响XML文档的处理,通常是为了便于阅读和理解的。在添加注释时需要遵循以下规则:
l 注释里不能包含文本-->; l 注释不能包含于标签内部;
l 元素中的开始标签或结束标签不能被注释掉;
l 虽然大多数XML处理程序都会把注释传递给应用程序,但并不一定必须这么做。
4.DTD和XML模式
DTD和XML模式提供关于XML文档内的元素和属性如何出现的规则。也就是说,它们确定哪些元素和属性是有效的,哪些是必需的或可选的。
序言中可以包含关于XML文档的声明,也可以包含一个到外部DTD或模式的引用,或是两者都包括。第2章将详细介绍DTD和模式。
1.3.4 XML文档元素中的段
XML文档中的数据存储在文档元素或根元素内。这个元素包含文档中的所有其他的元素、属性、文本和CDATA,同时也可包含实体和注释。
1.元素
在XML文档中,元素有很多作用,它们
l 可以标记内容;
l 为它们标记的内容提供一些描述; l 为数据的顺序和相对重要性提供信息; l 展示数据之间的关系。
元素包括一个开始标签、一个结束标签和内容。内容可以是文本、子元素或是二者都有。元素的开始标签中也可包含属性。在元素内部可以放置注释。
在前面的例子中,可以看到
开始标签
在前面说过,必须按照正确的顺序打开和关闭标签。下面的写法是错误的:
一共有四类元素:
l 空元素;
l 仅含文本的元素; l 仅含子元素的元素;
l 含子元素、文本或混合元素的元素。
第2章关于XML模式的内容将介绍区分这些不同类型的元素是多么重要。
q 空元素
如果元素中不包含任何文本,那么它就是个空元素,可以以两种方式书写。下列两段代码是完全相同的:
第二行的标签使用一种省略的写法,即在结束标签的尖括号前面加上一个正斜杠。XHTML中
标签也是空元素的一个例子。使用空元素写法可以减小文件的大小并使文档更清晰易读。
q 仅含文本的元素
有些元素仅含文本内容。从前面的例子中可以看到,
q 含其他元素的元素
一个元素可以仅包含其他的元素。容器元素称为父(parent),被包含的元素称为子(child)。
描述XML中的元素结构时经常使用族谱来作类比。
q 混合元素
混合元素既含有文本也含有子元素。上面DVD的例子并没有包含这种类型的元素。下面的代码片段显示了一个混合元素:
综上所述,元素有以下条件:
l 元素必须含有开始标签和结束标签。在没有内容的情况下,才可以使用省略写法; l 标签名称必须符合XML命名规则; l 元素必须正确地嵌套。
2.属性
在XML文档中,提供信息的另一种方法就是在元素的开始标签中使用属性。属性通常为它们所修饰的元素提供额外的信息。一个元素中可以出现的属性的数量是没有限制的。
属性由名称/值对组成,其中值是包含于单引号或双引号中的:
属性为元素提供额外的信息:
在这个例子中,数据Introduction to XML封装在
元素内部。此元素告诉Web浏览器另起一段显示信息。而style属性提供了如何显示数据的额外信息。这里是告诉浏览器将文本置中。
属性的两种通常用法是转换信息格式和指定特定的格式或编码。例如,可以这样转换日期格式: