1、XML文档结构 【1】XML文档的组成 XML文档由两部份组成:即文档序文与文档根元素。 序文部分包括必须有的XML声明语句以及可选的处理指令等; 文档根元素则是一个可以包含多个嵌套子元素的顶层元素。 整个文档以.xml为文件扩展名加以保存。 【2】XML文档的声明 每个XML文档必须以一个文档声明语句开头,包括声明XML的版本号、所使用的字符集,以及是否为独立文档等信息。例如: <?xml version="1.0" encoding="GB2312" standalone="yes" ?> 【3】XML文档的注释 XML文档中的注释语句以 <!-- 起始,以 --> 结束。在这两者之间,可以输入除了双连字符“--”之外任何想要说明的文字。 【4】XML的处理指令 XML的处理指令简称PI,其用途是为XML解析器提供传送给应用软件或脚本程序的信息,也可以用来指定应用软件处理或显示文档的方法。 处理指令一般具有下列语法格式: <?目标程序名 指令 ?>
2、XML文档的元素 【1】XML元素的组成 一个XML元素由一个起始标记、一个结束标记,以及夹在这两个标记之间的数据内容所组成。其基本形式如下: <标记名>数据内容</标记名> 【2】XML标记的命名 XML元素标记的命名规则如下: 标记名字必须以英文字母或下划线“_”开头,中文标记名称必须以汉字或下划线“_”开头。 在使用默认字符集的情况下,标记名称可由零个或多个字母、数字、句点“.”、连字符(-),或底划线“_”构成。 XML解析器对标记名称中的英文字母大小写是敏感的。 标记名称中不能含有空格。 冒号“:”被保留作为名称空间的分隔符,因而不能在普通标记名称中出现。 【3】XML元素的类型 1.非空元素 绝大多数XML元素为非空元素,即在其起始标记和结束标记之间通常会有一定的内容,元素的内容也称为元素的数据,它可以是文本、也可以是该元素所包含的若干个子元素。 2.空元素 所谓空元素是指没有内容的元素,即在开始标记与结束标记之间既无数据内容也无属下的子元素。例如下面的元素: <RESUME></RESUME> 此种情况下,可将上面的空元素写成: <RESUME/> 【4】XML元素的嵌套 XML规范指出:一个格式正确的XML文档必须明确地拥有一个唯一的顶层元素,该元素被称为文档元素或根元素,而其它所有的元素都被嵌套在这个元素之下。事实上,XML文档中几乎所有的元素都是以嵌套形式存在的。 一个包含若干个嵌套元素的元素被称为父元素(parent element);而一个直接包含在父元素之下的元素则称为该父元素的子元素(child element)、副元素(subelement),或父元素的嵌套元素。 【5】XML元素综合示例 在一个格式正确的XML文档中可以有多种不同类型和不同层次的元素。XML文档中,包含了含有内部注释语句的元素、携带属性的空元素,以及若干个依层次嵌套的元素。
3、XML元素的属性 在XML元素的起始标记中,可以包含一个或多个属性,用来对该元素的特征作进一步描述,或者用来存储和表示与这个元素相关的若干个数据。XML规范允许用户自己定义元素所具有的各种属性。 【1】元素属性的定义 对于非空元素,其属性的定义格式如下: <标记名 属性名="属性值" 属性名="属性值"...>数据内容</标记名> 对于空元素,属性的定义格式如下: <标记名 属性名="属性值" 属性名="属性值".../ > 【2】属性值定义规则 属性值的定义应遵守下面规则: 属性值字符串应该使用半角的单引号或双引号括起来。 属性值的字符串中不能包含用来界定属性值的引号。当属性值本身含有单引号时,应该用双引号括起来;当属性值本身含有双引号时,应该用单引号括起来。 属性值的字符串中不能包含“<”、“>”、“&”、单引号和双引号等字符,但可以包含预定义的特殊字符编码或内部实体引用(将在后面的章节中讨论这些概念及应用)。 【3】将元素内容转换成属性 与某个元素相关的数据可以用其子元素来表示;反过来,某个元素的一些子元素内容也可以转换为该元素的属性来表示。
4、CDATA 区段 根据XML规范,不能直接将“>”、“<”、“&”等特殊字符放置在XML元素内容的字符数据里。要避开这个限制的方法是使用对应的特殊字符编码。 然而,可以在XML文档中使用特定的CDATA 区段来将任何字符组合包含在元素的字符数据中。 【1】 特殊字符的使用 某些字符,例如“<”、“>”、“&”等在XML文档中被赋予了特殊意义,而被称为特殊字符。在XML文档的数据中使用这些特殊字符时,必要对它们进行特殊编码,表2-1列出了这些特殊字符及其对应的特殊编码。 【2】CDATA的格式 CDATA区段的作用是告知XML解析器其内包含的所有内容均应作为文字数据来处理,并原封不动地将这段文字传送给应用程序。 CDATA区段的格式如下: <![CDATA [字符数据内容]]> 【3】 CDATA的位置 可以将CDATA区段放置在元素内容中可以出现字符数据的任何地方,但不能被包含在子元素的起始标记中。此外,CDATA区段不能嵌套,即不能将一个CDATA区段放置到另一个CDATA区段之中。
5、XML名称空间 XML规范提供了名称空间机制,用来解决同一个XML文档中使用相同标记名而代表不同意义的元素所引起的冲突问题,以及在同一个XML文档中使用不同的标记语言集合而产生的的混淆问题。 【1】名称空间的概念 许多时候,两个同名的元素在不同的XML文档中可能会有不同的含义。引入名称空间的概念,可以避免相同标记名称具有不同含义而产生冲突,还可以在同一个XML文档中可以使用不同的标记语言集合。 名称空间在XML文档中的具体应用,是通过在元素的标记名前添加一个独特的标识符来指明该标记的归属,因而这个标识符在XML文档中应该是唯一的。 在XML规范中,对名称空间的定义采用Web上某个唯一的URI来定义不同的名称空间,并将其与某个特定的名称空间标识符对应起来。 【2】名称空间的定义 XML文档中的名称空间是在某个元素的起始标记内进行定义的,定义名称空间及其对应标识符的语法格式如下: <标记名 xmlns:标识符="URI"> 【3】默认名称空间 可将文档中使用较多的名称空间定义为默认名称空间,并设法将这个默认名称空间与某个元素及其子元素相关联。默认名称空间的定义格式如下。 <标记名 xmlns="URI"> 在某个元素的标记中定义的名称空间,即规定为是这个元素的默认名称空间,其涵盖范围包括该元素的所有子元素。 【4】混合使用XML和HTML 利用名称空间机制,还可实现在XML文档中直接利用HTML的标记,当前主要的浏览器都支持这种做法。这样一来,不需要使用XML的链接标准Xlink或Xpointer,也能让XML文档具有超链接、显示图片和使用表单等功能。当然,在XML文档中使用HTML标记之前,必须声明它的名称空间。
6、正确的XML文档 【1】格式良好的XML文档 如果一个XML文档包含一个或多个元素,各元素都能正确地嵌套,并且在需要的情况下正确地使用了属性和实体参照,符合XML的基本语法规范,那么就可认为这个XML文档是格式良好的。 【2】有效的XML文档 如果一个XML文档是格式良好的,并且它是严格地依据某个DTD建立的,那么,这个XML文档就被称为有效的。 【3】对XML文档的“阅读”和处理则必须有XML解析器。XML解析器的主要功能是检查XML文档是否存在结构和语法上的错误,然后剥离XML文档中的标记,读出正确的内容,以交给下一步的应用程序处理。
|