• 热门标签

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

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

7.8.1 为什么烦恼
我们的Book Catalog DTD出了什么问题?实际上,它正开始有起色。如果我们合适地验证
了目录文档,有关Book Catalog的每一样东西必须进入一个D T D。本章前面普遍应用我们特有的
D T D时,所有的批评都瞄准了D T D。
我们要做的第一件事是将出版目录范围分成两个分离的模式,一个反映处理作者的命名空
间,另一个处理目录信息。另外,我们能够对一些的属性和元素提供很强的分类,因此到了书
写处理目录的应用程序时,我们的工作变得更加轻松。因为XML 模式是一种流的状态,它接近
推荐书里的状态,我们将要在M S X M L里使用X M L - D R版本的模式。
1. 分割
在第3章见到的c a t a l o g . d t d给了我们许多概念。一个目录一定需要b o o k s,但如果作者存在目
录外面不是更好吗?毕竟,如果我们需要为标记每本书的的真实内容写一个模式,或许想同时
在这里包含作者信息。这就是将Book Catalog DTD分成两个独立的模式的主要动机: C a t a l o g和
A u t h o r。当我们想要创建一个目录文档,能够为Catalog 模式声明一个缺省的命名空间,然后使
用一个验证过的命名空间去引进Author 模式。
2. 附加的语法
在c a t a l o g . d t d里有几个属性,能够提供强大的分类功能。如果我们包含数据类型,它将非常
容易地用来计算总页数,我们将肯定喜欢能够从来自目录的一个定单计算定单总数。因此需要
仔细查阅Catalog 模式,看什么样的属性应该用类型信息检验。
3. 元数据发现
用X M L语法创建一个模式对于程序员非常有用,在那里为他们提供一些对编写程序的支持,
对此操作手册的目录文档根据我们的模式做了标记。我们提供的最大支持是简单地使D T D带有
模式表单形式。一旦它采用X M L语法,程序员能够使用相同的解析器,他们曾用它与X M L文档
实例一起来发现元数据背后的含义。
假设你不熟悉我们的模式。你能够用< d e f i n i t i o n >元素调查单个元素。这在文档浏览器里非
常有用。一个用户可能单击为得到特定条目的附加信息,查看与之相连的元数据。我们不愿意
表现X M L定义,当然如果一个条目是数值类型,我们可能会显示。在枚举的情况下,当然显示
条目能取的数值的范围。主要信息能够看到很重要,比如说一个属性是否是必须的。只要我们
用X M L语法提供一个模式,所有这些能够在文档实例被读到时发现。在我们将catalog DTD转成
230使用XML 高级编程
下载
一个模式之后,将显示能够怎样去使用D O M在模式里生成相互协调的元素。这些将采用一个模
式,同时提供给你一些参照元素以及它们是怎样使用的。
7.8.2 重铸DTD
仔细看一下我们的D T D。我们将做完一个到X M L - D R格式的转换,正像我们所做的,显示
对定义不断的改进。
对于XML-DR 模式文件扩展还没有明确的一致意见。M i c r o s o f t发起者趋向使用x m l,与此
同时,一个商业化可用的工具使用x d r。如我们看到的,W3C 模式工作组倾向为他们的模
式使用x s d。我将在下面的例子里使用x m l。无论什么情况,模式是X M L,于是它的M I M E
类型保留text/xml。
目录分成三个部分(参见图7 - 3):
• 有关出版者的出版商信息( P u b l i s h e r)。
• 包含描述信息的线索( T h r e a d s)。
• 包含有关书籍的信息( B o o k s)。
图7-3
出版商信息部分也包括作者信息细节,但是我们正打算删除作者信息,将它们放在独立的
作者模式里,于是我们能在目录模式里借用,并在其他地方使用它们。因此,在回到目录的其
他部分之前,让我们从作者模式开始。
1. 作者模式
我们应该首先看一下作者模式,这是因为接下来建立的目录模式将要从它那里借鉴些内容。
第一件要做的事是去掉< A u t h o r >元素声明和一切从属于它的东西,建立新的模式文件—
a u t h o r s . x m l。文件开始应该声明与XML 1.0的一致性,命名模式以及声明X M L - D R和数据类型命
名空间:
程序清单7 - 3 8
缺省的命名空间是X M L - D R以及数据类型命名空间将用前缀d t加别名。A u t h o r元素是我们的
第7章命名空间和模式使用231 下载
起点。它只是依次包含与名称相关的、< B i o g r a p h i c a l >和< P o r t r a i t >元素等元素内容:
在X M L - D R里,这些变成了:
程序清单7 - 3 9
我们为a u t h o r C i t e I D保留了XML ID类型以用来保存作者和书籍之间的连接。注意特别是在
M I上的重要部分。它可能出现零次或者一次,这就是说,它是可选的。现在声明< A u t h o r >的子
元素:
程序清单7 - 4 0
关闭最高级< S c h e m a >元素和你已经做了。现在你有一个可以重用的模式,它能被引进我们
标记作者元素信息的任何地方。
2. 目录模式
既然从目录D T D移走了作者信息,将它们放在单独的模式里,我们将注意力转向重建X M L
里的目录数据。我们将称这个模式为P u b C a t a l o g . x m l。当需要包含作者细节时,这些将从作者模
式借用过来。这里是开放的信息:
程序清单7 - 4 1
注意怎样为我们新建立的作者模式—a u t h o r s . x m l用别名前缀a t h r添加一个命名空间。
让我们深入研究一下:我们以< C a t a l o g >元素开始,它包含其他信息。这里包括< P u b l i s h e r >、
< T h r e a d >和< B o o k >元素,就像我们在早期的c a t a l o g . d t d里有过的那样,其中的每一个可能出现
232使用XML 高级编程
下载
很多次:
程序清单7 - 4 2
下面我们需要声明i s b n属性,它将用在我们刚刚声明的< P u b l i s h e r >和< B o o k >元素里:
(1) 出版商
我们需要着手的下一部分是刚刚声明的< P u b l i s h e r >元素的内容。它还包含在D T D里看到的
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(84)