| XML及其技术指南 |
|
作者:Brian 文章来源:yesky 点击数: 更新时间:2004-9-11 11:20:14  |
|
XML的核心技术
直到现在,你已经完全可以创建使用属于你自己的XML文档了。然而,XML真正的潜力却在于它所支持的多项技术。你完全不必为此去使用本文以下所讨论的所有技术。但它们的出现可以帮助你理解这些技术是怎样作为整个XML策略的一部分被组合在一起的。
确认技术
你已经知道了XML为描述结构良好的文档提供了一整套灵活的语法。正因为它的这种灵活性,我们需要一些方法来确认某一种特殊类别的XML文档都有我们所预计一种格式。例如,以下就是一个结构良好的XML文档:
<?xml version="1.0"?> <hamburgers> <hamburger lowfat="dream on"> <hamburger lowfat="maybe"> <name>CowBurger</name> <description>Greasy and good.</description> <price>2.99</price> <price>3.99</price> </hamburger> </hamburger> </hamburgers>
| 然而,这个文档有一些应用级的问题。注意到了吗,文档中一个hamburger元素出现在了另一个hamburger元素的里面。请别担心,对于这个例子来说这个XML结构没有任何的错误。另外,请注意在里层的hamburger元素中有多个price元素。哪一个price是正确的呢?系统有可能会显示出这里有一个Bug。在这种情况下,一个标准的确认XML文档的机制将是十分有用的。
schema
一个schema通常是一组为了描述一类给定的XML文档而预先定好的规则。它定义了可以在指定XML文档中出现的各个元素以及和某个元素相关的若干属性。它同时定义了关于XML文档的结构化信息,比如哪几个元素是其他元素的子元素,子元素出现的顺序和他们的数量。它还可以定义一个元素是否为空,能否包含文本或者属性是否有默认值。
DTDs(Document Type Definitions)和XML数据 都是怎样描述XML文档计划的具体例子。
文档类型定义(Document Type Definitions)
DTD语言是为了定义SGML文档的确认规则而专门开发的。因为XML是SGML的一个子集,所以DTDs也可以用来定义XML的确定规则。与XMLschema不同,一个XML处理器可以在运行时用DTD来确定一个XML的合法性。
DTD的语法有时可能会有一些晦涩难懂。DTDs使用不同的语法元素,诸如惊叹号、圆括号、星号、尖括号等,来定义在一个XML文档中那些元素是必备的,哪些是可选的以及可以出现的元素数量等等。DTDs同时还定义了元素之间的关系和属性于不同元素之间的关系。
下面就是前面列出的hamburger.xml的DTD(hamburger.dtd):
| <!ELEMENT hamburgers |
(hamburger)*> |
| <!ELEMENT hamburger |
(name, description, price)> |
| <!ATTLIST hamburger |
lowfat CDATA #IMPLIED> |
| <!ELEMENT name |
(#PCDATA)> |
| <!ELEMENT description |
(#PCDATA)> |
| <!ELEMENT price |
(#PCDATA)> | 这篇文档指出,hamburgers元素可以包含多个hamburger元素。同时,每一个hamburger元素必须包含一个lowfat属性和三个子元素,所有的类型都是#PCData(parsed character data)。遵从这篇DTD的文档都必须加入下面一行代码:
<!DOCTYPE hamburgers SYSTEM "hamburger.dtd">
这句声明告诉分析器不论DTD中的schema是什么都认为XML文档的内容是合法的
尽管MSXML 2.0支持DTDs,但是你还是会发现使用它们是很费力的。它非常复杂并且难于掌握与使用。请注意,DTD语法并不是合法的XML。正因为如此,XML的处理器除了XML语法,还要支持用来描述schema的DTD语法。设想一下,假如我们用XML来描述schema,那么开发者,特别是XML工具的提供者,所承担的XML文档检验工作将会变得容易得多。W3C正在考虑几种弥补DTDs不足的方案以提高现在的语法定义过程。
XML数据
XML-Data是一种XMLschema语言。在微软的定义中,XML-Dataschema通常是指XMLschema,而不是DTDschema。一个XML-Dataschema是一个具有良好结构的XML文档。XML-Data语言基于XML-Data DTD,后者指明所期望的schema定义格式。因为XML-Dataschema是简单的XML文档,任何用于XML文档的工具都可以用来定义XML-Dataschema。
以下的XML-Dataschema产生的schema和先前由hamburger.dtd所定义的schema是一样的:
<?xml version="1.0"?> <Schema xmlns="schemas-microsoft-com:xml-data"> <ElementType name="name" /> <ElementType name="description" /> <ElementType name="price" /> <AttributeType name="lowfat" /> <ElementType name="hamburger" /> <element type="name" maxOccurs="1" /> <element type="description" maxOccurs="1" /> <element type="price" maxOccurs="1" /> <attribute type="lowfat" maxOccurs="1" /> </ElementType> <ElementType name="hamburgers" model="closed"> <element type="hamburger" maxOccurs="*" /> </ElementType> </Schema>
| 在XML-Dataschema中定义元素和属性时,分别用到的是<ElementType>和<AttributeType>元素。它们提供了对元素和属性类型的定义。定义一个元素或是属性时用<element>或<attribute>标签。你可以通过定义minOccurs/maxOccurs来指定元素允许出现的数量。schemaXML结构还定义了元素在XML文档中允许出现的位置(例如一个<hamburgers>元素可以包含若干<hamburger>元素,等等)。
微软通过MSXML 2.0对XML-Data提供支持。根据微软的XML SDK文档,捆绑在IE 5中的XMLschema的实现基本上依托于W3C于1998年1月发布的XML-Data Note。它提供了对XML-Data子集的支持,这虽然和XML的语法稍有不同,正好直接和DCD中阐明的功能相吻合。
上一页 [1] [2] [3] [4] [5] [6] [7] 下一页 |
| 文章录入:admin 责任编辑:admin |
|
上一篇文章: Java与XML联合编程之DOM篇
下一篇文章: XML和JSP交互技术 |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |