第22章可扩展标记语言(XML) (3)在XML文档中,开始标签和结束标签必需是相同的。如果开标签使用< Messa 则闭标签也要使用< Message>。例如 < Message>这是错误的标签对< message < message这是正确的标签对</ message (4)在XML文档中,所有XML元素必需正确嵌套。例如, p><b>这段用加粗的宋体</b></p 而在HIML文档中,HIML元素没有正确嵌套也未尝不可。例如, p><b>这段用加粗的宋体<p><b (5)在XML文档中,第一个标签和最后一个标签叫做根标签( (root tag)。所有ⅩML文档 必需要有一对开闭根标签,其他的元素必需嵌套在这对根标签内 <root> <child> <subchild>..</subchild> </child> (6)在XML文档中,XML元素可以有属性值,但必需使用双引号(""),就像HML中 的文档一样。例如, <?xml version="1. 0"encoding="ISO-8859-1"?> <note date=7/7/2002"> </note> 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个字符组成:<!-,结束部分由3个字符组成:->。在它们之间 可以包含任何种类的文字 224XML文档类型 XML10规范指定了两种类型的文档,一种叫做合格XML文档( Well-Formed XML document),另一种叫做有效XML文档( Valid xml document)。 2241什么是合格XML文档 个严格遵照ⅩML语法规则构造的文档叫做合格ⅩML文档。XML语法规则在2.3.2 中作了介绍,详细的规则可在万维网协会(W3C推荐的XML1.0标准中找到[] 下面所示的文档是一个合格XML文档 <?xml version="1.0" encoding=ISO-8859-1"?> <note> <to>Lucy</to> <from>Lin</from> <heading>Reminder</heading> <body> Don't forget me this weekend </body> HIML的规则比较松散,这就迫使Web浏览器要补充许多丢失的说明。XML则很严谨, 个合格XML文档必需符合下列XML文档结构规则 (1)每个元素必需有开始标签和结束标签 (2)文档必需有一个包含所有其他元素的根元素。 (3)标签必需正确嵌套。 个合格XML文档不要求一定要用文档类型定义(DID或XML模式( XML Schema)
第 22 章 可扩展标记语言(XML) 6 ⑶ 在 XML 文档中,开始标签和结束标签必需是相同的。如果开标签使用<Message>, 则闭标签也要使用</Message>。例如, <Message>这是错误的标签对</message> <message>这是正确的标签对</message> ⑷ 在 XML 文档中,所有 XML 元素必需正确嵌套。例如, <p><b>这段用加粗的宋体</b></p> 而在 HTML 文档中,HTML 元素没有正确嵌套也未尝不可。例如, <p><b>这段用加粗的宋体</p></b> ⑸ 在 XML 文档中,第一个标签和最后一个标签叫做根标签(root tag)。所有 XML 文档 必需要有一对开闭根标签,其他的元素必需嵌套在这对根标签内。 <root> <child> <subchild>.....</subchild> </child> </root> ⑹ 在 XML 文档中,XML 元素可以有属性值,但必需使用双引号(" "),就像 HTML 中 的文档一样。例如, <?xml version="1.0" encoding="ISO-8859-1"?> <note date="7/7/2002"> …… </note> date 是 note 的属性,属性值为"7/7/2002"。 ⑺ 在 XML 文档中,空格是保留的。 ⑻ 在 XML 文档中,CR / LF 字符只存储 LF 字符。在过去,新行字符包括回车(carriage return, CR)和换行(line feed,LF)两个字符。在 Windows 环境下,文本中的新行字符存储 CR 和 LF 两个字符;在 UNIX 环境下,文本中的新行字符只存储 LF 字符。 ⑼ 在 XML 文档中,使用与 HTML 文档中类似的注释。例如, <!--这是一个注释--> 注释行的开始部分由 4 个字符组成:<!--,结束部分由 3 个字符组成:-->。在它们之间 可以包含任何种类的文字。 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 文档。 <?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>Lucy</to> <from>Lin</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> 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规则编写的有效文档如下 <?xml version="1. 0"encoding="ISO-8859-1"?> <I DOCTYPE note SYSTEM"InternalNote dtd"> <note> <to>lucy</to> <from>Lin</from> <heading>Reminder </heading> <body Don' t forget me this weekend! </body> <note> 其中, DOCTYPE是 Document Type Declaration的简写,不同于DID。一个序言( prolog) 通常包含一个这种形式的语句: <IDOCTYPE foo SYSTem"foo. dtd"> 其中,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文档 <?xml version="1. 0"encoding"ISO8859-1"2> <note> <to>Lucy</to> <from>Lin</from> <heading> Reminder</heading> <body>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 规则编写的有效文档如下, <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE note SYSTEM "InternalNote.dtd"> <note> <to>Lucy</to> <from>Lin</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> 其中,DOCTYPE 是 Document Type Declaration 的简写,不同于 DTD。一个序言(prolog) 通常包含一个这种形式的语句: <!DOCTYPE foo SYSTEM "foo.dtd"> 其中,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 文档 <?xml version="1.0" encoding="ISO8859-1" ?> <note> <to>Lucy</to> <from>Lin</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
第22章可扩展标记语言(XML) 保存到 C: \temp目录下,文件名用 note.xml。因笔者的计算机上安装的浏览器是IE60,用 IE60显示时,显示的样式如图22-1(a)所示 1.0"encoding="IS08859-1"?> >Lucy</ heading>Reminder</heading> ody>Don't Forge minders/header (a)IE60浏览器上显示的 note. xml(b)记事本器上显示的 note. xm 图22-1原始XML文档的显示 在图22-(a)中,根元素和子元素的标签都用颜色作标记。<note>左边有一个减号(-),点 击它就隐藏标签note元素内的代码,而减号也就会变成加号(+)。如果要查看原始XML文 档的源文件,则需要点击IE浏览器上的“查看(V)”,然后点击下跌选单上的“源文件O”, 调出文件编辑器(如记事本)就可看到原始XML文档的源文件,如图22-1(b)所示 2.用 JavaScript显示XML文档数据 要在当前的Web浏览器上显示XML文档的数据,可用 JavaScript从XML文档中输入 数据。 【例22.7-2】用 Javascript输入XML文档数据的HML文档如下 <htm> <head> 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) <script> <title> Displaying XML data inside hTml page<title> <body bgcolor=#C4FFE6"> hI align=" center"< cfont size="4">试用Web浏览器显示ⅩML文档<br> (2002年7月10日)</font b>收件人:< an <b>发件人:<b>< span id="from"></span><br> <b>主标题:</b>< span id=" header"></span><br>p p><b>内容:<b>< span id="body">span><p body> </html> 将这个文档存储到将这个文档存储到 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>左边有一个减号(-),点 击它就隐藏标签 note 元素内的代码,而减号也就会变成加号(+)。如果要查看原始 XML 文 档的源文件,则需要点击 IE 浏览器上的“查看(V)”,然后点击下跌选单上的“源文件(C)”, 调出文件编辑器(如记事本)就可看到原始 XML 文档的源文件,如图 22-1(b)所示。 2. 用 JavaScript 显示 XML 文档数据 要在当前的 Web 浏览器上显示 XML 文档的数据,可用 JavaScript 从 XML 文档中输入 数据。 【例 22.7-2】 用 JavaScript 输入 XML 文档数据的 HTML 文档如下, <html> <head> <script language="JavaScript" for="window" event="onload"> 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 </script> <title>Displaying XML data inside HTML page</title> </head> <body bgcolor="#C4FFE6"> <h1 align="center"><font size="4">试用 Web 浏览器显示 XML 文档<br> (2002 年 7 月 10 日)</font></h1> <hr> <p><b>收件人: </b><span id="to"></span><br> <b>发件人: </b><span id="from"></span> <br> <b>主标题: </b><span id="header"></span> <br></p> <p> <b>内 容: </b><span id="body"></span> </p> </body> </html> 将这个文档存储到将这个文档存储到 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)或< OBJECT>标签创建,只要对照XM文档就可以进行编写。任何可以用合格XML 文档表示的东西都可以是在一个数据岛内。数据岛用<xml>作为标签,用id属性提供引用的 数据岛名称 【例228-1】在下面所示的文档中,第2~8行构成一个数据岛。其中,第2行和第8 行是数据岛的标签。 <?xml version=1.0"encoding="ISO-8859-1"?> <xml id="mybook"> <title>Multimedia Fundamentals</title> <author>Lin Dagong</author> <country>China</country> <company>Qinghua</company <price>39.90</price> <year>2002.9/year> </xml> 将这个数据岛加上第1行的XML声明保存在 c: \temp的文件夹中,文件名可用 【例22.8-2】编写一个HIML文档,将这个数据岛加入到HIML文档中, <html> <head> <ttle>数据岛的概念< title Whetahttp-equiv="content-type"content="text/htmL;charset=gb2312"> <body bgcolor="#FFFFFF"text=#000000"> <xml id="mybook"src="dataisland xml"></xml> <table border="1"datasrc="#mybook"> <td><span datafld="author"></span></td <td><span datafld="title"></span><td> <td><span datafld="price"></span></td> <td><span datafld="year"></span></td> <table> 将这个文档保存在 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)或<OBJECT>标签创建,只要对照XML文档就可以进行编写。任何可以用合格XML 文档表示的东西都可以是在一个数据岛内。数据岛用<xml>作为标签,用 id 属性提供引用的 数据岛名称。 【例 22.8-1】 在下面所示的文档中,第 2~8 行构成一个数据岛。其中,第 2 行和第 8 行是数据岛的标签。 <?xml version="1.0" encoding="ISO-8859-1" ?> <xml id="mybooks"> <title>Multimedia Fundamentals</title> <author>Lin Dagong</author> <country>China</country> <company>Qinghua</company> <price>39.90</price> <year>2002.9</year> </xml> 将这个数据岛加上第 1 行的 XML 声明保存在 c:\temp 的文件夹中,文件名可用 dataisland.xml。 【例 22.8-2】 编写一个 HTML 文档,将这个数据岛加入到 HTML 文档中, <html> <head> <title>数据岛的概念</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body bgcolor="#FFFFFF" text="#000000"> <xml id="mybooks" src="dataisland.xml"></xml> <table border="1" datasrc="#mybooks"> <tr> <td><span datafld="author"></span></td> <td><span datafld="title"></span></td> <td><span datafld="price"></span></td> <td><span datafld="year"></span></td> </tr> </table> 将这个文档保存在 c:\temp 的文件夹中,文件名可用 dataisland.htm,用 IE 6.0 中看到的 文档如图 22-3 所示