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
版权声明:本文标题:结构化XML文档 新的XML模式标准比传统DTD定义更好 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1713559722a640750.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论