建立格式正确的XML文件.docx_第1页
建立格式正确的XML文件.docx_第2页
建立格式正确的XML文件.docx_第3页
建立格式正确的XML文件.docx_第4页
建立格式正确的XML文件.docx_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

建立格式正确的XML文件在本章中,你将学习建立格式正确的XML 文件的基本技术。格式正确的文件指的是一份符合最小标准集合的文件。该标准遵守了XML 文件的规格。当你建立格式正确的XML 文件时,你可以向右延伸并开始在需要元素时加入元素,并输入文件的数据,就像你在建立HTML 网页时所做的一样。(虽然,如同你在前面章节中所学的,在XML 文件中你是创造自己的元素,而不是使用预先定义好的元素。)然后,你在使用Microsoft Internet Explorer 5 处理与显示任何格式正确的文件时将不会有任何问题。在第五章中,你将学习如何建立一份有效的XML 文件:它不只是一个格式正确的文件,同时需符合一组更严格的限制。建立一个有效的XML 文件并不像建立格式正确的文件那样简单。在你开始为有效的文件加入元素与数据之前,你必须在文件型态宣告部份中完整定义文件的结构,而该文件型态宣告会被加入文件序文中。在第五章中,你将会学到一些制作有效文件的优点,特别是当你或其它人正在建构一组类似的文件时。在本章中,首先你将学习所有格式正确的XML 文件的必要性与选择性部份。接下来你将探索如何借着定义文件的元素来将信息加到XML 文件之中。然后你将学习为元素加入属性以提供额外的文件信息。格式正确的XML 文件的各个部份如同你在第二章所学到的,XML 文件由两个部份组成:序文与文件元素(一般称为根元素)。另外,紧邻文件元素之后,XML 文件还包括了批注、处理指令,以及空白部份。下面是一个格式正确的XML 文件范例,它显示了文件的各个部份以及在每个部份中你可以加入的项目:列表31 示范了这个范例文件的完整版本。(你可以在随书光盘的 Parts.xml 档案中找到这个程序代码。)Parts.xmlThe Adventures of Huckleberry FinnMark Twainmass market paperback298$5.49Leaves of GrassWalt Whitmanhardcover462$7.75The Legend of Sleepy HollowWashington Irvingmass market paperback98$2.95The Marble FaunNathaniel Hawthornetrade paperback473$10.95MobyDickHerman Melvillehardcover724$9.95The Portrait of a LadyHenry Jamesmass market paperback256$4.95The Scarlet LetterNathaniel Hawthornetrade paperback253$4.25The Turn of the ScrewHenry Jamestrade paperback384$3.35在文件序文起始部份的XML 宣告版本号码可以用单引号或双引号来包围指定。通常,XML 卷标中引号内的字符串称为literal可以使用单引号或双引号来包围。因此,下面的程序都是合法的:在列表31 范例文件中的XML 宣告也包含了一个独立文件宣告(standalone documentdeclaration)(standalone=yes)。这个宣告可以用在某些XML 文件中来简化文件的处理。(第六章中将讨论独立文件宣告)在这个范例文件的序文与文件元素的部份都包括了批注。(你将在第四章中学到更多有关批注的知识。)文件的序文包含了两行空白,标签为空白部份,而文件元素之后也包括了两行空白。空白部份由一个或多个的空格符、Tab、换行,或底线字符所组成。为了让XML 文件具有更高的可读性,你可以自由地在XML 卷标之间例如起始卷标、结束卷标、批注,与处理指令加入空白部份,也可以在标签之中加入空白例如,范例文件中XML 宣告的结尾部份中的yes与?之间的空格符。除非空格符是包含在直接包含字符数据的元素之中,否则处理器会简单地将之忽略。(在这个例子中,处理器会将空白部份当成元素的字符数据传送给应用程序。)范例文件在序文中有一个处理指令,并在紧邻文件元素处也有一个处理指令。(第四章将讨论处理指令。)最后,文件包含了XML 文件的必要条件:文件元素。建立文件元素与其包含的巢状元素是本章的讨论重点。注意如同你将在第五章中学到的,有效的XML 文件需要包含一个附加的组件,这个组件并未包括在列表31 的范例中:这个组件就是文件型态宣告,可以放置在序文中的任何位置,其它卷标之外,跟在XML 宣告之后。文件型态宣告定义了完整XML 文件的结构。XML 文件的最低要求列表31 的XML 文件范例的序文部份包含了所有可以放置在序文中的项目。然而,请注意,这些项目都是选择性的(虽然XML 规格书中指明了你应该包含XML 宣告),可有可无。因此,序文本身也是选择性的,而后基本要求的XML 文件,只包含了一个简单的文件元素,符合格式正确的XML 文件标准:A minimalist document.该文件在Internet Explorer 5 中将显示如下:加入元素到文件中XML 文件中的元素包含了真正的文件信息(例如,在列表31 中,有存货清单中书籍的标题、作者、价格,与其它信息),而且指出了这些信息的逻辑结构。元素会以树状结构的方式被安排,元素可以巢状套迭在其它的元素之中。文件必须明确地拥有一个顶层元素文件元素或根元素而其它的元素都套迭在这个元素之下。因此,下面是一个格式正确的XML 文件。The Adventures of Huckleberry FinnMark Twainmass market paperback298$5.49Leaves of GrassWalt Whitmanhardcover462$7.75然而,下面的文件则不是格式正确的:The Adventures of Huckleberry FinnMark Twainmass market paperback298$5.49Leaves of GrassWalt Whitmanhardcover462$7.75元素必须适当地套迭。这代表,如果元素(由一组起始卷标与结束卷标来界定,作者稍后将会介绍。)是在另一个元素之中开始,它必须也在相同的元素之中结束。例如,这些元素都是格式正确的:Leaves of GrassWalt Whitman然而,这些元素就不是格式正确的:Leaves of Grass注意一个包含一个或多个套迭元素(如列表31 中的BOOK)的元素称为父元素(parent element)。而一个直接包含在父元素之下(如BOOK 之下的TITLE)的元素则称为子元素(child element)、副元素(subelement),或父元素的套迭元素。元素解析如你所见,元素通常由起始卷标、内容与结束卷标所组成。不像HTML,XML 要求你一定要包含起始卷标与结束卷标。(唯一的例外是没有内容的元素,你可以使用稍后介绍的特殊空元素。)出现在起始卷标与结束卷标开头部份的名称(在上面的例子是TITLE),称为元素的型态(type)或通用识别代号(generic identifier:GI)。型态名称可以用来识别特殊的元素型态或元素类别,而不是特定一个元素。因此,元素可以包含多个拥有相同型态名称的元素(如列表31 中的BOOK 或TITLE 元素)。当你为XML 文件加入元素时,你可以选择任何你想要的型态名称,只要遵守下面的规则即可:名字必须以字母或底线开头(_),后面接着零或多个字母、数字、句号(.)、连字号(),或底线(_)。XML 规格书中说明了元素的型态名称是以xml(以任何大写或小写字母组成)为前缀,而且将被保留成为标准规格。虽然Internet Explorer 5 并不强迫要求遵守这项限制,但最好不要使用这个前缀以避免将来产生问题。下列是合法的元素型态名称:Part_1stPlaceABSECTIONStreet.Address.1下列则是不合法的元素型态名称:1stPlace B Section B/Section :Chapter A:Section 注意根据XML 规格书中的定义,元素名称中的冒号(:)将被保留作为命名空间(namespace)用。命名空间负责区别拥有相同名称的元素,笔者将在第七章的 将HTML 元素加到XML 文件中并使用命名空间 中继续讨论。只有当元素名称接在已经宣告过的命名空间之后,InternetExplorer 5 才会让你在元素名称中加入冒号。例如,A:Section 只有在你已将A 宣告成命名空间时才为合法。同时,起始标签中的名字必须完全与结束标签中的名字相同,包括字母的大小写。因此,底下的元素就不是格式正确的:Chapter One元素名字中的大小写相当重要,如同所有卷标中的文字规定一样,有大小写之分。因此,元素型态名称Ace 与ace 或ACE 并不相同。元素内容的类型元素内容指的是起始卷标与结束卷标之间的文字。你可以在文件的内容包括下列型态的项目:套迭的元素 。在列表31,元素INVENTORY 与BOOK 都包含了套迭元素当作元素的内容:字符数据 。字符数据是表达元素内容信息的文字,例如TITLE 元素中特定的书籍标题。下面介绍的是一个由字符数据与套迭的元素所组成的元素内容:当加入字符数据到元素中时,你可以加入除了左括号()之外的字符。注意XML 解析器会扫瞄XML 卷标中元素的字符数据。你不可以加入左角括号()当作字符数据的一部份,因为解析器会将()当作CDATA 区段的结束。(笔者将在第六章讨论字符参照;在第四章讨论CDATA 区段)。如果你想要加入()或(&)来当作字符数据的一部份,你可以使用CDATA区段。你也可以使用字符参照来加入任何字符(包括不在键盘上的字符),而且可以借着使用预先定义的普通实体参照来加入某些字符(如字符串之外任何字符的文字区块。下面是一个元素中CDATA 区段的范例:处理指令 。处理指令提供信息给XML 应用程序使用。(请参阅 第四章 )批注 。批注是XML 文件的注释部分,其文字是可以阅读了解的,但XML 处理器会将之忽略。(请参阅 第四章 )下面是一个包含处理指令与批注的元素范例:空元素你也可以加入空元素(empty element;即没有内容的元素)到你的文件中。你可以借着在起始卷标后立即放置结束卷标来建立一个空元素,如同这个范例所示:或者,你可以借着使用特殊的空元素卷标(emptyelement tag)来省去输入,如下所示:这两个标签拥有相同的意义。因为空元素没有内容,你可能会质疑其用途为何。下面介绍的是两种可能的用途:你可以使用空元素告诉XML 应用程序来执行某个动作或显示对象。在HTML 中的例子BR 是空元素,它能告诉浏览器加入一个换行,而HR 空元素,则是告诉浏览器加入一个水平分界线。换言之,仅拥有元素外观与特定名称的元素未含任何内容还是可以提供许多重要的信息给应用程序。空元素可以透过属性来储存信息,你将在本章后面学到属性的知识。(你尚未见到拥有属性的元素。)在HTML 中的例子是IMG(影像)空元素,它包含了告诉处理器那里可以找到图形文件,以及如何显示图形等信息的属性。提示如同你将在第七章学到的,串接样式表(CSS)可以使用空元素来显示影像。在第八章,你将学习如何运用数据链路来使用空元素或非空元素的属性。而在第九章与第十章中,你将学习如何使用HTML script(第九章)与XSL 样式表(第十章)来使用元素(空或非空元素)及元素的相关属性并执行适当的动作。建立不同型态的元素1. 在文字编辑器中 开启 一个新的、空白文字文件,并输入显示于列表32 中的XML文件(您可以在随书光盘的 Inventory03.xml 档案中找到)。你也可以使用你在第二章中所建立的 Inventory.xml 文件(在列表21 与随书光盘中都有提供)来当作出发点。2. 使用文字编辑器的 存盘 指令,将文件储存到本机硬盘,并指定文件名为 Inventory03.xml 。Inventory03.xmlThe Adventures of HuckleberryFinnMark Twainmass market paperback298$5.49Leaves of GrassWalt Whitmanhardcover462$7.75The Marble FaunNathaniel Hawthornetrade paperback473$10.95MobyDickOr,the WhaleHerman Melvillehardcover724$9.95注意你所输入的文件使用了一个名为 Inventory02.css 的CSS,这是你在之前的练习中所建立的(在本书的列表24)。确定这个样式表档案是放在与 Inventory03.xml 相同的目录中。3. 在Windows 档案总管或目录窗口中,利用鼠标双击你刚储存的 Inventory03.xml 档案:Internet Explorer 5 的显示如下图所示:你输入的文件包含了下列型态的元素与元素内容:元素中包含批注作为内容的一部份(INVENTORY)。注意浏览器并不会将批注显示出来。在每一个BOOK元素的开头部份有一个名为 COVER_IMAGE 的空元素。这个元素的目的是告诉XML 应用程序显示书籍封面上的特定影像。(Source 属性包含了影像档案的名称)然而,在这个范例中要能使用这样的一个空元素,你需要透过HTML 网页中的script 或XSL 样式表(将于第九章与第十章中讨论)来显示XML 文件,而不是使用简单的CSS。一个包含字符数据与子元素(SUBTITLE)的元素(在MobyDick 例子中是TITLE)。注意浏览器会将字符数据与子元素显示在同一行上,并使用相同的格式(指定到TITLE 元素的CSS 格式是由SUBTITLE 元素所继承而来的)。为元素加入属性在元素的起始卷标中,或是在空白标签中,你可以含括一个或多个属性规格(attributespecifications)。属性规格是一个与元素结合的名称数值对(namevalue pair)。例如,下面的PRICE 元素包含了一个名为Type 的属性,其值被指定为retail:$10.95对其他的书籍而言,这项属性可能设定成其它值,例如设定成wholesale。下面的BOOK 元素包含了两个属性,Category 与Display:The Marble FaunNathaniel Hawthornetrade paperback473$10.95下面的空元素则包含了名为Source 的属性,指出包含要被显示影像的文件名称:加入属性提供了另一种方法来为元素加入信息。一般来说,你可以放置大量你想要显示的元素数据于元素的内容中。而且,你可以使用属性来储存元素不同的特性,并不必然是那些要显示的资料。如同目录,或者是显示指令。然而,在XML 的规格书中,对于应该被储存在属性或内容的信息型态作了严格的区别。注意当你使用CSS 来显示XML 文件(使用方法将在第七章讨论),浏览器并不会显示属性或属性值。然而使用数据链路(第八章)、HTML 网页中的script(第九章),或XSL 样式表(第十章)来显示XML 文件,可让你存取属性与属性值,或者执行适当的动作。建立属性的规则如同你所看到的,属性规格是由属性名称后面接着等号,再接着属性值所构成的。你可以选择你想要的任何名称,只要遵循下面规则即可:名称必须由字母或底线所组成(_),后面接着零或多个字母、数字、句点(.)、连字号(),或底线(_)。XML 规格书中陈述了属性的名称以xml(任何大写或小写字母的组合)作为起始,该前缀被保留作为标准规格。虽然Internet Explorer 5 并未执行这项限制,但最好还是不要使用该前缀以避免将来的冲突。特定的属性名称只能出现在起始卷标或空白卷标中一次。例如,下面起始卷标中的属性名称是合法的:下面的属性名称则是违法的:注意根据XML 规格,在属性的名称中冒号的使用被保留供指定命名空间用。命名空间被用来区分拥有相同名字的属性;命名空间将在第七章中的 将HTML 元素加到XML 文件中并使用命名空间 作讨论。只有当元素名称接在已经于文件中宣告过的命名空间之后,Internet Explorer 5 才会让你在元素名称中加入冒号。例如,只有当你已经将A 宣告成命名空间时,A:Category 才是合法的。合法属性值的规则你指定到属性的值是包含在引号内的一连串字符,称为引号字符串(quoted string),或literal。你可以指定任何的literal 值到属性中,只要遵守下面的规则即可:字符串可以使用单引号()或双引号()来包围。字符串中不能包含用来包围字符串的引号。字符串可以包含字符参照或普通内部实体参照。(第六章中将讨论字符参照与实体参照)字符串不能包含()字符。(解析器会把该字符与XML 卷标的起始符号混淆)字符串不能包含(&)字符,除了作为字符参照或实体参照的起始外。你已经看过合法属性规格的范例。下面的属性规格则是违法的:ALBUM Type=!-Can t use 如果你想要在属性值中包含双引号(),你可以使用单引号()来包围界定字符串,如下面范例所示:同样地,要将单引号()包含在字符串中,就使用双引号()来将字符串包围:提示你可以借着使用字符参照来避开这种字符限制并输入任何字符到属性中,或是使用如果可以的话预先定义的普通实体参照。笔者将在第六章中解释字符参照与预先定义的普通实体参照。如果你建立一个不包含文件型态宣告的格式正确的文件(如你在本章中所作的),你可以赋予属性符合上述规则的任何值。然而,如同你将在第五章中学到的,当你建立文件型态宣告并将属性定义于该宣告内,你可以限制那些可以被指定到属性的值的型态。例如,你可以将属性定义成其值只能接受yes或no。因此,将某些型态的信息储存到元素的属性中而非内容中的好处,就是你可以获得更多可以被指定到属性上的数据型态上的控制权,并让解析器实行这些型态的限制(如同你将在第五章中看到的,基本的XML 规格并不提供方法来限制元素中字符数据的型态)。将内容转换成属性1. 在文字编辑器中 开启 一份新的、空白的文本文件,并输入列表33 中显示的XML文件。(你可以在随书光盘的 Inventory04.xml 档案中找到)你也可以使用你

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论