XML Schema


XML Schema (正體)

XML Schema(译按:XML纲要,业界建议不翻)如W3C建议,发布于2001年五月,是许多XML纲要语言中的一支。它是首先分离的于XML本身的纲要语言,故取得W3C的推荐地位。

像所有XML纲要语言一样,XML Schema有时用来表达一组纲要──一组XML文件必须遵守的规定,这样根据该纲要才‘合法(Valid)’。

然而,不像大部分其他纲要语言一样,XML Schema亦意图设计来确认在一收集来的资料与内附特殊资料型别的结果,它对开发XML文件处理软件有助益,不过同时召来了非议。

目录

引用

因为有其他XML纲要语言存在,故在引用这W3C建议的语言时,使用XML Schema或W3C XML Schema,Schema永远字首大写。

一个XML Schema的实例是XML Schema定义(XML Schema Definition: XSD),而且通常它的档名后缀以".xsd"。该语言本身有时在通俗上说成XSD,虽然WXS(对W3C XML Schema来说)是更适当的字头集缩写initialism)。

历史

在它自己的参考资料附录里,XML Schema承认受到文件类型定义(DTD)和其他早期XML纲要成就如en:DDMLSOXXML-Data、以及XDR的影响。它看来从每个老大哥都师法一点点,然而它也在这些老大哥标准间妥协。在这些老大哥语言里,XDR与SOX在XML Schema发布后仍继续通行一阵子。不少微软的产品支援XDR直到2001年十月MSXML 4.0的发布(MSXML 4.0抛弃了XDR改用XML Schema)。Commerce One, Inc支援它自己的SOX纲要语言直到该公司于2004年末破产。2004年十二月,Novell, Inc.购买了该公司包括那些与SOX相关的专利,据报道是尽力防止被某些不相关的、以打专利相关官司为生的公司剥削图利[1]

后Schema验证资讯集(Post-Schema-Validation Infoset)

经过XML Schema为基的验证后,依照验证意含的资料模型表达XML文件结构与内容是可能的。XML Schema资料模型包括:

  • 字汇(元素与属性名称集)
  • 内容模型(关联与结构)
  • 资料型别群

这些讯息集成又叫后Schema验证资讯集(Post-Schema-Validation Infoset (PSVI))。PSVI赋予合法XML文件它的"型别"并促进以物件般处理文件,如使用面向对象编程(OOP)变化型般操作。

这种对XML资料存取的特别的面向对象编程实现主要为微软──对XML Schema发展的主要贡献者──所倡导。转换一份XML文件到自行资料型别感知物件在某些软件设计部份相当有利。然而批评家争论这同时暗中破坏了开放性──XML的主要特征──并且它偏向于兼容原生于微软偏好的编程语言的资料型别[2]

另,从XML Schema资料型别继承出去的(以及肇因于XML Schema资料型别的)限制、这些资料型别与其他XML Schema间受限的搭配、以及在其他W3C规格里这些资料型别的相依性,是许多XML软件发展师的争论焦点[3]

范例

一个描述给定的某个国家,非常简单的Schema范例如下:

<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <xs:element name="country" type="Country"/>
 <xs:complexType name="Country">
  <xs:sequence>
   <xs:element name="name" type="xs:string"/>
   <xs:element name="population" type="xs:decimal"/>
  </xs:sequence>
 </xs:complexType>
</xs:schema>

遵照该纲目的XML文件范例:

<country
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:noNamespaceSchemaLocation="country.xsd">
  <name>France</name>
  <population>59.7</population>
</country>

参见

  • RELAX NG - 另一种XML纲要语言(ISO国际标准)通常用在XML Schema资料型别上

外部链接

Wikibooks
Wikibooks 有更多关于本条目的内容:
nuvola





stock | retire | vm
Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History