admin 管理员组

文章数量: 1086019


2024年4月20日发(作者:web开发培训能学会吗)

维普资讯

结构化XI 文档 

新的XML模式标准比传统DTD定义更好 

当 X文M档类L标准型定义(和工具D越来TD)越成熟时.设计XML文件的传统的方使用法逐 

会指望DTD会在不久的将来消失.有足够的理由让 

I 也增加了XML实体的灵活性。对于我们的 

Story实体来说,Author既可以是一个人的姓名也可 

渐让位于新颖而功能更强的手段:XML模式(1 0 

以是新闻机构的名称。这些元素在一起工作得很 

版本的XML模式规范已经在2001年5月得到W3C的 

好.我们可以用任何一种XML解析工具来根据该模 

认可.1 1的版本也在审阅之中)。当然.没有人 板实例化我们的XML故事实体。 

使用DTD来设计XML数据结构没有任何问题. 

但确实它也存在一些不足。首先.DTD本身不是用 

XML写的,当你要在网络程序中创建或修改XML实 

体时就会遇到问题。例如.在基于XML的B2B应用 

程序中,一台服务器需要与其他服务器进行交流 

(比如在一组网站之间同步Story实体).这时候 

如果能在服务器代码中直接操作x 设计就会非常 

方便了。XML模式规范恰恰就是要解决这个问题. 

它将文档的设计纳入了 九框架.这样你就可以使 

用XMLI具来设计数据的结构以及数据本身了。 

我们相信在可以预见的将来人们会同时使用这两 

种标准。不过即使你不需要自己设计新的文件类 

×ML模式会节省时间 

x 解决方案的另一个显著特点就是它的可扩 

型.为了能够适应诸如网络服务等不断使用XML模 展性:你可以从老版本中获取和派生出新的模 

式的新标准.你也需要对其有足够的了解。 

文档类型定义(DTD)是XML中最初使用的工 

式。重复使用是一个巨大的优势。事实上.基于 

九模式的文档本身就是可以扩展的,这意味着时 

间的节省和设计的改进。例如.你可以设计一个 

XML模式规范同时也让你能很方便地控制文档 

中数据的类型和范围。看一下图2.图中显示了我 

具。基于原始的标准广义标记语言(SGML). 

型和元素属性顺序等项目来定制自己的文档类型 

结构。这些具体规范构成了创建基于DTD的文档的 

DTD允许用户通过指定XML域或实体中的数字.类 电话号码XML模式在你的整个公司中使用。 

基础。实际上.DTD是一种文档模板.而具体文档 们的Story实体的x 模式。DTD肯定会要求你指定 

则根据DTD的设定具体填充各个域。让我们来看一 

字符型数据.而XML模式提供了更广泛的预定义数 

个例子。 

据类型.包括整型、字符串.日期和布尔型,这 

图1显示了一个简单的DTD例子.它用于一个 些都可以在XSD文件中看到(这些类型也被叫做简 

假想的基于内容的网站.用来描述一则故事。在 

单类型)。你也可以用正则表达式来创建模板, 

DTD中,缺省条件下每一个被声明的元素都要有一 

用于电话号码.枚举类型的值和数值型数据的精 

XML解决方案的另一个显著特点就是它的可扩展性: 

你可以从老版本中获取和派生出新的模式 

个实例.但使用?、+和・后缀可以让你指定元素 

确控制(包括允许的数值范围)。复杂的数据类 

的基数(可能的实例个数)。在元素名后面加 

型(包含子元素和属性值)可以在新的x 设计中 

上7.比如MI7.就可以允许零实例或者一个实例

, 

复用。 

这两者是可以自由选择的。而storyParagraph+中的 

+就允许一个或多于一个的实例。KeyWord*

 ̄lJ表示 

毫不奇怪.这些强大的功能意味着你要学>-j 

更多东西。XML模式必然有更复杂的语法。不计算 

可以有零个或多个实例。不仅如此.管道操作符 

空格,我们的例子使用DTD文件大概有60。个字符 

1 38 PC Magazine Chinese Edition November 2002 

维普资讯

技术与应用【internet技术 

和25行.而XSD版本有大概2倍的字符(1 200个字 

符左右)31339行。你有可能在一个下午就可以学 

-= ̄OTD的基本用法.但是XML模式要复杂得多。不 

过虽然有了很多新的特性.× 模式的基本要领还 

是很容易掌握的。接下来.让我们来看看设置基 

本元素及基数的方法。 

设置× 模式的经验方法是使用属性来控制哪 

些元素是可选的.哪些元素是必需的.这样就比 

使用DTD要容易表达和解释得多(当然你需要多敲 

些代码).那些晦涩的指明基数的字符不见 

了.取而代之的是你只需要用mi nO C C u r S和 

maxOccurs属性来设定元素允许的最小和最大值就 

可以了.在我们的例子中.minOccurs= 0 而 

maxOccurs= Irba nded。

表示该元素的实例个数 

不受任何限制. 

命名空间的差异 

命名空间的使用可能会在一开始造成一些麻 

烦(命名空间也可以用-T-OTD,虽然不太容易.但 

它是学 ̄JXML模式所必需的).XML的命名空间是 

个元素类型和属性名称的集合.用一个唯一的 

名称URI进行标记。命名空间用于区别不同的XML 

字典和× 模式。这样做的目的是为了避免不同机 

构定义了相同名字的实体造成的冲突.或者用在 

需要复用XML ̄t的地方.在w3C的相关文档中包 

含模式定义(<xs:schema ̄rnlm:xs="http://www,w3. 

org/2001/XMLSohemaw>)指明了已被定义的元素和‘ 

标记的集合.为了把它们和其它元素区别开来. 

我们在设计中使用全名.比如:xs:element.XS: 

string.和xs:date。 

命名空间也可以用来解决其它类型的冲突. 

从各个渠道获取XML模式并将其用于新的设计中是 

新标准最吸引人的设计原则之一.例如.一个旅 

游网站可能在Story实体中加入了标题标签.而另 

个体育网站可能会定义自己的标签的版本.假. 

象的网络开发者所熟悉.如果你没有这方面的基 

设一个媒体公司买下了这两个网站(现实中还没 

础.你可能需要一些时间来适应了。 

有看到这种例子).如何在媒体公司的模式中处 

你应该注意 ̄Jxml模式还没有提供对所有工具 

理这两种定义呢7在媒体公司的× 模式中需要指 

的支持(像常用的SAX解析器)。不过这个问题很 

明旅游和体育网站的URI.这样使用类似t rave I: 

快可以解决。你可以使JEI]W3C提供的在线版本来 

Headline和sports;Headline的标记就可以将二者区分 

做实验.请参见WWW w3.org/2001/03/webdata/ 

开来。在XML模式中.一般的标记都会带有表明其 

来源的前缀。 

XSV

这个工具可以帮助你上载XML模式和对应文 

档.然后判断你的文档是否符合模式的要求。同 

你可以在新文档中使用从其他模式中继承过 

时新版本的微软Visual Studio.NET也提供了对XML 

来的复合类型。例如.我们可以从旅游网站的 

模式的支持(我们使用NET_T_.具构建了图2中的 

story ̄派生出一个新的文档类型:PDAStroy

因为 

XSD文件.并JEI]W3C的在线工具进行验证). 

我们得根据手持设备量身订制信息内容

新的 

story格式会增加用于小号照片的域和能正确显示 

的标题栏. 

XML模式和网络服务 

我们知道.除了× 模式还有其他的方法来定 

这种可扩展性是很有用的.并且也为面向对 

义×ML文档(比如schematron和ReIa×NG) 但是 

维普资讯

XML模式作为W3C官方的标准赢得了足够的关注。 式的回应。通讯双方自然都会建立新的文档类 

络服务工具需要建立新的XIVI_数据类型来管理服务 

XML

同时.XML网络服务的发展很可能意味着现在是提 

型.这些文档是基于XML模式的,而不是DTD。网 

供基于XML的文档设计方案的好时机。 

流,而不用考虑其操作平台.网络服务本质上提 

供了分布式计算的解决方案。网络服务描述语言 

通过允许独立的服务器在网络之间使用XML交 器之间的会话,它们之间的语言自然而然应该是 

。 

无论你是处理基于内容的系统.从不同机构 

(WSDL)和简单对象访问协 

获取XML文档或者是搭建网络服务,XML模式都大 

议(SOAPl这两个基于XML的 有用武之地。虽然这种技术要比DTD复杂些,但是 

标准已经集成到网络服务中 XIVI_模式可以提供更强大和可扩展的方式来定义文 

VI_交互的应用来说也很重要。既 

来。WSDL文档描述了特定网 

档.而且对于以XI

络服务中可以调用的函数,而 

XML中通过SOAP包将信息发送 

然你从网络服务的发展中可以预见XML模式的盛 

行,现在就开始学习XIVI_模式和它的工作方式会使 

到远端服务器.并接受XML形 你和你的公司从XML中获得更多好处。口 

140 PC Maga西ne Chinese Edition November 2002 


本文标签: 模式 文档 元素 使用 设计