XML-Schema约束
- XML是一种可扩展标记语言,用于标记电子文件使其具有结构性的标记语言
- 可以用来标记数据、定义数据类型
- 是一种允许用户对自己的标记语言进行定义的源语言
- 可扩展标记语言是标准通用标记语言的子集,非常适合 Web 传输。
先从最简单的入手
1.最简单的Schema文档
如何写一个最简单的XML Schema文档呢?
首先,我们写出一个最简单的XML文档。
First.xml
<?xml version="1.0" encoding="UTF-8"?>
<greeting>Hello World</greeting>
<!-- 有一个根元素:greeting;且这个元素不含属性,无子元素,内容是字符串 -->
First.xsd
<?xml version="1.0" encoding="UTF-8"?>
<!-- 命名空间 -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="greeting" type="xsd:string"></xsd:element>
</xsd:schema>
XML Schema文档后缀名是.xsd,完全符合XML语法,根元素是schema,命名空间xmlns:xsd="http://www.w3.org/2001/XMLSchema,用元素定义实例文档中的元素,如greeting。
所有的属性均作为简易类型来声明。
简易元素指那些仅包含文本的元素。它不会包含任何其他的元素或属性。
简易元素无法拥有属性。假如某个元素拥有属性,它就会被当作某种复合类型
2.含子元素的Schema文档
实例文档如下
First.xml
<?xml version="1.0" encoding="UTF-8"?>
<First2>
<name>teike</name>
<address>No.123,Road waitan,Shanghai</address>
</First2>
First.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="First2">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"></xsd:element>
<xsd:element name="address" type="xsd:string"></xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
实例文档customer.xml中,元素含有两个子元素,所以我们在Schema文档中采用ComplexType来定义该元素。sequence表示子元素依次出现的顺序。
3.含子元素和孙元素的Schema文档
比上面复杂点的实例文档
First3.xml
<?xml version="1.0" encoding="UTF-8"?>
<First3>
<name>Teike</name>
<address>
<prefecture>hunan</prefecture>
<city>changsha</city>
<street>Meixihu Road,No.123</street>
</address>
</First3>
First3.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="First3">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"></xsd:element>
<xsd:element name="address">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="prefectrue" type="xsd:string"></xsd:element>
<xsd:element name="city" type="xsd:string"></xsd:element>
<xsd:element name="street" type="xsd:string"></xs