第1章 XML简介
XML是英文Extensible Markup Language 的缩写,XML作为应用程序中的一种数据传输方式在.Net框架中得到了广泛的支持。本章的主要内容:
* XML的特性;
* XML的语法规则;
* 简介XML的相关技术,如:DTD、XSLT、XPath等。
1.1 什么是XML
XML是一种标记语言,用于描述数据,它提供了一种标准化的方式来表示文本数据。XML本身对数据不能完成任何操作,必须使用一种叫做解析器(parser)的软件来处理数据。与HTML语言不同,XML的重点是如何表示数据。在XML文档中,用户可以自由地定义和使用自定义的标记。XML文档以.xml为后缀,编写XML文档时,不需要特别的软件,只需要一个文本编辑器就可以,比如记事本程序。
现在你对XML已经有一个大概的概念了,让我们来看一个简单的XML文档:
<?xml version="1.0" encoding="UTF-8"?>
<books ISBN ="9787544238212">
<title>The Book Thief</title>
<price>25</price>
<quantity>10</quantity>
</books>
通过这个XML文档的例子,我们对XML也有了一个初步的认识。XML文档的第一行是 XML 声明,定义了XML的版本和使用的字符编码。在这个例子中,XML遵守的版本是 1.0,使用的字符编码是UTF-8字符集。该XML文档有一个根元素books,books根元素下又有3个元素,分别是 title、price、quantity。每个 XML 元素都以一个起始标记(opening tag)开始 ,以一个结束标记(closing tag)收尾,比如 <title> 就是一个起始标记,</title> 就是一个结束标记。起始标记以 < 开始,以 > 结束。结束标记以 </ 开始,以 > 结束。XML元素可以带有属性,属性值要加引号,比如ISBN 就是 books 的属性,属性值为9787544238212。XML 的标记(tag)是可以自定义的,用来描述数据,比如例子中的title 元素,<title>The Book Thief</title>。
title 标记表示这个元素内的数据是书名,The Book Thief 就是一个具体书名。
你可以修改标记,比如写成
<booktitle>The Book Thief</booktitle>
由于XML的标记可以随意定义,我们可以用 XML描述和存储各种内容的数据。这里举的只是一个有关书的XML文档例子,你还可以创建其他XML文档,比如有关电影的,或者家具的,等等。也就是说,各种内容的数据,都可以通过XML描述和存储起来。XML 文档是一棵节点树。一个XML 文档只有一个根节点。在例子中,books就是根节点,books下面有子节点 title、price、quantity。
根据上面的例子,我们对XML有了一个大致的了解。总的来说,有以下几个要点。
* XML是一种可扩展的标记语言(Extensible Markup Language)。
* XML的标记(tag)没有被预定义,用户可以自行定义标记来描述数据。
* XML主要用来描述和存储数据。
* XML具有自我描述性。
* XML是树状结构的文档,是个结构化的文档。
* XML文档是个文本文件。
1.2 使用 XML 的好处
使用XML的好处如下。
* 易携带和传输。
* XML文档不依赖于特殊的软件,只要有个文本编辑器,就可以编写 XML 文档,而且是存成文本格式。一个XML文档就是一个小小的文本文件,易于携带和传输。
* 易于共享和跨平台。
* XML本身是个文本文件,而且是结构化的数据,很容易被各系统读取。
* 易于查询。
* 因为XML是树状结构,易于查询。
1.3 XML 语法
编写XML必须遵循一些简单的语法规则,主要列举如下。
* 每个开始标记必须有结束标记。
* 一个XML文档只能有一个根元素。
* 所有XML元素必须正确嵌套。
* 属性值必须加引号。
* 一个元素不能有相同的属性。
1.3.1 XML标记、元素和属性
在解释上面的语法规则之前,我们先解释一些XML最常用的术语。
* 标记(开始标记,结束标记)
在上面的XML文档中,我们看到有很多这样的相同特征的字符串,<title>、<price>、<quantity>、</books> 等。它们都是由小于号< 开始,由大于号>结束的,在XML文档里,我们将其称为XML标记。标记又有开始标记和结束标记之分。开始标记由<开始,由>结束,比如:<title>、<price>、<quantity>。结束标记由 </开始,由>结束,比如:</title>、</price>、</quantity>。
* 元素
XML元素是指从一个开始标记到它的结束标记的一段内容。比如:<title>The book thief</title> 就是一个元素。元素是XML文档的基本单位,一个XML文档可以由一个或者多个元素构成。
* 属性(attribute)
一个元素可以带有属性,属性写在开始标记里,写在元素名称的后面。比如<books ISBN ="9787544238212">,其中 ISBN ="9787544238212" 就是 books 元素的一个属性,ISBN是属性的名称,9787544238212 是属性值,属性值必须加引号。
1.3.2 XML的语法规则
接下来我们逐个解释XML文档的语法规则。
每个开始标记必须有结束标记,比如上面的例子中,开始标记 <price> 必须有相应的结束标记</price>。一个XML文档只能有一个根元素,XML文档是树状结构的,像一棵节点树。比如上面例子中,books就是根元素,而title、price、quantity则是 books的子 节点。
如果写成下面这样,一个文档有两个 books 根元素,就出错了。
<?xml version="1.0" encoding="UTF-8"?>
<books ISBN ="9787544238212">
<title>偷书贼</title>
<price>25</price>
<quantity>10</quantity>
</books>
<books ISBN ="978758225">
<title>香水</title>
<price>100</price>
<quantity>12</quantity>
</books>
所有XML元素必须正确嵌套。
正确的嵌套:
<books><title>香水</title></books>
错误的嵌套:
<books><title>香水</books></title>
属性值必须加引号。
一个XML元素可以带有属性(attribute),属性写在开始标记里,写在元素名称的后面。比如<books ISBN ="9787544238212">,其中ISBN ="9787544238212"就是 books元素的一个属性,ISBN是属性的名称,9787544238212是属性值,属性值必须加引号。一个元素不能有相同的属性,下面的写法是错误的:
<books ISBN ="9787544238212" ISBN ="97875442dr">
因为一个XML元素不能有两个相同的属性名称,虽然属性值不同。
不过,如果你将ISBN小写,写成如下:
<books ISBN ="9787544238212" isbn ="97875442dr">
就是对的。因为XML文档是区分大小写的。ISBN 和isbn表示两个不同的属性。
XML元素是XML文档的基本单位。一个XML文档由一个或者多个XML元素构成。比如<site>woyouxian.net</site> 就是一个XML元素,也可以是一个最简单的XML文档。一个XML元素从一个起始标记开始,到对应的结束标记结束。在起始标记和结束标记之间的内容,我们称为XML元素的内容。比如woyouxian.net 就是元素<site>woyouxian.net </site>的内容。
如果一个XML元素没有内容,比如<site></site>我们称其为空元素。
空元素有一种特殊的写法,以<开始,然后是元素名称,最后以/>结束。比如,<site /> 。XML文档是区分大小写的,比如<SITE>和<site>就表示两个不同的元素。这一点在编写XML文档时要非常注意。XML文档是树状结构的,它只有一个根元素,其他元素都是根元素的后代。比如下面的例子:
……