写在前面的话,很多文章里面把schema和XML Schema当成了一个东东,其实schema或XML schema泛指XML文档的模式,而XML Schema是schema中的一种。除XML Schema以外,DTD也是一种schema。
在XML Schema出来之前,我们一直使用的是DTD来定义XML结构的方式。而DTD对于XML Schema来说最大的不足就是:DTD只能把内容类型定义为一个字符串。而XML Schema允许你把内容类型定义为整型、浮点型、数据型、布尔型或者许多其他的数据类型,而无须重定义。并且DTD的语法复杂,并且它不符合XML文件的标准。
其实通过一个简单的代码就能看出区别:
XML 文档:
<
ID
>
k123456
</
ID
>
DTD:
<!
ELEMENT ID (#PCDATA)
>
XML Schema:
<
element
name
='ID'
type
='ProductCode'/>
<simpleType name ='ProductCode' base ='string'>
<pattern value ='[A-Z]{1}d{6}'/>
</simpleType >
通过上面我们看出,XML Schema片段中检查元素ID 的首字符是否为 A 到 Z 之间的字母,后面为六个阿拉伯数字。相反,DTD只是检查这些元素是否用字符串表示。 简单的说DTD只能说明XML"哪个在前面,哪个在后面,那个一定有,哪个可以没用"这些结构,而不能说明"这个只能是数字,那个性别只能是男或女"这些数据类型的东东。
<simpleType name ='ProductCode' base ='string'>
<pattern value ='[A-Z]{1}d{6}'/>
</simpleType >