admin管理员组

文章数量:1530842

2024年2月1日发(作者:)

XML文件结构

一个XML文件通常包含文件头和文件体两大部分

1. 文件头

XML文件头由XML声明与DTD文件类型声明组成。其中DTD文件类型声明是可以缺少的,关于DTD声明将在后续的内容中介绍,而XML声明是必须要有的,以使文件符合XML的标准规格。

在前面的文件中的第一行代码即为XML声明:

其中:

”代表一条指令的结束;

“xml”代表此文件是XML文件;

“ version="1.0" ”代表此文件用的是XML1.0标准;

“ encoding="gb2312" ” 代表此文件所用的字符集,默认值为Unicode,如果该文件中要用到中文,就必须将此值设定为gb2312。

注意:XML声明必须出现在文档的第一行。

2. 文件体

文件体中包含的是XML文件的内容,XML元素是XML文件内容的基本单元。从语法讲,一个元素包含一个起始标记、一个结束标记以及标记之间的数据内容。

XML元素与HTML元素的格式基本相同,其格式如下:

<标记名称 属性名1="属性值1" 属性名1="属性值1" ……>内容

所有的数据内容都必须在某个标记的开始和结束标记内,而每个标记又必须包含在另一个标记的开始与结束标记内,形成嵌套式的分布,只有最外层的标记不必被其他的标记所包含。最外层的是根元素(Root),又称文件(Document)元素,所有的元素都包含在根元素内。

在前面的文件中,根元素就是,根元素必须而且只能有一个,在该文件有三个子元素,这样的元素可以有多个。

4.1.2 XML的基本语法

1. 注释

XML的注释与HTML的注释相同,以“”结束。

2. 区分大小写

在HTML中是不区分大小写的,而XML区分大小写,包括标记,属性,指令等。

3. 标记

XML标记与HTML标记相同,“<”表示一个标记的开始,“>” 表示一个标记的结束。XML中只要有起始标记,就必须有结束标记,而且在使用嵌套结构时,标记之间不能交叉。

在XML中不含任何内容的标记叫做空标记,格式为:<标记名称/>

4. 属性

XML属性的使用与HTML属性基本相同,但需要注意的是属性值要加双引号。

5. 实体引用

实体引用是指分析文档时会被字符数据取代的元素,实体引用用于XML文档中的特殊字符,否则这些字符会被解释为元素的组成部分。例如,如果要显示“<”,需要使用实体引用“<”否则会被解释为一个标记的起始。

XML中有5个预定义的实体引用,如表 4.1所示。

表 4.1 XML预定义的实体引用

< <

> >

" "

' '

& &

6. CDATA

在XML中由一个特殊的标记CDATA,在CDATA中所有文本都不会被XML处理器解释,直接显示在浏览器中,使用方法如下:

这里的内容可以直接显示。

]]>

7. 处理指令

处理指令使用来给处理XML文件的应用程序提供信息的,处理指令的格式如下:

例如,XML声明就是一条处理指令:

其中,“xml”是处理指令名称,version="1.0" encoding="gb2312"是处理指令信息。

4.2 XML与CSS

利用CSS可以用来设定XML文件的显示方式,即在XML文件的头部,XML声明的下面加入下面一条语句:

下面我们通过例子来介绍如何利用CSS来显示XML文件。首先建立一个css文件,代码如下:

:一个显示XML文件的CSS样式

flower{font-size:24px; display:block}

vendor{font-size:36px;color:red}

price{display:block}

然后,在文件中使用这个css样式,即在文件中的XML声明下面加入以下语句:

完整的程序代码如下:

ex4_3_:利用CSS 显示XML文件

shop1

iris

$4.00

shop2

iris

$4.30

shop3

iris

$3.50

此例在浏览器中的显示效果如图 4.2所示。

图 4.2 利用CSS 显示XML文件

用CSS来显示XML文件时,不具备任何选择性,也就是说,根元素之下的所有数据都会被全部显示,不能改变原文件的结构和内容的顺序。另外,CSS并不支持中文标记,因为CSS 不是专门为XML开发的样式语言,而下面要介绍到的XSL就可以,XSL是特别为XML设计的,它比CSS更为复杂。

4.3 XSL

在上一节介绍的用CSS显示XML文件,效果不是很理想,实际上,CSS主要是适合HTML文件,对于XML这种数据文件,CSS就不适合了,尤其是对那些需要按照不同的条件将文件内容重新排列显示的情况,而用XSL就可以。

XSL是当前最强大和灵活的样式语言,是特别为应用XML而设计的,它比CSS要复杂的多。但是,目前它还未被很好的支持,也还没有最后完成。

利用XSL来设定XML文件的显示方式,即在XML文件的头部,XML声明的下面加入下面一条语句:

下面我们通过例子来介绍如何利用XSL来显示XML文件。首先建立一个xsl文件,代码如下:

:用来显示XML文件的xsl文件

Vendor Flower Price

我们可以看出:一个XSL文件就如一个空的HTML文件,通过填充一个XML文件产生一个传统的HTML文件。

一个XSL文件首先必须有一个XML声明(即第一行),因为XSL实际上是一种特殊的XML文件。XSL的根元素是xsl:stylesheet,即一个XSL文件必须以标记开始,以标记结束,xmlns:xsl属性用于设定XSL的命名域。

XSL的根元素通常是由一个或多个样板元素所组成,在此例中只包含单一样板,它是由标记开始,以标记结束,使用match属性可以在XML文件中选取符合条件的节点,即设定样板名称,对于最上层样板,match设为“/”,代表整个XML文件的根元素。

然后是从XML文件中取得所需的数据,取得数据最简单的方法是:

如果要取得多个元素,则要使用xsl:for-each元素,格式如下:

…..

接下来,我们要在文件中使用这个xsl文件,即在文件中的XML声明下面加入以下语句:

完整的程序代码如下:

ex4_4_:利用XSL 显示XML文件

shop1

iris

$4.00

shop2

iris

$4.30

shop3

iris

$3.50

XML 是可扩展标记语言(Extensible Markup Language)的缩写,其中的

标记(markup)是关键部分。您可以创建内容,然后使用限定标记标记它,从而使每个单词、短语或块成为可识别、可分类的信息。您创建的文件,或文档实例 由元素(标记)和内容构成。当从打印输出读取或以电子形式处理文档时,元素能够帮助更好地理解文档。元素的描述性越强,文档各部分越容易识别。自从出现标记至今,带有标记的内容就有一个优势,即在计算机系统缺失时,仍然可以通过标记理解打印出来数据。

标记语言从早期的私有公司和政府制定形式逐渐演变成标准通用标记语言(Standard Generalized Markup Language,SGML)、超文本标记语言(Hypertext Markup Language,HTML),并且最终演变成 XML。SGML 比较复杂,HTML(实际上仅是一组元素集)在识别信息方面不够强大。XML 则是一种易于使用和易于扩展的标记语言。

您可以使用 XML 创建自己的元素,从而能够更精确地表示自己的信息。您可以在文档内部识别每个部分,而不是将文档看作仅由标题和段落组成。为了提高效

率,您可能需要定义数量一定的元素,并统一使用它们。(您可以在文档类型定义(Document Type Definition, DTD )或模式 (schema)中定义元素,稍后我将对此进行简要的描述)。一旦习惯使用 XML 之后,就可以在构建文件时尝试处理元素名称。

构建 XML

如前所述,XML 文件由内容和标记组成。您通过以标记包围内容的方式将大部分内容包含在元素中。例如,假设您需要创建一本 XML 烹饪书。您需要用 XML

编写名为 Ice Cream Sundae 的食谱。为了标记食谱名,您需要将这个文本包含到元素中,即分别在文本的首末两端添加开始和结束标记。可以将元素命名为 recipename。要标记元素的开始标记,像这样将元素名放到尖括号中(<>):。然后输入文本 Ice Cream Sundae。在文本的后面输入结束标记,即将元素名放在尖括号内,然后在元素名前面加上一个终止斜杠(/),比如:。这些标记构成一个元素,您可以在元素的内部添加内容或其他元素。

您可以为某个文档或文档集创建元素名。可以创建规则让元素根据您的特定需求组合起来。元素名可以是比较具有针对性的,也可以是比较通用的。您还可以创建决定添加何种元素的规则。这些规则可以是严格的,也可以是松散的,这完全由您决定。一定要为文档创建元素,以识别您认为重要的部分。

开始创建 XML 文件

XML 文档的第一行可以是一个 XML 声明。这是文件的可选部分,它将文件识别为 XML 文件,有助于工具和人类识别 XML(不会误认为是 SGML 或其他标记)。可以将这个声明简单地写成 ,或包含 XML 版本(

version="1.0"?>),甚至包含字符编码,比如针对 Unicode 的

version="1.0" encoding="utf-8"?>。因为这个声明必须出现在文件的开头,所以如果打算将多个小的 XML 文件合并为一个大 XML 文件,则可以忽略这个可选信息。

创建根元素

根元素的开始和结束标记用于包围 XML 文档的内容。一个文件只能有一个根元素,并且需要使用 “包装器” 包含它。清单 1 显示了经过删节的示例,其中的根元素名为 。(参见 下载 小节获得完整的 XML 文件)。

清单 1. 根元素

1

2

3

在构建文档时,内容和其他标记必须放在 之间。

命名元素

标记的大小写保持一致

创建 XML 时,要确保开始和结束标记的大小写是一致的。如果大小写不一致,在使用或查看 XML 时将出现错误。例如,如果大小写不一致,Internet Explorer

将不能显示文件的内容,但它会显示开始和结束标记不一致的消息。

到目前为止,都使用 作为根元素。在 XML 中,先要为元素选择名称,然后再根据这些名称定义相应的 DTD 或 schema。创建名称时可以使用英文字母、数字和特殊字符,比如下划线(_)。下面给出命名时需要注意的地方:

元素名中不能出现空格。

名称只能以英文字母开始,不能是数字或符号。(在第一个字母之后就可以使用字母、数字或规定的符号,或它们的混合)。

对大小写没有限制,但前后要保持一致,以免造成混乱。

我们继续以前面的示例为例,如果添加了名为 的元素,它将有一个开始标记 和相应的结束标记

清单 2. 更多元素

1

2

3 Ice Cream Sundae

4 5 minutes

5

XML 文档可以使用内部不包含任何内容的空标记,这些标记可以表示为单个标记,而不是一组开始和结束标记。以类似于 HTML 的文件为例,里面的

src=""> 是一个独立的元素。它不包含任何子元素或文本,因此它是一个空元素,您可以将它表示为 (以一个空格和熟悉的终止斜杠结束)。

嵌套元素

嵌套 即把某个元素放到其他元素的内部。这些新的元素称为子 元素,包含它们的元素称为父 元素。 根元素中嵌套有几个其他元素,如 清单 3 所示。这些嵌套的子元素包括

元素内部包含多个子元素 。XML 文档可以使用多层嵌套。

一个常见的语法错误是父元素和子元素的错误嵌套。任何子元素都要完全包含在其父元素的开始和结束标记内部。每个同胞(Sibling)元素必须在下一个同胞元素开始之前结束。

清单 3 的代码显示了正确的嵌套。这些标记的开始和结束没有与其他标记混合 在一起。

清单 3. 正确嵌套的 XML 元素

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

Ice Cream Sundae

3

chocolate syrup or chocolate fudge

1

nuts

1

cherry

5 minutes

添加属性

有时候要为元素添加属性。属性由一个名称-值对构成,值包含在双引号中("),比如:type="dessert"。属性是在使用元素时存储额外信息的一种方式。在同一个文档中,可以根据需要对每个元素的不同实例采用不同的属性值。

您可以在元素的开始标记内部输入一个或多个属性,比如:

type="dessert">。如果要添加多个属性,各个属性之间使用空格分开,比如:。清单 4 显示了当前的 XML 文件。

清单 4. 带有元素和属性的 XML 文件

1

2

3 Ice Cream Sundae5 minutes

5

您可以根据需要使用任意数量的属性。要考虑需要添加到文档的细节。如果要对文档分类,属性尤其有用,比如按照菜谱的 type 进行分类。属性名可以包含在元素名中使用的字符,规则也是类似的,即字符之间不能带有空格,名称只能以字母开始。

构造良好并且有效的 XML

如果您根据结构规则创建 XML,就很容易实现构造良好的 XML。构造良好的

XML 即遵循所有 XML 规则创建的 XML:正确的元素命名,嵌套,属性命名等等。

要实现构造良好的 XML 取决于如何处理 XML。但考虑一下前面提到的示例,它要求根据菜谱类型进行分类。您需要确保每个 元素都包含 type 属性,以对菜谱进行分类。能够正确验证并确保存在属性值是非常重要的(避免出现双关语)。

验证 就是根据元素规则检查文档的结构,以及如何为每个父元素定义子元素。这些规则是在

文档类型定义(Document Type Definition,DTD)或模式(schema )中定义的。验证要求您创建自己的 DTD 或 schema ,然后在

XML 文件中引用 DTD 或 schema 文件。

为了实现验证,必须在 XML 文档的顶部附近包含文档类型(DOCTYPE)。这行代码将引用用于验证文档的 DTD 或 schema (元素和规则列表)。例如,DOCTYPE 可能类似于 清单 5。

清单 5. DOCTYPE

1

这个例子假设元素列表文件的名称是 ,并且位于您的计算机上(如果指向公共文件位置,则 SYSTEM 和 PUBLIC 是相对的)。

使用实体

实体 可以是文本短语或特殊字符。它们可以指向内部或外部。必须正确地声明和表示实体,以避免错误和确保正确显示。

您不能直接在内容中输入特殊字符。如果要在文本中使用符号,必须使用它的字符代码将它设置为实体。您可以将短语(比如公司名)设置为实体,然后就可以在内容中使用该实体。为了设置实体,必须先为它创建一个名称,然后将它输入到内容中,以 and 符号(&)开始,并以分号(;)结束 — 例如,&coname;。

然后在 DOCTYPE 的方括号([])内部输入代码,如 清单 6 所示。这个代码识别表示实体的文本。

清单 6. ENTITY

1

3 ]>

使用实体可以避免反复输入相同的短语和信息。在很多情况下它还使得调整文本更加容易(变更公司名时),只需对实体定义进行简单调整。

避免错误

在学习创建 XML 文件时,在 XML 编辑器中打开它,以检查它的结构是否良好,并且确保您遵循 XML 规则。例如,如果您使用 Windows® Internet

Explorer®,就可以在浏览器中打开 XML。如果它能够显示 XML 元素、属性和内容,则表明 XML 是构造良好的。相反,如果显示错误,则很可能是出现语法错误,您需要小心检查文档,看看是不是丢失标记和标点符号或输入错误。

如在 嵌套元素 小节中提到的一样,包含其他元素的元素就是被包含元素的父元素。在下面的示例中, 是根元素,并且包含文件的完整内容。父元素 包含的子元素有 等等。在这种结构中, 成了同胞元素。此外,还要正确嵌套同胞 元素。清单 7 给出了构造良好并且正确嵌套的 XML。

清单 7. 构造良好的 XML

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

Ice Cream Sundae

0.5

vanilla ice cream

3

chocolate syrup or chocolate fudge1

nuts

1

cherry

1

bowl

1

18 spoons

19 1

20 ice cream scoop

21

22

23 Using ice cream scoop, place vanilla ice cream into bowl.Drizzle chocolate syrup or chocolate fudge over the ice crea25 Sprinkle nuts over the mound of chocolate and ice cream.Place cherry on top of mound with stem pointing upward.Serve.

28

29

30

31

33 5 minutes

34

注意:换行符方便您阅读代码,它不会影响 XML。

您可以在测试文件上进行实践,去掉开始和结束标记,熟悉因此显示的错误消息。

查看 XML

在 图 1 中,Internet Explorer 清晰显示了所有元素。内容包含在开始和结束标记之间。父元素旁边有小加号(+)和小减号(-),它们允许您展开或收缩嵌套在内部的所有元素(它们的后代)。

图 1. 收缩了一些同胞元素的示例 XML 实例(文件)

结束语

除了一些简单的规则之外,您可以随意设计 XML 元素和属性。XML 的规则并不难。真正困难的是 根据可分类性和可搜索性找出文档中有价值的内容,然后根据您的需要设计元素和属性。

当您有了明确的目标,并知道如何标记内容的时候,您可以构建高效的元素和属性了。从这个角度看,小心进行标记是创建构造良好并且有效的 XML 的根本条件。

本文标签: 元素标记文件内容文档