| 建立格式正确的XML文件 |
|
| 来源:网络收集 作者: 加入时间:2006-10-27 访问次数:66 [大 中 小] |
|
3. 在Windows 档案总管或目录窗口中,利用鼠标双击你刚储存的 Inventory03.xml 档案: Internet Explorer 5 的显示如下图所示:
 你输入的文件包含了下列型态的元素与元素内容: 元素中包含批注作为内容的一部份(INVENTORY)。注意浏览器并不会将批注显示出来。 在每一个BOOK元素的开头部份有一个名为 COVER_IMAGE 的空元素。这个元素的目的是告诉XML 应用程序显示书籍封面上的特定影像。(Source 属性包含了影像档案的名称)然而,在这个范例中要能使用这样的一个空元素,你需要透过HTML 网页中的script 或XSL 样式表(将于第九章与第十章中讨论)来显示XML 文件,而不是使用简单的CSS。 一个包含字符数据与子元素(SUBTITLE)的元素(在Moby-Dick 例子中是TITLE)。注意浏览器会将字符数据与子元素显示在同一行上,并使用相同的格式(指定到TITLE 元素的CSS 格式是由SUBTITLE 元素所继承而来的)。
为元素加入属性
在元素的起始卷标中,或是在空白标签中,你可以含括一个或多个属性规格(attributespecifications)。属性规格是一个与元素结合的名称-数值对(name-value pair)。例如,下面的PRICE 元素包含了一个名为Type 的属性,其值被指定为retail: $10.95 对其他的书籍而言,这项属性可能设定成其它值,例如设定成wholesale。 下面的BOOK 元素包含了两个属性,Category 与Display:
The Marble Faun Nathaniel Hawthorne trade paperback 473 $10.95
下面的空元素则包含了名为Source 的属性,指出包含要被显示影像的文件名称:
加入属性提供了另一种方法来为元素加入信息。一般来说,你可以放置大量你想要显示的元素数据于元素的内容中。而且,你可以使用属性来储存元素不同的特性,并不必然是那些要显示的资料。如同目录,或者是显示指令。然而,在XML 的规格书中,对于应该被储存在属性或内容的信息型态作了严格的区别。 注意 当你使用CSS 来显示XML 文件(使用方法将在第七章讨论),浏览器并不会显示属性或属性值。然而使用数据链路(第八章)、HTML 网页中的script(第九章),或XSL 样式表(第十章)来显示XML 文件,可让你存取属性与属性值,或者执行适当的动作。
建立属性的规则
如同你所看到的,属性规格是由属性名称后面接着等号,再接着属性值所构成的。你可以选择你想要的任何名称,只要遵循下面规则即可: 名称必须由字母或底线所组成(_),后面接着零或多个字母、数字、句点(.)、连字号(-),或底线(_)。 XML 规格书中陈述了属性的名称以「xml」(任何大写或小写字母的组合)作为起始,该前缀被「保留作为标准规格」。虽然Internet Explorer 5 并未执行这项限制,但最好还是不要使用该前缀以避免将来的冲突。 特定的属性名称只能出现在起始卷标或空白卷标中一次。 例如,下面起始卷标中的属性名称是合法的:
下面的属性名称则是违法的:
first character ──>
- declared A as a namespace ──>
注意 根据XML 规格,在属性的名称中冒号的使用被保留供指定命名空间用。命名空间被用来区分拥有相同名字的属性;命名空间将在第七章中的 <将HTML 元素加到XML 文件中并使用命名空间> 作讨论。只有当元素名称接在已经于文件中宣告过的命名空间之后,Internet Explorer 5 才会让你在元素名称中加入冒号。例如,只有当你已经将A 宣告成命名空间时,A:Category 才是合法的。
合法属性值的规则
你指定到属性的值是包含在引号内的一连串字符,称为引号字符串(quoted string),或literal。你可以指定任何的literal 值到属性中,只要遵守下面的规则即可: 字符串可以使用单引号(')或双引号(")来包围。 字符串中不能包含用来包围字符串的引号。 字符串可以包含字符参照或普通内部实体参照。(第六章中将讨论字符参照与实体参照) 字符串不能包含(<)字符。(解析器会把该字符与XML 卷标的起始符号混淆) 字符串不能包含(&)字符,除了作为字符参照或实体参照的起始外。 你已经看过合法属性规格的范例。下面的属性规格则是违法的:
如果你想要在属性值中包含双引号("),你可以使用单引号(')来包围界定字符串,如下面范例所示:
同样地,要将单引号(')包含在字符串中,就使用双引号(")来将字符串包围:
提示 你可以借着使用字符参照来避开这种字符限制并输入任何字符到属性中,或是使用-如果可以的话-预先定义的普通实体参照。笔者将在第六章中解释字符参照与预先定义的普通实体参照。 如果你建立一个不包含文件型态宣告的格式正确的文件(如你在本章中所作的),你可以赋予属性符合上述规则的任何值。然而,如同你将在第五章中学到的,当你建立文件型态宣告并将属性定义于该宣告内,你可以限制那些可以被指定到属性的值的型态。例如,你可以将属性定义成其值只能接受「yes」或「no」。因此,将某些型态的信息储存到元素的属性中而非内容中的好处,就是你可以获得更多可以被指定到属性上的数据型态上的控制权,并让解析器实行这些型态的限制(如同你将在第五章中看到的,基本的XML 规格并不提供方法来限制元素中字符数据的型态)。
将内容转换成属性
1. 在文字编辑器中 开启 一份新的、空白的文本文件,并输入列表3-3 中显示的XML文件。(你可以在随书光盘的 Inventory04.xml 档案中找到)你也可以使用你之前输入过的 Inventory.xml 文件(在列表2-1 与随书光盘都有提供)作为起始点。 2. 使用文字编辑器的 另存新文件 指令将文件储存于本机硬盘上,文件名为 Inventory04.xml 。 Inventory04.xml
Mark Twain 298 $5.49
Walt Whitman 462 $7.75
Nathaniel Hawthorne 473 $10.95
Herman Melville 724 $9.95
注意 你输入的文件使用了你在前面练习中所建立、名为的 Inventory02.css 的CSS(可以于列表2-4 与随书光盘中找到)。请确定这个样式表档案是与Inventory04.xml 位在相同的目录中。 3. 在Windows 档案总管或目录窗口中,双击你刚储存的 Inventory04.xml 档案:Internet Explorer 5 的显示如下图所示:
 你输入的文件是以 Inventory.xml 为基础,该档案是你在之前的练习中建立的。除了拥有比 Inventory.xml 较少的元素外,新文件拥有两项修正,藉以说明属性的使用: 在每一个BOOK 元素中,书籍的连结信息都从内容(以BINDING 套迭元素的型式)被转换成名为Binding 的属性。例如,你可能会制作这种转换,因为你想储存连结的型态,但是当使用CSS 来显示该文件时,你却不想将之与其它的书籍信息显示出来。(在上图中,请注意Internet Explorer5 并未显示属性的值) 一个名为Born 的属性被加到每一个AUTHOR 元素中,以储存作者的出生日期。这是一个你可能想要储存,但却不想显示的较不重要信息的范例。将这类信息隐藏并指出该信息是较不重要的的方法之一,就是将它指定到属性中,而不是放在元素的内容中。 这些只是属性众多用途的极少部分。你将在第五章中看到更多的用法。
|
|
|
|
|
|