导读:DTD是对XML文档进行有效性验证的方法之一,事实上,继DTD之后,出现了用来规范和描述XML文档的第二代标准:Schema。Schema是DTD的继承,但是也有其不同的地方,它是真正的以独立的文档存在,并且使用语XML文档相同的语法。本篇博客,则系统的介绍Schema文件。


1.1,不遵守XML语法

DTD文件并不是XML,它有着自己特殊的语法,这样,在实际使用XML文档时,需要掌握两种语法,还要两种不兼容的解析器:一套解析XML,一套解析DTD,用解析完了的DTD文档,去验证XML文档是否有效。

1.2,提供的数据类型有限

XML已成为网络语言的主流之一,它的应用越来越广泛,对于数据类型的要求也越来越多。但是,DTD规定的文档内容都是字符型数据,像整形、浮点型、布尔型的数据类型是无法提供的。

1.3,扩展困难

首先,DTD的内容模型是封闭的,扩展的内容是不能随意的,否则将导致文档无法被解析。其次,DTD自身的扩展机制相当的脆弱和复杂,而且并不能清楚的表达相互之间的关系。两个有着完全相同内容的元素,相互间完全独立,无法联系。

1.4,不支持命名空间

XML的命名空间是XML能够广泛应用于网络的基础,它为文档的编写和应用程序的实现提供了相当灵活的机制,但是DTD不支持命名空间。这就导致一个DTD文档可以被多个XML文档引用,但是不同的DTD不能同时对一个XML文档进行规定,对XML的继承性和重用性带来了极大的限制。


二、Schema的优势

Schema的优势,正是弥补了DTD的几个明显的不足。Schema文件使用XML语法、提供多种数据类型、支持命名空间,拥有更为灵活和强大的定义能力,比如:规定XML文档中多个元素出现的先后顺序,规定某个元素出现的次数,规定某个元素或属性的数据类型和取值范围等。


三、XML Schema的特点

3.1,Schema模型

XML Schema一共有两种重要的模型:Microsoft XML Schema和W3C XML Schema。

Microsoft模式结构:

<Schema name="schema-name" xmlns="namespace">

        元素声明部分或属性声明部分

</Schema>

W3C模式结构:

<xsd:schema xmlns="namespace">

        元素声明部分或属性声明部分

</xsd:schema>

3.2,Schema特点

一致性(使用XML语法)、扩展性(引入了命名空间、数据类型)、互换性(不同的Schema互换实现高层次的数据交换)、规范性(利用元素的内容和属性来定义整体结构)、数据类型多样性。


四、制作Schema文件

4.1,Schema文件

4.2,与Schema文件对应的XML文档


五、总结

我想说的是,就调试这个Schema文件,昨晚搞到了快凌晨,今早上又搞了半小时。查了查怎样通过Schema文件去验证xml文档的有效性,然后回头去看了看DTD文件的验证。但是我改了好几个地方,它本身按照类型文档的定义,是不能通过验证的,但是它还是显示出来了。不知道为什么?然后就猛然想起,之前总结过的,没有有效性验证的XML文档也是允许的。不知道和这个有没有关系?

然后,在DTD中,只要引入了一个dtd文档类型文件,就可以验证xml文档,设置顺序和格式,这些一旦修改就是会报错的。但是在Schema验证的过程中,都没有。我查了一下资料,我现在都怀疑,我只是将这个Schema文件和这个XMl文档关联上了,但是并未开始真正的验证。因为Schema和xml文档,都是一个正常编写的xml文件,所以就想着能够正常显示也算正常。

现在会基本的编写Schema文件和xml文档,对于XSL的应用不是很熟练,但是,我上网查了一些xml、Schema、xsl、dtd等文件,我现在是能够看得明白,然后也能根据xml文档写Schema文件等,我想这还是达到了我最开始的目的的。接下来,可能就是当前阶段总结xml的最后一篇博客:HTML和XML的混合使用了。以后还会总结xml文档中的导航语言XPath,还有XML和HTML以及本身的快速转换。


相关文章:

  • 2022-12-23
  • 2021-05-26
  • 2021-12-18
  • 2022-12-23
  • 2022-02-17
  • 2022-01-04
猜你喜欢
  • 2021-05-27
  • 2021-12-28
  • 2021-09-21
  • 2021-09-23
  • 2021-07-21
  • 2022-12-23
  • 2021-07-31
相关资源
相似解决方案