• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:05来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

图书列表。
目录元素不包含任何属性。它在文档中只有一个,因此没有必要提供标识符。我们将对目
录的讨论分散到它所包含的其他对象中。
(2) 出版社
现在,让我们来看看P u b l i s h e r(出版商)元素的定义:
上述定义对应于我们在前面看到的示意图。P u b l i s h e r元素包含一个公司名称,一个或多个地
址,若干印记,以及零个或多个作者。有些出版社为了简单起见有时宁愿不要作者,但是在我
们的目录中,无作者代表该书是匿名作者编写的,或者作者过多,例如:会议的专题文集。
有一点需要特别注意, I m p r i n t s没有设定元组数。这并不是疏忽。其他属性都是在同一级列
出的,对于I m p r i n t s,我希望改变一下风格,通过元素集合来说明。P u b l i s h e r元素将包含由
I m p r i n t元素集构成的子元素。这种方式并不会影响元素的含义,它有利于应用程序的程序员理
解D T D。如果你希望忽略该元素,只需直接跳至下一元素。如果你对该元素感兴趣,你可以利
用解析器检查属于I m p r i n t s元素的子元素的数量,由此得到印记数。
另外,P u b l i s h e r元素还有一个属性i s b n:
P u b l i s h e r元素需要一个唯一的指示符,而公司名称不能作为指示符。图书的I S B N包含分配
给出版商的唯一数字。例如,Wr o x出版社的所有书的I S B N都包含序号1 8 6 1。我希望文档的创作
者将整个I S B N中的这个片断作为该属性的值。
下面我们来介绍构成P u b l i s h e r元素的子元素:
程序清单3 - 1 7
以上代码应该与你想象的差不多。大多数元素都是# P C D ATA类型的。
本节最后给出了图书目录DTD的完整代码。
I m p r i n t s元素是由一个或多个I m p r i n t元素构成的,如前所述, I m p r i n t元素是# P C D ATA类型
的。A u t h o r元素看上去略微混乱一些,但是在分析其内容模型之前,我们还要进一步说明一下
第3章文档类型定义使用73 下载
A d d r e s s和I m p r i n t元素的属性:
由于出版社可能有多处办公地点,因此要将总部和分公司区分开。在此,我使用简单的枚
举类型,而且该属性是可选的。关键字# I M P L I E D表示文档的作者可以忽略该属性,同时不会影
响文档的有效性。如果元素包含该属性,它的值必须是y e s或n o。
现在让我们来研究I m p r i n t元素的属性列表。由于该元素的内容为# P C D ATA,因此I m p r i n t的
名称的长度不受限制。我需要将图书与印记相关联,所以我希望有个较短的关键字。这就是
s h o r t I m p r i n t N a m e属性的作用。此后, Our Incredibly Wonderful Children's Book Division可以缩
写为I n c r e d C h i l d。我们同样没有限制该属性的长度。实际上, D T D语法并未提供控制字符串长
度的设置。
与字符串长度问题相比,如何使用I D类型的属性更加重要。如果文档中出现该属性,它就
作为唯一的关键字,可以被文档中的其他元素引用。在我们的例子中,我们知道该属性将被
B o o k元素引用,但是D T D并不提供显式的声明机制。
让我们回到A u t h o r元素,以下是A u t h o r及其子元素的声明:
程序清单3 - 1 8
A u t h o r的子元素相对来说比较通俗,它包含的文本信息你可想而知。我们提供了名称和个人
简历信息。该元素的关键在于它的属性。A u t h o r元素的a u t h o r C i t e I D属性是元素的简短引用,它
的作用与I m p r i n t元素的s h o r t I m p r i n t N a m e属性类似。它是一个I D类型的属性,用于将作者与一本
或多本书相关联。
P o r t r a i t元素用于将作者的照片与作者的文字信息相关联。由于X M L标记中不能包含二进制
数据,因此需要借助链接机制。我们不能使用实体取代链接,因为在一份很长的目录清单中,
会出现许多作者和相应的图像文件,当创建文档时它们大多数都是动态命名的。X M L委员会针
对链接提出了许多方法,但是都未形成正式的建议规范,而且几乎未得到解析器厂商的支持。
为了简单起见,我们还是暂时不提X L i n k或X P o i n t e r的语法为好,我将图像文件的U R L作为
p i c L i n k属性的值。然而,我们的应用程序无论如何都需要支持某种链接机制。如果读取目录文
档的应用程序使用浏览器,我们可以为浏览器生成包含I M G标记的H T M L文件。在这类应用程序
中,p i c L i n k的值将成为I M G标记的S R C属性的值。如果使用文档的应用程序不具备可视化的界
面,它只需忽略该属性。
74使用XML 高级编程
下载
你是否曾经考虑过使用表示法?由于我不希望限制应用程序使用D T D的行为,因此放弃
了这种方法。如果没有提供针对特殊类型的处理程序,表示法只是给数据类型定义了一
个名称。如果我指定了处理程序,就必须保证任何使用目录文档的应用程序有特定的行
为,例如:显示链接。而我的设计目标是无论应用程序是否有可视化的界面, D T D都应
该发挥同样的作用。
(3) 线索
我们已经完整而详细地分析了P u b l i s h e r元素的内容。在C a t a l o g内容模型中,下一个对象是
T h r e a d。以下是该元素的声明:
元素的内容是用于描述线索的文本。它可能是关键字列表(例如:对于Wr o x出版社来说,
元素的内容可能是A S P、D a t a b a s e、X M L、S c r i p t i n g等),或者更长的描述。属性t h r e a d I D用于在
图书与线索之间建立关联。
(4) 图书
下面我们将讨论最后一个元素—B o o k。它是D T D的核心。我们介绍问题模型时曾经给出
了图书对象的示意图,元素的声明完全是按照该图产生的:
Ti t l e元素和A b s t r a c t元素是# P C D ATA类型的。R e c S u b j C a t e g o r i e s元素的声明如下:
C a t e g o r y是# P C D ATA类型的。我们曾经说过,每本书都有三个推荐的主题域。实际上,每
本书有且仅有三个主题域。最简单的表示方法是利用D T D提供的元组工具,将内容模型说明为
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(31)