XML语法大全(7)

2019-03-28 21:01

这个保存为dvd_embedded_dtd.xml的文件可以在资源文件中找到。 内部和外部DTD也可以同时使用。如果在元素和属性定义中有冲突发生,以内部DTD为准。

使用外部DTD的情况比较常见。这种方法可以用一个DTD文件来验证多个XML文档的有效性,也使DTD和文档实例更易于维护。

嵌入的DTD可以用来重载外部DTD。这与用嵌入的CSS声明来重载外部样式表非常类似。

如果应用DTD的文档是孤立的,使用嵌入的元素和属性声明会更加简单方便。即使不需要定义元素和属性,还是有可能需要定义实体的。

注解 如果包括一个对外部DTD的引用,且该DTD中含有实体定义,则必须将XML声明中的standalone

属性设置为no:

现在再来看看另一个更为常用的XML有效性判断语言——XML模式。

2.2.2 XML模式

XML模式与DTD有很多相似的地方。例如,两者都用于确定XML文档的结构。通过阅读http://www/w3.org/TR/xmlschema-0/上的W3C初级文档可以了解更多关于XML模式的内容。

DTD与XML模式也有很多不同。首先,XML模式语言是XML词汇的一种。XML模式比DTD功能更强,包含很多概念,如数据类型和继承等。然而,与DTD相比,

它们的构造也更为复杂。另一个缺点就是XML模式没有提供与DTD实体声明相同的功能。

关于XML模式的一个重要方面就是,在XML文档中,模式处理程序是一个个地验证元素的有效性的。这就使不同的元素可以依据不同的模式进行有效性验证,也使逐个地验证每个元素的有效性成为可能。如果文档中的每个元素根据适当的模式都被验证为有效的,则这个文档就是有效的。

这种元素级别的有效性验证有一个缺点,即XML模式并不提供确定文档元素的方法。因此,如果元素都是有效的,文档就是有效的,而不管其中是否包含了文档元素。

首先看看描述dvd.xml文档结构的模式:

直观看来,这个模式与此前的DTD有着很大的不同。最明显的区别就是,模式是基于标签的并且使用命名空间。由于是通过使用XML来创建模式词汇,因此可以利用一些标准的XML创建工具。XML模式也包含了一些适用于元素和属性的数据类型。例如,id属性使用的数据类型是xs:integer。

现在我们通览一遍这个模式文档。它以一个标准XML声明开始。文档元素称为schema,其中包含了一个到XML模式命名空间http://www.w3.org/2001/XMLSchema的引用:

按照惯例,这个命名空间通常用前缀xsd或xs进行关联。本例中用的是xs前缀。

这个模式中使用的是Russian Doll符号,其中元素的声明位于文档的相应位置。也就是说,元素声明的嵌入点也预示着元素的相对位置。将模式文档组织成其他形式也是可以的。

第一个定义的是文档元素。由于它是元素的子元素,因而有着全局的作用域。也就是说,该元素的定义在XML模式内部的任何位置都是可用的。可以在模式文档内部的不同位置重用该元素的定义。全局元素也可是一个有效的文档实例的文档元素。

定义包括如下内容:

这些声明将元素定义为复合类型(complex type)元素,这就表示它会以某种顺序()包含某些其他元素。复合类型元素包含其他的元素或者至少一个属性。因为元素包含了该文档中所有其他的元素,所以必须将之定义为复合类型元素。稍后会演示一个声明简单类型元素的例子。

通过使用声明了元素包含了一系列的子元素。这可能看起来有点奇怪,因为它只是包含了可能不断重复的一种元素。也可以通过使用来指定从一组元素中选择一种,也可以使用来表明以任何顺序选择所有元素。

元素只包含一种元素,它可能出现至少一次,也可出现多次。这可用下面的方式来声明:

如果元素恰恰只出现一次,就可以省略掉minOccurs和maxOccurs属性。 元素包含子元素,因此它是包含其他元素的复合类型元素,同样在顺序上有:

子元素是简单类型的,因为它们只包含有文本。如果它们包含属性,它们就会自动成为复合类型元素,但是此文档中唯一的属性包含于元素中。

通过指定名称和数据类型就可定义简单类型元素:

XML模式推荐标准中列出了44条内建的简单数据类型,包括string、integer、float、decimal、data、time、ID和Boolean。在http://www.w3.org/TR/xmlschema-2/中可以了解更多关于这些数据类型的内容。也可以自己定义复杂数据类型。

元素还包含一个属性id,它定义于子元素序列之后。所有的属性都是简单类型元素,并且除了特别指定外都是可选的:

可以对属性值加上约束条件以限制元素的可能取值范围。 图2-1在Altova XMLSpy中并列地显示了XML文档和模式。

图2-1 XML文档及其相关模式

1.可选的布局

在上个例子中,只有元素被定义为元素的子元素,因而它是唯一具有全局性的元素。如果希望其他元素具有全局性,那么可以通过使用ref属性改变它们的定义方式。

下面的代码是经过重写的模式文档,它使元素成为全局性元素。

可以在资源文件中找到保存为dvd_global.xsd的文档。

重写的模式文档变化不大。整个元素的声明原先是被包含于声明内部的,现在它是元素的子元素了。这就意味着,任何其他的定义都可使用ref关键字访问这个声明。在上面的代码列表中,变化了的部分以粗体显示。在图2-2中可以看到XML文档及其可选的模式。


XML语法大全(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:南开中学初2016届14-15学年(上)期末试题——物理

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: