XML Schema:
█ XML Schema 也是一种用于定义和描述 XML 文档结构与内容的模式语言,
其出现是为了克服 DTD 的局限性
█ XML Schema VS DTD:
☞XML Schema符合XML语法结构。
☞DOM、SAX等XML API很容易解析出XML Schema文档中的内容。
☞XML Schema对
名称空间支持得非常好。
☞XML Schema比XML DTD支持更多的
数据类型,并支持用户自定义新的数据类型。
☞XML Schema定义约束的能力非常强大,可以对XML实例文档作出细致的语义限制。
☞
XML Schema不能像DTD一样定义实体,比DTD更复杂,但Xml Schema现在已是w3c组织的标准,它正逐步取代DTD。
Schema约束快速入门:
XML Schema 文件自身就是一个XML文件,但它的扩展名通常为
.xsd 。
一个XML Schema文档通常称之为
模式文档(约束文档),遵循这个文档书写的xml文件称之为
实例文档。
和XML文件一样,一个XML Schema文档也必须有一个根结点,但这个根结点的名称为schema。
编写了一个XML Schema约束文档后,通常需要把这个文件中声明的元素绑定到一个URI地址上,在XML Schema技术中有一个专业术语来描述这个过程,即把XML Schema文档声明的元素绑定到一个
名称空间上,以后XML文件就可以通过这个URI(即名称空间)来告诉解析引擎,xml文档中编写的元素来自哪里,被谁约束。
<schema> 元素是每一个 XML Schema 的根元素;
xmlns:xs=“http://www.w3.org/2001/XMLSchema” //标准的名称空间, 表示schema 中用到的元素和数据类型来自命名空间 "http://www.w3.org/2001/XMLSchema"。同时它还规定了来自命名空间 "http://www.w3.org/2001/XMLSchema" 的元素和数据类型应该使用前缀 xs:
targetNamespace=“http://www.cskaoyan.com”显示被此 schema 定义的元素 (name, author, price ) 来自命名空间: "http://www.cskaoyan.com"。
//这个可以随便改
elementFormDefault="qualified" 指出任何 XML 实例文档所使用的且在此 schema 中声明过的元素必须被命名空间限定。
|
MySchema.xsd | NewFile.xml |
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
//这里都是这个
targetNamespace="http://www.example.org/MySchema"
//定义自己的命名空间,“随便写”
elementFormDefault="qualified">
//声明实例要被命名空间限定
<xs:element name='书架'>
<xs:complexType>
<xs:sequence maxOccurs='unbounded' >
<xs:element name='书' >
<xs:complexType>
// 元素定义复杂类型。复杂类型的元素是包含其他元素和/或属性的 XML 元素
<xs:sequence>
<xs:element name='书名' type='xs:string' />
<xs:element name='作者' type='xs:string' />
<xs:element name='售价' type='xs:string' />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
|
<?xml version="1.0" encoding="UTF-8"?>
<书架 xmlns="http://www.example.org/MySchema"
//根据上面的xsd文档,写出这个
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
//一般都是这个
xsi:schemaLocation="http://www.example.org/MySchema
MySchema.xsd">
//前面也要加上xsd定义的目标命名空间
<书>
<书名>java面试版本</书名>
<作者>XXX</作者>
<售价>30</售价>
</书>
</书架>
<?xml version="1.0" encoding="UTF-8"?>
<meihao:书架 xmlns:meihao="http://www.example.org/MySchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/MySchema MySchema.xsd">
<meihao:书>
<meihao:书名>java面试版本</meihao:书名>
<meihao:作者>XXX</meihao:作者>
<meihao:售价>30</meihao:售价>
</meihao:书>
</meihao:书架>
|