XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD),用于定义XML文档的合法构建模块。XML Schema 是基于 XML 的 DTD 替代者。与DTD相比,XSD的优势是可扩展、支持数据类型和命名空间,基于XML编写几乎没有学习成本。
XML Schema可以对XML结构进行如下定义:
1.定义可出现在文档中的元素。
2.定义可出现在文档中的属性。
3.定义哪个元素是子元素。
4.定义子元素的次序。
5.定义子元素的数目。
6.定义元素是否为空,或者是否可包含文本。
7.定义元素和属性的数据类型。
8.定义元素和属性的默认值以及固定值。
XML Schema定义:copy.xsd
<?xml version="1.0" encoding="UTF8"?>
<!-- xmlns:xs 指定schema中用到的元素和数据类型所在的命名空间,以及元素和数据类型应该使用前缀(xs)。
targetNamespace 指定schema定义的元素copy、from、to所在的命名空间。
xmlns 默认空间名。
elementFormDefault 是否将全局元素的子元素放到缺省空间。
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="my.xsd.ns"
xmlns="my.xsd.ns"
elementFormDefault="qualified">
<xs:element name="copy">
<xs:complexType>
<xs:sequence>
<xs:element name="from" type="xs:string"/>
<xs:element name="to" type="xs:string"/>
<xs:element name="force" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
copy.xml中引用copy.xsd(copy.xsd与copy.xml在同一目录下)。
<?xml version="1.0" encoding="UTF8"?>
<!-- xmlns: 指定xml的默认命名空间
xmlns:xsi XML Schema 命名空间
xsi:schemaLocation 此属性有两个值,第一个是要使用的命名空间,第二个是供命名空间的XML Schema位置。
-->
<copy xmlns="my.xsd.ns"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="my.xsd.ns copy.xsd">
<from>D:\\test</from>
<to>E:\\document</to>
<force>true</force>
</copy>