XML简明教程(7)
目录
发展历史
XML和HTML对比之可扩展
XML和HTML对比之语法细节
XML验证之DTD
XML名称空间
XML语法结构
XML验证之Schema
DOM4J读写配置文件
关于SLT
XML验证之Schema就像前面的文章所说的,通过DTD我们可以很容易的判断要验证的XML是否符合我们所定义的规范(元素之间的关系,属性的取值是否正确)但是如果要验证元素的内容DTD就无能为力了,于是人们研究了新的验证方法——Schema。
除了上面的优势之外Schema相对于DTD而言更令人兴奋的是其自身就是一个良好形式的XML文档,这样一来编写Schema就非常容易了。相对于自己有一套独立的语法的DTD而言,无论是编写还是维护起来都是非常困难的。
一个Schema文件就是一个XML文件所以所编写一个XML对应的Schema的过程就是对照着XML写XML,这样的话编写Schema是非常容易的。下面演示如何对照XML编写其对应的Schema
原XML文件(test2.xml)
对于上面的这个XML下面我们开始创建一个Schema。遵从的原则就是原来的XML怎么写那么其对应的Schema就怎么描述,就像你在和一个人面对面的描述一样。Schema代码如下(shiporder.xsd)
代码解析:第一行是所有XML的声明无需赘述。
第二行为此XML(Schema本身就是一个XML)定义了一个命名空间。
从第四行开始才是对原XML的一些要求:
首先定义了根元素为shiporder(行4),其次因为shiporder元素有一个属性,其中包含其他的元素所以其为复合类型(行5)。然后通过sequence元素按照顺序包围其子元素(行10---行15),描述元素的名称以及元素的类型(行11----行14),如果需要描述元素的限制条件(行22)。描述根元素的属性,由于是必选属性所以选择required关键字,需要注意的是这个属性必须放在最后(行29)
通过Schema验证XML的代码和前面文章中的DTD验证大同小异,代码如下:
如果原XML文件符合Schema文件中的描述则返回true;否则抛出异常进行描述哪里不符合,并且返回false。(具体的操作可在实际工程中自行定制,这里只是进行简单的描述)