第22章可扩展标记语言(XML 第22章可扩展标记语言(XML 可扩展标记语言( Extensible Markup Language,XML是万维网协会(W3C)推荐的一个开 放标准,它是构造Web上的文档和数据的通用格式。XML有着越来越广泛的应用前景。它 的应用范围包括数据库系统、搜索引擎、数据编辑器、文档编辑器、Web网页、电子商务 Java新闻、公共对象请求代理体系结构( Common Object Request Broker Architecture, CORBA) 等 XML是一大技术系列,除了XML本身之外还涉及很多技术规范,例如, CSS( cascading style sheets):级联样式语言 XSL( Extensible Stylesheet Language):可扩展样式语言 XSLT( XSL Transformation):可扩展的样式语言转换语言。 DID( Document Type Definition):文档类型定义。 XML Schemas:XML模板语言 DOM( Document Object Model):文档对象模型 ⅪLink( XML Linking Language:XML链接语言。 XPointer( XML Pointer Language):XML指针语言。 XPath( XML Path Language):XML路径语言。 WAP( Wireless Application Protocol):无线应用协议。 SOAP( Simple Object Access Protocol):简单对象存取协议。 WSDL( Web Services Description Language):Web服务描述语言 本章主要介绍XML的基本概念,目的是为进一步学习、应用和开发Web标准打基础 由于标准文件写得很精炼,读懂它需要时间和比较广泛的知识,仅有本章介绍的知识离理解 标准还很不够,因此在本章的最后列出了很多非常优秀的参考文献和站点,[7~[12尤其适 合初学者。在本章介绍的例子中,许多例子都没有使用中文,一方面是笔者用的计算机没有 安装更新的应用软件,另一方面是有些执行规范的软件暂时还不支持中文 221XML是什么 221.1XML不是标记语言 标记( markup)是组织和标注文档内容的一套字符集,是写在待排版原稿上的详细的格式 说明。用作标记的标签(tag)用于标记元素、实体引用、声明、注释、处理指令和段落的开始 与结束。标记语言( markup language是用于表示和组织数据的一套规则,用标签来编写文本 的一种符号。标签用来表示文本的结构,标签有名称和属性,标签还可包含部分的文本。标 记语言提供许多构造文档的方法,如使用元素对文档的局部作标记、使用文档类型定义(DTD) 来强制文档的结构以及使用实体引用来输入数据 XML名为标记语言,但它本身不是标记语言,而是用于创建标记语言的一套规则,是 一种元语言。所谓元语言是用来描述另一种语言的语言。例如,我们用名词、动词、副词和 形容词等来描述自然语言中句子的结构,因此这些词是用于描述一种语言的语言。XML定 义的是各种标签以及它们之间关系的一套规则,用来描述数据(或称信息),定义数据是什么 样的数据。因此从这个意义上说,XML是用来定义另一种语言的元语言,是一种构造语言 和分析语言的语言 XML使用与HIML类似的标签结构。它们之间主要差别是,HTML定义如何显示文档 元素,而XML定义包含什么文档元素:HIML使用预先定义的标签,而XML允许网页开 发人员定义自己的标签 把XML看成标记语言是一种误解,认为XML要取代HIML也是一种误解。实际上 HIML已经在努力用XML格式重写,重写后的HIML认为是下一代的标记语言,叫做 XHTML(可扩展超文本标记语言)。也许XML不会用来创作未来的网页,但 XHTML将肩负 这个重任 221.2XML文档什么样
第 22 章 可扩展标记语言(XML) 1 第 22 章 可扩展标记语言(XML) 可扩展标记语言(Extensible Markup Language,XML)是万维网协会(W3C)推荐的一个开 放标准,它是构造 Web 上的文档和数据的通用格式。XML 有着越来越广泛的应用前景。它 的应用范围包括数据库系统、搜索引擎、数据编辑器、文档编辑器、Web 网页、电子商务、 Java、新闻、公共对象请求代理体系结构(Common Object Request Broker Architecture,CORBA) 等。 XML 是一大技术系列,除了 XML 本身之外还涉及很多技术规范,例如, CSS (cascading style sheets):级联样式语言。 XSL (Extensible Stylesheet Language):可扩展样式语言。 XSLT (XSL Transformation):可扩展的样式语言转换语言。 DTD (Document Type Definition):文档类型定义。 XML Schemas:XML 模板语言。 DOM (Document Object Model):文档对象模型。 XLink (XML Linking Language):XML 链接语言。 XPointer (XML Pointer Language): XML 指针语言。 XPath (XML Path Language):XML 路径语言。 WAP (Wireless Application Protocol):无线应用协议。 SOAP (Simple Object Access Protocol):简单对象存取协议。 WSDL (Web Services Description Language):Web 服务描述语言。 本章主要介绍 XML 的基本概念,目的是为进一步学习、应用和开发 Web 标准打基础。 由于标准文件写得很精炼,读懂它需要时间和比较广泛的知识,仅有本章介绍的知识离理解 标准还很不够,因此在本章的最后列出了很多非常优秀的参考文献和站点,[7]~[12]尤其适 合初学者。在本章介绍的例子中,许多例子都没有使用中文,一方面是笔者用的计算机没有 安装更新的应用软件,另一方面是有些执行规范的软件暂时还不支持中文。 22.1 XML 是什么 22.1.1 XML 不是标记语言 标记(markup)是组织和标注文档内容的一套字符集,是写在待排版原稿上的详细的格式 说明。用作标记的标签(tag)用于标记元素、实体引用、声明、注释、处理指令和段落的开始 与结束。标记语言(markup language)是用于表示和组织数据的一套规则,用标签来编写文本 的一种符号。标签用来表示文本的结构,标签有名称和属性,标签还可包含部分的文本。标 记语言提供许多构造文档的方法,如使用元素对文档的局部作标记、使用文档类型定义(DTD) 来强制文档的结构以及使用实体引用来输入数据。 XML 名为标记语言,但它本身不是标记语言,而是用于创建标记语言的一套规则,是 一种元语言。所谓元语言是用来描述另一种语言的语言。例如,我们用名词、动词、副词和 形容词等来描述自然语言中句子的结构,因此这些词是用于描述一种语言的语言。XML 定 义的是各种标签以及它们之间关系的一套规则,用来描述数据(或称信息),定义数据是什么 样的数据。因此从这个意义上说,XML 是用来定义另一种语言的元语言,是一种构造语言 和分析语言的语言。 XML 使用与 HTML 类似的标签结构。它们之间主要差别是,HTML 定义如何显示文档 元素,而 XML 定义包含什么文档元素;HTML 使用预先定义的标签,而 XML 允许网页开 发人员定义自己的标签。 把 XML 看成标记语言是一种误解,认为 XML 要取代 HTML 也是一种误解。实际上, HTML 已经在努力用 XML 格式重写,重写后的 HTML 认为是下一代的标记语言,叫做 XHTML(可扩展超文本标记语言)。也许 XML 不会用来创作未来的网页,但 XHTML 将肩负 这个重任。 22.1.2 XML 文档什么样
第22章可扩展标记语言(XML) 认识XML文档并不难,首先让我们看一个简单的例子。 【例22.1】一个简单的XML文档 1: 2: Student 5: Teacher 6: lntroduction to XML 7: body>Welcome to XML! 在这个例子中,XML文档由下面三个部分组成: (1)XML声明(第1行):说明使用的XML版本号。这是XML文档最先要声明的。 (2)文档注释(第2行):说明该文档是“一个简单的XML文档” (3)文档元素(第3~8行):这些是XML文档的基本的构造块。其中,)和包含在尖括号里的 含有意义的文字组成,因此它是一种有语义的标签。一个XML元素由开始标签、结束标签 和它们之间的数据组成。开始标签和结束标签用来描述它们之间的数据,并把数据作为这个 元素的值。例如,一个名为 doctor的XML元素, Jiamin Lis/doctor 其中,“ Jiamin li”是XML数据,也称 doctor元素的值。是开始标签,而 是结束标签 给元素赋予有含义的名称是值得重视的事情,这样就容易区别数据相同而标签不同的元 素。在我们的日常生活中,也有许多类似的情况。例如,有一个教师的姓名也叫做“ Jianmin Li”,我们就可以用标签来表示, teacher> Jiamin Lis/teacher> 这样就从语义上给具有相同姓名的人做了标记,一个是“ doctor”,另一个是“ teacher” 在XML标签内,字母的大小写是有区别的。例如, , , 是三个不同的标签 ML元素可以嵌入到其他的元素中。例如 slide> My Name My topic> 其中, slideshow元素包含两个 slide元素。 2222XML元素的命名规则 XML元素的名称必需遵照如下的命名规则: (1)名称可以包含字母、数字和其他字符。 (2)名称不能用数字或标点符号开始。 (3)名称不能用xm,XML或Xml文字开始 (4)名称不能包含空格 在对XML元素命名时,还须要注意 (1)可以使用任何名称,没有保留字。但希望起的名称要有一定的含义,与说明的内容 比较贴近:多个词组成的名称最好用下划线“”隔开,如,,避 免使用“一”和
第 22 章 可扩展标记语言(XML) 2 认识 XML 文档并不难,首先让我们看一个简单的例子。 【例 22.1】 一个简单的 XML 文档: 1: 2: 3: 4: Student 5: Teacher 6: Introduction to XML 7: Welcome to XML! 8: 在这个例子中,XML 文档由下面三个部分组成: ⑴ XML 声明(第 1 行):说明使用的 XML 版本号。这是 XML 文档最先要声明的。 ⑵ 文档注释(第 2 行):说明该文档是“一个简单的 XML 文档” ⑶ 文档元素(第 3~8 行):这些是 XML 文档的基本的构造块。其中,… 是“大”元素,message 元素中还包含像 to, form, subject 和 body 这样的“小元 素”。 22.2 XML 元素 22.2.1 什么是 XML 元素 XML 元素是由一对标签界定的一个数据单位。标签由尖括号()和包含在尖括号里的 含有意义的文字组成,因此它是一种有语义的标签。一个 XML 元素由开始标签、结束标签 和它们之间的数据组成。开始标签和结束标签用来描述它们之间的数据,并把数据作为这个 元素的值。例如,一个名为 doctor 的 XML 元素, Jiamin Li 其中,“Jiamin Li”是 XML 数据,也称 doctor 元素的值。是开始标签,而 是结束标签。 给元素赋予有含义的名称是值得重视的事情,这样就容易区别数据相同而标签不同的元 素。在我们的日常生活中,也有许多类似的情况。例如,有一个教师的姓名也叫做“Jianmin Li”,我们就可以用标签来表示, Jiamin Li 这样就从语义上给具有相同姓名的人做了标记,一个是“doctor”,另一个是“teacher”。 在 XML 标签内,字母的大小写是有区别的。例如, ,, 是三个不同的标签。 XML 元素可以嵌入到其他的元素中。例如, My Name My topic 其中,slideshow 元素包含两个 slide 元素。 22.2.2 XML 元素的命名规则 XML 元素的名称必需遵照如下的命名规则: ⑴ 名称可以包含字母、数字和其他字符。 ⑵ 名称不能用数字或标点符号开始。 ⑶ 名称不能用 xml,XML 或 Xml 文字开始。 ⑷ 名称不能包含空格。 在对 XML 元素命名时,还须要注意: ⑴ 可以使用任何名称,没有保留字。但希望起的名称要有一定的含义,与说明的内容 比较贴近;多个词组成的名称最好用下划线“_”隔开,如,,避 免使用“-”和
第22章可扩展标记语言(XML) (2)名称的长度没有具体限制,但希望赋予的名称短一点,简单一点,不要太长。例如 书(book)元素名称使用,而不使用 (3)XML元素的名称允许非英文字符,但需要注意应用软件是否支持非英文字符集。 (4)冒号“:”是保留符号,在XML元素名称中不允许使用。 2223XML元素的特性 XML元素具有可扩展性、父子关系、一个元素可包含不同内容和一个元素可包含不同 属性等四种特性 1.可扩展性 XML元素可以扩展,使ⅩML文档包含更多的信息。 【例22.2】一个 XML note文档为, Lin Dont forget me this weekend! 在这个文档中,可把日期信息(如2002-07-15)添加进去,如下所示, 2002-07-15 Lin Reminder Don't forget me this weekend! 2.父子关系 XML元素具有“父子”关系。为便于理解XML元素之间的关系,先举例说明XML元 素如何命名和描述元素的内容。 【例22.3】用ⅹML描述一本书的前两章: Book Title: Multimedia fundamentals Chapter 1: Introduction to Multimedia What is multimedia What is Web Chapter What is Color Space Color Space Conversion 用XML描述这本书时,其文档如下所示 Multimedia Fundamentals Introduction to Multimedia What is Multimedia What is Web Color Space para> What is Color Space Color Space Conversion 其中,book是根元素。t,prod和 chapter都是book元素的子元素,bok是tle,prod和 chapter的父元素。 title,prod和 chapter是姐妹元素,因为它们的父母亲是相同的
第 22 章 可扩展标记语言(XML) 3 ⑵ 名称的长度没有具体限制,但希望赋予的名称短一点,简单一点,不要太长。例如, 书(book)元素名称使用,而不使用。 ⑶ XML 元素的名称允许非英文字符,但需要注意应用软件是否支持非英文字符集。 ⑷ 冒号“:”是保留符号,在 XML 元素名称中不允许使用。 22.2.3 XML 元素的特性 XML 元素具有可扩展性、父子关系、一个元素可包含不同内容和一个元素可包含不同 属性等四种特性。 1. 可扩展性 XML 元素可以扩展,使 XML 文档包含更多的信息。 【例 22.2】 一个 XML note 文档为, Lucy Lin Don't forget me this weekend! 在这个文档中,可把日期信息(如2002-07-15)添加进去,如下所示, 2002-07-15 Lucy Lin Reminder Don't forget me this weekend! 2. 父子关系 XML 元素具有“父子”关系。为便于理解 XML 元素之间的关系,先举例说明 XML 元 素如何命名和描述元素的内容。 【例 22.3】 用 XML 描述一本书的前两章: Book Title: Multimedia Fundamentals Chapter 1: Introduction to Multimedia What is Multimedia What is Web Chapter 2: Color Space What is Color Space Color Space Conversion 用 XML 描述这本书时,其文档如下所示: Multimedia Fundamentals Introduction to Multimedia What is Multimedia What is Web Color Space What is Color Space Color Space Conversion 其中,book 是根元素。title, prod 和 chapter 都是 book 元素的子元素,book 是 title, prod 和 chapter 的父元素。title, prod 和 chapter 是姐妹元素,因为它们的父母亲是相同的
可扩展标记语言(XM 3.一个元素可包含不同内容 个XML元素可以有不同类型的内容。其内容可以是元素内容、混合内容、简单内容 复杂内容或无内容。例如,例22.3中的book元素含有元素内容,因为它包含其他元素; chapter 元素含有混合内容,因为它包含文本和其他元素:para含有简单内容,因为它仅包含文字 prod包含的内容是空的,因为ibn和meda是元素的属性,不是元素的内容 4.一个元素可包含不同属性 两种不类组的运,且有位秀图然为:0:72素为m 的属性值为 paper22.4节将对属性作更多的介绍 2224XML元素的属性 属性是ⅹML标签的一个修饰词,用来提供元素的附加信息。属性用属性名、等号和属 性值表示。例如,标签的属性 属性名 "属性值”-> XML元素的属性有如下几个特性 1.属性只能指定一次 例如,个ⅪML元素可包含一个或多个属性,但每个属性值只能指定一次,其次序不分先后。 ,一个side元素如下所示 在这个标签中, title=" XML Tutorial"是属性。其中, title是属性名, XML Tutorial是属 性值。在一个文档中, title的属性值只能是" XML Tutorial"。 2.属性不是元素数据 个元素的属性不是元素数据的一部分,而是说明数据的。例如, Ronaldo. jpg 在这个XML元素中,标签中的type属性是与 Ronaldo. jpg数据无关的,但对处理这个 元素的软件来说是重要的 3.属性值要用引号 属性值必需要用引号表示。表示属性值的引号可以是单引号,也可以是双引号。例如, 一个人的性别标签可以写成 或者 person sex=" female"> ≤ person sex= female> 最常用的是双引号,但有时(如属性值本身包含引号的情况下)必需使用单引号 4.属性可存放数据 XML元素的数据可以存储在子元素中,也可存储在属性中 【例22.4-1】假设 female是数据,它可存储在属性中。 Lucy Zhao 【例22.4-2】假设 female是数据,它可存储在子元素中 female Lucy Zhao</last n 例22.4-1和例224-2都提供相同的信息。至于什么时候使用属性存储数据,什么时候 使用子元素存储数据,还没有看到有规则可循。如果感到信息像一种数据(如罗纳尔多助巴
第 22 章 可扩展标记语言(XML) 4 3. 一个元素可包含不同内容 一个 XML 元素可以有不同类型的内容。其内容可以是元素内容、混合内容、简单内容 复杂内容或无内容。例如,例 22.3 中的 book 元素含有元素内容,因为它包含其他元素;chapter 元素含有混合内容,因为它包含文本和其他元素;para 含有简单内容,因为它仅包含文字; prod 包含的内容是空的,因为 isbn 和 media 是元素的属性,不是元素的内容。 4. 一个元素可包含不同属性 一个 XML 元素可以包含不同类型的属性。例如,例 22.3 中的 prod 元素有 isbn 和 media 两种不同类型的属性,而且都有值。属性名为 isbn 的属性值为 7-302-03933,属性名为 media 的属性值为 paper。22.2.4 节将对属性作更多的介绍。 22.2.4 XML 元素的属性 属性是 XML 标签的一个修饰词,用来提供元素的附加信息。属性用属性名、等号和属 性值表示。例如,标签的属性, XML 元素的属性有如下几个特性。 1. 属性只能指定一次 一个 XML 元素可包含一个或多个属性,但每个属性值只能指定一次,其次序不分先后。 例如,一个 slide 元素如下所示, 在这个标签中,title="XML Tutorial"是属性。其中,title 是属性名,XML Tutorial 是属 性值。在一个文档中,title 的属性值只能是"XML Tutorial"。 2. 属性不是元素数据 一个元素的属性不是元素数据的一部分,而是说明数据的。例如, Ronaldo.jpg 在这个 XML 元素中,标签中的 type 属性是与 Ronaldo.jpg 数据无关的,但对处理这个 元素的软件来说是重要的。 3. 属性值要用引号 属性值必需要用引号表示。表示属性值的引号可以是单引号,也可以是双引号。例如, 一个人的性别标签可以写成, 或者 最常用的是双引号,但有时(如属性值本身包含引号的情况下)必需使用单引号。 4. 属性可存放数据 XML 元素的数据可以存储在子元素中,也可存储在属性中。 【例 22.4-1】 假设 female 是数据,它可存储在属性中。 Lucy Zhao 【例 22.4-2】 假设 female 是数据,它可存储在子元素中。 female Lucy Zhao 例 22.4-1 和例 22.4-2 都提供相同的信息。至于什么时候使用属性存储数据,什么时候 使用子元素存储数据,还没有看到有规则可循。如果感到信息像一种数据(如罗纳尔多助巴
第22章可扩展标记语言(XML) 西第五次捧世界杯),则通常使用子元素。仅当提供的信息与数据无关的情况下,才考虑用 属性。这是因为属性不能包含多个值,而子元素则可以;属性不能描述结构,而子元素则可 以:处理程序处理属性相对于处理子元素比较困难等因素。总而言之,关于数据的数据,称 为元数据( metadata),应该存储在属性中,而数据本身则应该存储在子元素中。 223XML文档和语法 223.1XML文档的基本结构 个基本的XML文档就是一个XML元素,其嵌套XML元素可有可无。XML文档使 用文档类型定义(DID)或者XML模式( XML Schema)来描述数据。使用DID或者XML Schema的XML文档叫做自描述文档,XML文档的文件扩展名用xml表示 【例22.5】下面是一个使用自描述的XML文档: 1: 2: 3: Lucy 4: Lin 5: Reminder 6: Don't forget me this weekend! 7: 第1行是XML声明( XML declaration), ?xml version="1.0"encoding="ISO-8859-1"2> 用来说明ⅹML的版本号和在文档中使用的字符编码。在这个XML文档中,说明该文档使 用XML1.0规范和ISO-859-1(拉丁文-1/西欧)字符集 第2行描述文档的根元素( root element) 其含义为“这是一个备忘录”。 第3~6行描述根元素(note)的4个子元素( child element为to(送给)、from(来自) heading(标题)和body(主体) Lucy Lind/from> Reminder Don't forget me this weekend! 223.2XML语法 XML文档是一个自描述的文档。通过分析例22.5,我们可以看到XML的一些基本语 法规则。 (1)在XML文档中,所有XML元素必需要使用一个开始标签(或称打开标签)和一个结 束标签(或称关闭标签)。在本教材中,这一对标签称为开闭标签。例如, p>这是一个段 p>这是另外一段 而在HIML文档中,不一定要使用开闭标签。例如, p>这是一个段 p>这是另外一段 注意:在例22.5中,第一行的ⅹML声明没有使用开闭标签,即 这是因为XML声明不是XML元素,它不是XML文档本身的一部分,因此不应该有开闭 标签 (2)在XML文档中,XML标签区分字母的大小。例如, Message和 message是不同的, 因此 Message>标签和标签是两个不同的标签
第 22 章 可扩展标记语言(XML) 5 西第五次捧世界杯),则通常使用子元素。仅当提供的信息与数据无关的情况下,才考虑用 属性。这是因为属性不能包含多个值,而子元素则可以;属性不能描述结构,而子元素则可 以;处理程序处理属性相对于处理子元素比较困难等因素。总而言之,关于数据的数据,称 为元数据(metadata),应该存储在属性中,而数据本身则应该存储在子元素中。 22.3 XML 文档和语法 22.3.1 XML 文档的基本结构 一个基本的 XML 文档就是一个 XML 元素,其嵌套 XML 元素可有可无。XML 文档使 用文档类型定义(DTD)或者 XML 模式(XML Schema)来描述数据。使用 DTD 或者 XML Schema 的 XML 文档叫做自描述文档,XML 文档的文件扩展名用.xml 表示。 【例 22.5】 下面是一个使用自描述的 XML 文档: 1: 2: 3: Lucy 4: Lin 5: Reminder 6: Don't forget me this weekend! 7: 第 1 行是 XML 声明(XML declaration), 用来说明 XML 的版本号和在文档中使用的字符编码。在这个 XML 文档中,说明该文档使 用 XML 1.0 规范和 ISO-8859-1(拉丁文-1/西欧)字符集。 第 2 行描述文档的根元素(root element), 其含义为“这是一个备忘录”。 第 3~6 行描述根元素(note)的 4 个子元素(child element)为 to(送给)、from(来自)、 heading(标题)和 body(主体), Lucy Lin Reminder Don't forget me this weekend! 第 7 行表示根元素结束, 22.3.2 XML 语法 XML 文档是一个自描述的文档。通过分析例 22.5,我们可以看到 XML 的一些基本语 法规则。 ⑴ 在 XML 文档中,所有 XML 元素必需要使用一个开始标签(或称打开标签)和一个结 束标签(或称关闭标签)。在本教材中,这一对标签称为开闭标签。例如, 这是一个段 这是另外一段 而在 HTML 文档中,不一定要使用开闭标签。例如, 这是一个段 这是另外一段 注意:在例 22.5 中,第一行的 XML 声明没有使用开闭标签,即 这是因为 XML 声明不是 XML 元素,它不是 XML 文档本身的一部分,因此不应该有开闭 标签。 ⑵ 在 XML 文档中,XML 标签区分字母的大小。例如,Message 和 message 是不同的, 因此标签和标签是两个不同的标签
第22章可扩展标记语言(XML) (3)在XML文档中,开始标签和结束标签必需是相同的。如果开标签使用。例如 这是错误的标签对这段用加粗的宋体这段用加粗的宋体 .. (6)在XML文档中,XML元素可以有属性值,但必需使用双引号(""),就像HML中 的文档一样。例如, date是note的属性,属性值为"7/7/2002"。 (7)在XML文档中,空格是保留的 8)在ⅩML文档中,CR/LF字符只存储LF字符。在过去,新行字符包括回车( carriage return,CR)和换行( line feed,LF)两个字符。在 Windows环境下,文本中的新行字符存储CR 和LF两个字符;在UNⅨX环境下,文本中的新行字符只存储LF字符。 (9)在XML文档中,使用与HML文档中类似的注释。例如 注释行的开始部分由4个字符组成:。在它们之间 可以包含任何种类的文字 224XML文档类型 XML10规范指定了两种类型的文档,一种叫做合格XML文档( Well-Formed XML document),另一种叫做有效XML文档( Valid xml document)。 2241什么是合格XML文档 个严格遵照ⅩML语法规则构造的文档叫做合格ⅩML文档。XML语法规则在2.3.2 中作了介绍,详细的规则可在万维网协会(W3C推荐的XML1.0标准中找到[] 下面所示的文档是一个合格XML文档 Lucy Lin Reminder Don't forget me this weekend HIML的规则比较松散,这就迫使Web浏览器要补充许多丢失的说明。XML则很严谨, 个合格XML文档必需符合下列XML文档结构规则 (1)每个元素必需有开始标签和结束标签 (2)文档必需有一个包含所有其他元素的根元素。 (3)标签必需正确嵌套。 个合格XML文档不要求一定要用文档类型定义(DID或XML模式( XML Schema)
第 22 章 可扩展标记语言(XML) 6 ⑶ 在 XML 文档中,开始标签和结束标签必需是相同的。如果开标签使用, 则闭标签也要使用。例如, 这是错误的标签对 这是正确的标签对 ⑷ 在 XML 文档中,所有 XML 元素必需正确嵌套。例如, 这段用加粗的宋体 而在 HTML 文档中,HTML 元素没有正确嵌套也未尝不可。例如, 这段用加粗的宋体 ⑸ 在 XML 文档中,第一个标签和最后一个标签叫做根标签(root tag)。所有 XML 文档 必需要有一对开闭根标签,其他的元素必需嵌套在这对根标签内。 ..... ⑹ 在 XML 文档中,XML 元素可以有属性值,但必需使用双引号(" "),就像 HTML 中 的文档一样。例如, …… date 是 note 的属性,属性值为"7/7/2002"。 ⑺ 在 XML 文档中,空格是保留的。 ⑻ 在 XML 文档中,CR / LF 字符只存储 LF 字符。在过去,新行字符包括回车(carriage return, CR)和换行(line feed,LF)两个字符。在 Windows 环境下,文本中的新行字符存储 CR 和 LF 两个字符;在 UNIX 环境下,文本中的新行字符只存储 LF 字符。 ⑼ 在 XML 文档中,使用与 HTML 文档中类似的注释。例如, 注释行的开始部分由 4 个字符组成:。在它们之间 可以包含任何种类的文字。 22.4 XML 文档类型 XML.10 规范指定了两种类型的文档,一种叫做合格 XML 文档(Well-Formed XML document),另一种叫做有效 XML 文档(Valid XML document)。 22.4.1 什么是合格 XML 文档 一个严格遵照 XML 语法规则构造的文档叫做合格 XML 文档。XML 语法规则在 22.3.2 中作了介绍,详细的规则可在万维网协会(W3C)推荐的 XML 1.0 标准中找到[1]。 下面所示的文档是一个合格 XML 文档。 Lucy Lin Reminder Don't forget me this weekend! HTML 的规则比较松散,这就迫使 Web 浏览器要补充许多丢失的说明。XML 则很严谨, 一个合格 XML 文档必需符合下列 XML 文档结构规则: ⑴ 每个元素必需有开始标签和结束标签。 ⑵ 文档必需有一个包含所有其他元素的根元素。 ⑶ 标签必需正确嵌套。 一个合格 XML 文档不要求一定要用文档类型定义(DTD)或 XML 模式(XML schema)
第22章可扩展标记语言(XML) 它们将分别在227和229中介绍。由于合格XML文档不需要附加的DTD,因此它比较容 易创建,在网上传输时也不需要下载DTD文件 224,2什么是有效XML文档 有效XML文档(“ Valid” XML document)是遵照XML语法规则和文档类型定义①DTD) 规则构造的一种文档。有效XML文档是一种合格XML文档。 【例22.6】一个遵照XML和DTD规则编写的有效文档如下 lucy Lin Reminder 其中, DOCTYPE是 Document Type Declaration的简写,不同于DID。一个序言( prolog) 通常包含一个这种形式的语句: 其中,foo叫做占位符,在实际的语句中用真实的名称 225XML与Web浏览器 225.1 XML Web浏览器 最近几年大家用得比较多的 Internet Explorer5.0(E50)以上版本和 Netscape Navigator 60以上版本都支持XML1.0和 XML DOM标准。以IE50为例,它可支持的功能包括: (1)显示XML文档 (2)支持W3CDID标准 (3)作为数据岛嵌入在HIML中的XML文档。 (4)把XML数据捆绑到HIML元素 (5)用XSL转换和显示XML文档(见26) (6)用CSS显示XML文档(见226) (7)访问 XML DOM见2266) 此外,挪威 Opera浏览器是 Norwegian Opera Software公司开发的一种Web浏览器3], 是继 Netscape Navigator和 Internet Explorer之后的浏览器。它一直在扩展对W3C标准的支 持能力。 Opera因其速度快、软件小巧和对标准的兼容性好而得到终端用户和出版工业界的 广泛赞扬 2252XML文档显示 Internet Explorer5.0以上版本可以显示原始XML文档。如果要像 HTML格式那样显示 KML文档中的数据,则需要用其他代码(如 JavaScript))输入XML文档的数据才能显示 1.在浏览器中显示XML文档 在浏览器中显示XML文档,只要在它的地址栏中输入文档的URL就可以。如果XML 文档在本机上,点击XML文档名就可以调用浏览器来显示。 【例22.7-1】将下面的XML文档 Lucy Lin Reminder Don't forget me this weekend! </body
第 22 章 可扩展标记语言(XML) 7 它们将分别在 22.7 和 22.9 中介绍。由于合格 XML 文档不需要附加的 DTD,因此它比较容 易创建,在网上传输时也不需要下载 DTD 文件。 22.4.2 什么是有效 XML 文档 有效 XML 文档(“Valid”XML document)是遵照 XML 语法规则和文档类型定义(DTD) 规则构造的一种文档。有效 XML 文档是一种合格 XML 文档。 【例 22.6】 一个遵照 XML 和 DTD 规则编写的有效文档如下, Lucy Lin Reminder Don't forget me this weekend! 其中,DOCTYPE 是 Document Type Declaration 的简写,不同于 DTD。一个序言(prolog) 通常包含一个这种形式的语句: 其中,foo 叫做占位符,在实际的语句中用真实的名称。 22.5 XML 与 Web 浏览器 22.5.1 XML Web 浏览器 最近几年大家用得比较多的 Internet Explorer 5.0 (IE 5.0)以上版本和 Netscape Navigator 6.0 以上版本都支持 XML 1.0 和 XMLDOM 标准。以 IE 5.0 为例,它可支持的功能包括: ⑴ 显示 XML 文档。 ⑵ 支持 W3C DTD 标准。 ⑶ 作为数据岛嵌入在 HTML 中的 XML 文档。 ⑷ 把 XML 数据捆绑到 HTML 元素。 ⑸ 用 XSL 转换和显示 XML 文档(见 22.6)。 ⑹ 用 CSS 显示 XML 文档(见 22.6)。 ⑺ 访问 XML DOM(见 22.6.6)。 此外,挪威 Opera 浏览器是 Norwegian Opera Software 公司开发的一种 Web 浏览器[3], 是继 Netscape Navigator 和 Internet Explorer 之后的浏览器。它一直在扩展对 W3C 标准的支 持能力。Opera 因其速度快、软件小巧和对标准的兼容性好而得到终端用户和出版工业界的 广泛赞扬。 22.5.2 XML 文档显示 Internet Explorer 5.0 以上版本可以显示原始 XML 文档。如果要像 HTML 格式那样显示 XML 文档中的数据,则需要用其他代码(如 JavaScript)输入 XML 文档的数据才能显示。 1. 在浏览器中显示 XML 文档 在浏览器中显示 XML 文档,只要在它的地址栏中输入文档的 URL 就可以。如果 XML 文档在本机上,点击 XML 文档名就可以调用浏览器来显示。 【例 22.7-1】 将下面的 XML 文档 Lucy Lin Reminder Don't forget me this weekend!
第22章可扩展标记语言(XML) 保存到 C: \temp目录下,文件名用 note.xml。因笔者的计算机上安装的浏览器是IE60,用 IE60显示时,显示的样式如图22-1(a)所示 1.0"encoding="IS08859-1"?> >LucyReminder ody>Don't Forge minders/header (a)IE60浏览器上显示的 note. xml(b)记事本器上显示的 note. xm 图22-1原始XML文档的显示 在图22-(a)中,根元素和子元素的标签都用颜色作标记。左边有一个减号(-),点 击它就隐藏标签note元素内的代码,而减号也就会变成加号(+)。如果要查看原始XML文 档的源文件,则需要点击IE浏览器上的“查看(V)”,然后点击下跌选单上的“源文件O”, 调出文件编辑器(如记事本)就可看到原始XML文档的源文件,如图22-1(b)所示 2.用 JavaScript显示XML文档数据 要在当前的Web浏览器上显示XML文档的数据,可用 JavaScript从XML文档中输入 数据。 【例22.7-2】用 Javascript输入XML文档数据的HML文档如下 script language="JavaScript for="window event="onload"> var xmlDoc= new ActiveXObject("Microsoft XMLDOM") xml Doc. async="false xml Doc. load ("note. xml") nodes= xmlDoc documentElement childNodes to inner Text=nodes. item(0).text from inner Text=nodes. item (1).text header. inner Text=nodes. item(2 ).text body inner Text =nodes. item (3) Displaying XML data inside hTml page hI align=" center"试用Web浏览器显示ⅩML文档 (2002年7月10日)收件人:发件人: 主标题:p p>内容:span> 将这个文档存储到将这个文档存储到 C: temp目录下,使用的文件名为 note htm。用IE6.0 显示时,显示的样式如图22-2所示
第 22 章 可扩展标记语言(XML) 8 保存到 C:\temp 目录下,文件名用 note.xml。因笔者的计算机上安装的浏览器是 IE 6.0,用 IE 6.0 显示时,显示的样式如图 22-1(a)所示。 (a) IE 6.0 浏览器上显示的 note.xml (b) 记事本器上显示的 note.xml 图 22-1 原始 XML 文档的显示 在图 22-1(a)中,根元素和子元素的标签都用颜色作标记。左边有一个减号(-),点 击它就隐藏标签 note 元素内的代码,而减号也就会变成加号(+)。如果要查看原始 XML 文 档的源文件,则需要点击 IE 浏览器上的“查看(V)”,然后点击下跌选单上的“源文件(C)”, 调出文件编辑器(如记事本)就可看到原始 XML 文档的源文件,如图 22-1(b)所示。 2. 用 JavaScript 显示 XML 文档数据 要在当前的 Web 浏览器上显示 XML 文档的数据,可用 JavaScript 从 XML 文档中输入 数据。 【例 22.7-2】 用 JavaScript 输入 XML 文档数据的 HTML 文档如下, var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") xmlDoc.async="false" xmlDoc.load("note.xml") nodes = xmlDoc.documentElement.childNodes to.innerText = nodes.item(0).text from.innerText = nodes.item(1).text header.innerText = nodes.item(2).text body.innerText = nodes.item(3).text Displaying XML data inside HTML page 试用 Web 浏览器显示 XML 文档 (2002 年 7 月 10 日) 收件人: 发件人: 主标题: 内 容: 将这个文档存储到将这个文档存储到 C:\temp 目录下,使用的文件名为 note.htm。用 IE 6.0 显示时,显示的样式如图 22-2 所示
第22章可扩展标记语言(XML) dIsplaying XML data inside HTML p. -o x 收藏△)”链接”【翻 试用eb浏览器显示XML文档 (2002年7月10日) nder 内容: Don t forget me this weekend! 图22-2浏览器上显示的 note. htm 2253XML数据岛 XML数据岛( XML data island)是在HIML文档中存在的一种XML文档,它无须通过脚 本( script)或标签创建,只要对照XM文档就可以进行编写。任何可以用合格XML 文档表示的东西都可以是在一个数据岛内。数据岛用作为标签,用id属性提供引用的 数据岛名称 【例228-1】在下面所示的文档中,第2~8行构成一个数据岛。其中,第2行和第8 行是数据岛的标签。 Multimedia Fundamentals Lin Dagong China Qinghua39.90 2002.9/year> 将这个数据岛加上第1行的XML声明保存在 c: \temp的文件夹中,文件名可用 【例22.8-2】编写一个HIML文档,将这个数据岛加入到HIML文档中, 数据岛的概念 将这个文档保存在 c:\temp的文件夹中,文件名可用 dataisland. htm,用正E60中看到的 文档如图22-3所示
第 22 章 可扩展标记语言(XML) 9 图 22-2 浏览器上显示的 note.htm 22.5.3 XML 数据岛 XML 数据岛(XML data island)是在 HTML 文档中存在的一种 XML 文档,它无须通过脚 本(script)或标签创建,只要对照XML文档就可以进行编写。任何可以用合格XML 文档表示的东西都可以是在一个数据岛内。数据岛用作为标签,用 id 属性提供引用的 数据岛名称。 【例 22.8-1】 在下面所示的文档中,第 2~8 行构成一个数据岛。其中,第 2 行和第 8 行是数据岛的标签。 Multimedia Fundamentals Lin Dagong China Qinghua 39.90 2002.9 将这个数据岛加上第 1 行的 XML 声明保存在 c:\temp 的文件夹中,文件名可用 dataisland.xml。 【例 22.8-2】 编写一个 HTML 文档,将这个数据岛加入到 HTML 文档中, 数据岛的概念 将这个文档保存在 c:\temp 的文件夹中,文件名可用 dataisland.htm,用 IE 6.0 中看到的 文档如图 22-3 所示
第22章可扩展标记语言(XML) 数据岛的慨念= Microsoft Internet Explorer= 文件G编辑查看△收)工具①D帮助【颗 中后退·+③的益像搜索国收藏夹④”链接 XML数据岛是在HTML页面中存在的一种XML文档 ultimedia Fundamental s 39. 90 2002.9 包完成 厂回我的电随 图22-3使用IE60显示的 dataisland. htm文件 226XML与XSI 可扩展样式语言( Extensible Stylesheet Language,xSL)是万维网协会(W3O)于2001年10 月推荐的一个标准,用于表示文档样式的一种语言。XSL由XSLT, XPath和 XSL Formatting Objects组成。它可以把XML转换成HIML,可以对XML数据进行过滤和分类,可以定义 ML文档的部件,可以根据数据值编排XML数据的格式,等等。 本节将学习什么是XSL,以及如何使用XSL把XML文档转换成HTML文档 26.HTML样式与CSS 级联样式语言( cascading style sheets,cSs)是由万维网协会(W3C)为基于Web的样式表签 署的第一个规范[S]。版本CSS10提供了数百个可下载的版面设置,这些设置可应用到各种 各样的HIML文档。版本CSS2.0和CSS30还可支持XML等功能。该规范允许HIML文 档作者和用户把HIML样式表(如网页如何显示、网页上文本字体等样式表)附加到HIML 文档上。该规范也可指导HIML文件与用户的样式表进行混合 由于HIML使用预先定义的标签,这些标签的含义很好理解。例如p元素定义一个段 落,hl元素定义一级标题,因此浏览器就知道如何显示它们。使用CSS把新的样式添加到 HIML元素也并不困难,告诉浏览器用什么字体和颜色显示每个元素也容易做到,浏览器 也不难理解。但用CSS来格式XML文档似乎不是Web网页的未来 226.2XML样式与XSL 由于ⅹML不使用预先定义的标签,它允许使用任何标签,因此标签的意义就不好理解。 例如标签可以表示HIML的表格、办公室或家里的桌子或者其他东西。因此,目前 的浏览器就不知道如何显示XML文档,这就必需要给XML文档添点东西来描述文档如何 显示,这个东西就是可扩展样式语言(XSL)。XSL是为XML文档制定样式的一种语言,它 由下列三个部分组成: (1)XSLT:转换XML文档的一种语言。 (2) XPath:定义XML文档部件的一种语言 (3) XSL Formatting Objects:格式XML文档的词汇 XSLT( XSL Transformation)是一种可扩展的样式语言转换语言,是XSL标准中最重要的 组成部分。XSLT用于把XML文档转换成另一种XML文档,或者转换成浏览器能够识别 的文档。例如,使用XSLT把XML元素转换成HIML元素,使用XSLT把XML文档转换 成 XHTML文档,以便用web浏览器来显示文档。XSLT也可把新的元素添加到输出文件 或者删除元素。它还可以对元素进行分类、测试和判断什么元素要显示等。 描述转换过程的行话是XSL使用XSLT把XML源树( source tree)转换成XML结果树 ( result tree)在转换过程中,XSLT使用 XPath定义源文档中与预先定义的模板相匹配的部 分,然后把相匹配的部分转换成结果文档( result document)。源文档中与模板不匹配的部分 将保留在结果文档中 2263XSL浏览器 微软公司开发了多种版本的XML分析器,用来支持XSL语言。其中, MSXML Parser20 是与IE50一起发行的XML分析器: MSXML Parser2.5是与 Windows2000和IE5.5一起
第 22 章 可扩展标记语言(XML) 10 图 22-3 使用 IE 6.0 显示的 dataisland.htm 文件 22.6 XML 与 XSL 可扩展样式语言(Extensible Stylesheet Language,XSL)是万维网协会(W3C)于 2001 年 10 月推荐的一个标准,用于表示文档样式的一种语言。XSL 由 XSLT, XPath 和 XSL Formatting Objects 组成。它可以把 XML 转换成 HTML,可以对 XML 数据进行过滤和分类,可以定义 XML 文档的部件,可以根据数据值编排 XML 数据的格式,等等。 本节将学习什么是 XSL,以及如何使用 XSL 把 XML 文档转换成 HTML 文档。 22.6.1 HTML 样式与 CSS 级联样式语言(cascading style sheets, CSS)是由万维网协会(W3C)为基于Web的样式表签 署的第一个规范[5]。版本 CSS 1.0 提供了数百个可下载的版面设置,这些设置可应用到各种 各样的 HTML 文档。版本 CSS 2.0 和 CSS3.0 还可支持 XML 等功能。该规范允许 HTML 文 档作者和用户把 HTML 样式表(如网页如何显示、网页上文本字体等样式表)附加到 HTML 文档上。该规范也可指导 HTML 文件与用户的样式表进行混合。 由于 HTML 使用预先定义的标签,这些标签的含义很好理解。例如 p 元素定义一个段 落,h1 元素定义一级标题,因此浏览器就知道如何显示它们。使用 CSS 把新的样式添加到 HTML 元素也并不困难,告诉浏览器用什么字体和颜色显示每个元素也容易做到,浏览器 也不难理解。但用 CSS 来格式 XML 文档似乎不是 Web 网页的未来。 22.6.2 XML 样式与 XSL 由于 XML 不使用预先定义的标签,它允许使用任何标签,因此标签的意义就不好理解。 例如标签可以表示 HTML 的表格、办公室或家里的桌子或者其他东西。因此,目前 的浏览器就不知道如何显示 XML 文档,这就必需要给 XML 文档添点东西来描述文档如何 显示,这个东西就是可扩展样式语言(XSL)。XSL 是为 XML 文档制定样式的一种语言,它 由下列三个部分组成: ⑴ XSLT:转换 XML 文档的一种语言。 ⑵ XPath:定义 XML 文档部件的一种语言 ⑶ XSL Formatting Objects:格式 XML 文档的词汇 XSLT (XSL Transformation)是一种可扩展的样式语言转换语言,是 XSL 标准中最重要的 组成部分。XSLT 用于把 XML 文档转换成另一种 XML 文档,或者转换成浏览器能够识别 的文档。例如,使用 XSLT 把 XML 元素转换成 HTML 元素,使用 XSLT 把 XML 文档转换 成 XHTML 文档,以便用 Web 浏览器来显示文档。XSLT 也可把新的元素添加到输出文件, 或者删除元素。它还可以对元素进行分类、测试和判断什么元素要显示等。 描述转换过程的行话是 XSL 使用 XSLT 把 XML 源树(source tree)转换成 XML 结果树 (result tree)。在转换过程中,XSLT 使用 XPath 定义源文档中与预先定义的模板相匹配的部 分,然后把相匹配的部分转换成结果文档(result document)。源文档中与模板不匹配的部分 将保留在结果文档中。 22.6.3 XSL 浏览器 微软公司开发了多种版本的 XML 分析器,用来支持 XSL 语言。其中,MSXML Parser 2.0 是与 IE 5.0 一起发行的 XML 分析器;MSXML Parser 2.5 是与 Windows 2000 和 IE 5.5 一起