XML Schema,XSD (XML Schema Definition)是W3C于2001年5月发布的推荐标准,指出如何形式描述XML文档的元素。XSD是许多XML Schema 语言中的一支。XSD是首先分离于XML本身的schema语言,故获取W3C的推荐地位。
像所有XML Schema 语言一样,XSD用来描述一组规则──一个XML文件必须遵守这些规则,才能根据该schema‘合法(Valid)’。
然而,与其他XML Schema 语言不同,XSD意图设计为在确认一个文档的有效性时,将会产生满足特定数据类型的一个信息集合。这种后验证的XML信息集可用来开发XML文件处理软件。
XML Schema 具体是什么呢?
XML Schema 本身也是一种XML构造,它用来描述[哪个元素,在什么时候出现],[该元素具有什么样的属性]等等,也就是说,XML Schema是对XML的树形构造加以描述说明的一种语言。
原本,使用DTD对XML的树形构造加以描述说明,但DTD存在严重的局限性,DTD不能定义数据的类型,语法也与XML语言完全不一样,在使用的便利性,数据结构表达的严谨性上存在问题。
为什么需要XML Schema?
上面我们解说了XML Schema是什么,但为什么需要XML Schema呢?为了回答这个问题,我们举个例子。
XML作为数据载体,可以用来描述各种各样的数据。在系统开发中,可以使用XML在系统(或不同功能模块)之间传递数据,也可以使用XML作为配置文件,数据文件等。
但系统使用XML,需要对XML文件本身加以解析,也就是说,系统需要知道XML文件的格式是什么。
比如下面两个XML文件:
hello.xml
<?xml version="1.0"?>
<hello>World</hello>
order.xml
<?xml version="1.0"?>
<order>
<id>01</id>
<name>Order Book</name>
<price>100.00</price>
</order>
它们的格式不一样,所代表的意思也不一样。
一般来说,一个系统只能处理那些事先决定好的具有固定构造的XML文档。
也就是说,系统在使用它们之前,需要判别它们是否是合法的XML文件格式。
而XML Schema则刚好可以很好地对XML构造加以描述。
事实上,一些XML解析器,以及某些工具需要借助XML Schema来处理XML。
简单的XML Schema例
我们为上面的例子
hello.xml
<?xml version="1.0"?>
<hello>World</hello>
写一个简单的XML Schema:
hello.xsd
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="hello" type="xsd:string">
</xs:schema>
同样,对于JSON文件的定义,也应该有一个JSON Schema以规范JSON文件内容。
JSON Schema用以标注和验证JSON文档的元数据的文档,可以类比于XML Schema。相对于JSON Schema,一个JSON文档就是JSON Schema的一个instance。
JSON Schema本身就是JSON格式,自己描述自己,它们俩之间的关系可以理解为类与对象的关系,也可以理解为集合与元素的关系,或JSON Schema描述JSON数据的模式。它的特性和用途,可以大致归纳为以下几点: