• 热门标签

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

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

一套语法,与文档实例的语法截然不同。更重要的是,如果X M L解析器能够使应用程序简便地
访问它们所处理的D T D中的声明,就会使D T D成为一种非常有用的工具。遗憾的是,目前几乎
没有解析器能够做到这一点。这一现状妨碍了我们利用D T D验证文档的有效性,以及将相应领
域的信息传达给编程人员。我们的应用程序无法了解D T D中的声明及其结构。
类似地,我们不能使用解析器动态创建D T D。这似乎不是一个重要的限制。毕竟, D T D被
认为是恒定不变的定义,而不像动态建立的文档那样需要进行有效性验证。即使如此,仍然有
一些需要根据条件做出选择的情况,例如:根据某些值改变词汇表规则。我们可以从数据库读
取当前值,并据此构建D T D。该D T D可以用来创建一系列文档,这些文档在当前状态下是有效
的。然后,D T D将随文档一起传送,以便接收者根据文档创建时的环境状态验证文档的有效性。
D T D提供的条件选择结构不能实现上述功能,因此不得不动态创建D T D。如果缺乏解析器的支
持,我们只能手工创建D T D。
D T D是一种封闭的结构。X M L词汇表的规则完全包含在D T D中。如果你不需要从其他D T D
借用声明或结构,或许感受不到这方面的局限性。由于实体处在一个很低的层次,因此试图改
善D T D扩展性的工作往往徒劳无功。事实上,没有简明的方法能够改善D T D的扩展性。对于可
扩展的标记工具, D T D也显得极不合作。我们无法根据概念和对象的相关性将声明分为若干段。
假如能够做到这一点,就可以创建许多描述各个商业领域的D T D,然后通过引用将它们粘合在
一起,以满足真正的应用需求。当我们在第7章讨论命名空间和模式时,会分析各种借用信息的
可能性。它涉及的内容超出了D T D的范围。
D T D在数据类型信息方面也存在一定的缺陷。它所提供的唯一工具就是表示法。我们无法
根据现有的类型定义自己的新类型。表示法能够为一种未解析文本标记一个名称,但是这与强
大的类型定义机制有着本质区别。我们希望将某些值表示为简单类型,例如:数字,而不是文
本,并对这些值执行恰当的操作。
在W 3 C提出弥补D T D不足的解决方案之前,已经出现了其他一些模式机制,我们将在第7章
介绍有关内容。然而,暂时不考虑D T D的缺陷, D T D是目前唯一一种声明X M L词汇表结构和内
容的正式方法。D T D是非常基础性的概念,它有助于理解其他模式,以及如何利用X M L通过标
准的方式交换文档。
第3章文档类型定义使用69 下载
3.5 用于图书目录问题的DTD
现在,让我们利用本章所学的内容为图书出版领域定义一个X M L词汇表。更明确地说,在
下面的例子中,我们将要定义描述图书目录的语法。从最通用的角度讲,我们的词汇表将涉及
一类图书。从最精确的角度讲,我们可以利用词汇表从整体上描述图书。我们将允许文档创作
者包含图书本身的目录。这似乎超出了我们的讨论范围。如果需要的话,我们能够提供某种形
式的图书文档链接,但是在进行图书分类时,确实没必要包含其目录。
3.5.1 图书目录问题的正式定义
我们首先来描述一下要建模的业务流程。目前,你还不必担心D T D。一旦理解了要处理的
业务流程,你就能够建立漂亮的模型,急于创建规则往往会影响你对问题本身的理解。我们要
做的第一件事情是设计问题空间的主要对象及其相互关系。
1. 问题模型
首先必须明确的是,我们要讨论的是一个目录。我们要描述的所有内容都包含在这个目录
中。我们不会涉及各个目录之间的关系,而仅考虑目录本身的内部关系。这有助于我们集中注
意力,我相信这是编写优秀的X M L词汇表的关键。
目录中包含一本或多本图书—这就是整个词汇表。如果我们停留在这样的认识上,会遗
漏什么问题吗?图书是由出版社出版的,因此我们应该在目录中包含出版社。一个出版社就够
了吗?当然。这就意味着一家出版社至少需要一个Book Catalog文档。虽然它也可以有多个文档。
出版社有时会涉猎多个领域。这对我们的模型有影响吗?它们是如何组织的?通常,目录是根
据主题组织的。而主题是出版社出版的内容。如果一家出版社拥有大量书籍,它会根据某些主
题或知识领域划分出更细的目录。
就问题本身而言,并不需要包含多家出版社。但是既然谈到这个因素,你可能会考虑谁还
有可能使用该模型。图书馆或图书收集者会有同样的需求,他们需要根据主题来描述图书。图
书销售商也有类似的需求。这三类用户需要在他们的类别中包含多个出版社。通过这方面的修
改,为该模型创造了更多的应用机会。这种修改通常意味着你遇到了问题。你可能转移了问题
的方向。然而,在本例中却不是这种情况。我们仍然能够满足单一出版社的需求。无论有多少
出版社,在出版社信息之后,文档包含的依然是一系列图书摘要。从“有且仅有一个”出版社
变为“一个或多个”出版社使得我们的模型更加灵活,同时并不影响我们要描述的内容。
主题是什么?它是用于组织知识或讨论的线索。它类似于新闻组中的线索。主题或线索通
常可以从书名或书的目录获得,但是我不希望采取这种方式。线索应该有自己的描述性信息。
到目前为止,我们得到了图3 - 1所示的组织图。
在我们的模型中,一个目录包含一家或多家出版社、零个或多个线索,以及一本或多本图
书。现在,我要讨论两个问题。它们都是关于我对问题空间所做的假设。第一个问题是元组的
数目。为什么我会认为图书和出版社可以是“一个或多个”,而线索甚至可以不出现?不包含任
何书籍的图书目录是一种极端情况,只有数学家会对此感兴趣。我们基本上不会对空集有兴趣
——如果目录为空,有什么必要讨论它吗?这是个具有实际用途的词汇表,而不是理论意义上
70使用XML 高级编程
下载
的。然而,词汇表中可以没有用于组织图书的出版社线索。
图3-1
谈到出版社,又出现了一些不太明确的问题。有些情况下,我们只对目录中的书感兴趣。
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(29)