什么是XML?Schema??
XML?Schema是一个基于XML的语法或schema规范,用来定义XML文档的标记方式。XML?Schema是一个由Microsoft建议的schema规范,它与文档类型定义(DTD)相比具有很大的优势,而DTD是最初用来定义XML模型的schema规范。DTD存在很多缺点,包括使用非XML语法,不支持数据类型定义,不具有扩展性等。例如,DTD不允许把元素内容定义为另外一个元素,或字符串。想了解更多有关DTD的内容,可以参考W3C?XML建议书。?XML?Schema从几个方面改善了DTD,包括使用XML语法,支持数据类型定义和名域。例如,XML?S?
chema允许你把一个元素说明为一个integer,?float,Boolean,?URL等类型。在Internet?Explorer?5中的XML解析器可以解析使用DTD或XML?Schema的XML文档。如何建立XML?Schema?请在下面的XML文档中找一找每个节点的schema声明。?
?
???????
?????????Jane?Smith?
?????????3.8?
??????
?
你会注意到在上面文档中默认的名域是“x-schema:classSchema.XML”。这告诉解析器根据URL(“classSchema.XML”)上的schema(x-schema)来解析整个文档。下面是上面那个文档的完整的schema。注意schema的根元素中的名域声明。第一个(XMLns=”urn:schemas-microsoft-com:XML-data”)表明这个XML文档是一个XML?Schema。第二个(XMLns:dt=”urn:schemas-microsoft-com:datatypes”)允许schema处理者在ElementType和AttributeType声明中的type属性前加dt前缀来说明元素的类型和内容的特征?
。?
XMLns="urn:schemas-microsoft-com:xml-data"?xmlns:dt="urn:schemas-mi?
crosoft-com:datatypes"?
??????
??????
??????
??????
??????????
??????????
??????????
??????
??????
??????????
??????
?
用来定义元素和属性的声明元素如下所示:?
元????素?
?说????明?
ElementType?把类型和条件赋给一个元素,可以包含子元素?
AttributeType?把类型和条件赋给一个属性?
attribute?声明以前定义过的属性类型可以出现在名为ElementType的元素的作用域中?
element?声明以前定义过的元素类型可以出现在名为ElementType的元素的作用域中?
?
Schema的内容以最深层的元素的“AttributeType”和“ElementType”声明开头。?
?
?
?
ElementType声明后接着就是它的属性和子元素,如果一个元素有属性或子元素,必须把这种方法包含在它的ElementType声明中,或者是必须在它们自己的?ElementType?或?AttributeType声明中进行前导声明。?
?
??????
??????
??????
?
不同于DTDs,XML?Schema允许有一个开放的内容模式,你可以进行定义数据类型、使用默认值等等操作而不必限定内容。?
在下面的schema中,?元素的类型被定义并有一个默认值,但在??元素中没有其他节点被声明。?
XMLns="urn:schemas-microsoft-com:xml-data"?xmlns:dt="urn:schemas-mic?
rosoft-com:datatypes"?
???????
???????
??????????
???????
???????
???????
??????????
??????????
???????
?
上面的schema允许你只验证你所关心的区域,这使你对文档的验证级别有更多的控制,并允许你使用schema提供的一些特性而不必严格确认。尝试一下!试着处理一下下面的XML文档的schema。?
?
???
????Fidelma?MCGInn?
????425-655-3393?
???
???
????5523918?
????shovel?
????39.99?
???
??1998-10-23?
??1998-11-03?
?
如果你处理完schema,在XML?Validator中运行?.下载MSDN?Online的区域中提供了一套?XML?sample?files,?包括一个有相关schema的XML文档。下载这些示例程序可以与XML文档和schema一起运行。如果你想要根据一个schema来测试XML的有效性,可以从XML?Validator?处下载文档或查看Mime?Type?Viewer中的XML文件。?
一些说明:?
ElementType和?AttributeType?声明必须放在attribute和element内容声明之前。例如,在上面的schema中,元素的ElementType声明必须放在元素的Element?
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)Type声明之前。
order属性的默认值是建立在content属性的值上的。当content值为“eltOnly”时,order默认值是seq。当content值为“mixed”时,order默认值是“many”。see?如果想了解有关这些缺省值的信息,可以查看?XML?Schema?Reference。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)