XML Schema是一个基于XML的语法或schema规范,用来定义XML文档的标记方式。XML Sc hema是一个由Microsoft建议的schema规范,它与文档类型定义(DTD)相比具有很大的优势,而DTD是最初用来定义XML模型的schema规范。DTD存在很多缺点,包括使用非XML 语法,不支持数据类型定义,不具有扩展性等。例如,DTD不允许把元素内容定义为另外 一个元素,或字符串。想了解更多有关DTD的内容,可以参考W3C XML建议书。 XML Schema从几个方面改善了DTD,包括使用XML语法,支持数据类型定义和名域。例如,XML Schema允许你把一个元素说明为一个integer, float,Boolean, URL等类型。
在Internet Explorer 5中的XML解析器可以解析使用DTD或XML Schema的XML文档。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)如何建立XML Schema?
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)请在下面的XML文档中找一找每个节点的schema声明。
class xmlns="x-schema:classSchema.xml" student studentID="13429" nameJane Smith/name GPA3.8/GPA /student /class
你会注意到在上面文档中默认的名域是x-schema:classSchema.xml。这告诉解析器根据URL(classSchema.xml)上的schema(x-schema)来解析整个文档。
下面是上面那个文档的完整的schema。注意schema的根元素中的名域声明。第一个(xml ns=urn:schemas-microsoft-com:xml-data)表明这个XML文档是一个XML Schema。第二个(xmlns:dt=urn:schemas-microsoft-com:datatypes)允许schema处理者在ElementType和AttributeType声明中的type属性前加dt前缀来说明元素的类型和内容的特征 。
Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-mi crosoft-com:datatypes" AttributeType name='studentID' dt:type='string' required='yes'/ ElementType name='name' content='textOnly' ElementType name='GPA' content='textOnly' dt:type='float'/ ElementType name='student' content='mixed' attribute type='studentID'/ element type='name'/ element type='GPA'/ /ElementType ElementType name='class' content='eltOnly' element type='student'/ /ElementType /Schema
用来定义元素和属性的声明元素如下所示:
元 素
说 明
ElementType 把类型和条件赋给一个元素,可以包含子元素 AttributeType 把类型和条件赋给一个属性 attribute 声明以前定义过的属性类型可以出现在名为ElementType的元素的作用域中 element 声明以前定义过的元素类型可以出现在名为ElementType的元素的作用域中Schema的内容以最深层的元素的AttributeType和ElementType声明开头。
AttributeType name='studentID' dt:type='string' required='yes'/ ElementType name='name' content='textOnly' ElementType name='GPA' content='textOnly' dt:type='float'/
ElementType声明后接着就是它的属性和子元素,如果一个元素有属性或子元素,必须把 这种方法包含在它的ElementType声明中,或者是必须在它们自己的 ElementType 或 ttributeType声明中进行前导声明。
ElementType name='student' content='mixed' attribute type='studentID'/ element type='name'/ element type='GPA'/ /ElementType
不同于DTDs,XML Schema允许有一个开放的内容模式,你可以进行定义数据类型、使用默认值等等操作而不必限定内容。