在日常开发中,需要使用XML编写配置文件,如:MyBatis的配置信息都是放到XML文档中的,为了使开发人员编写的配置文件是合法的、有效的且MyBatis框架能够解析,于是MyBatis框架提供了DTD或者Schema校验文件。开发人员需要根据DTD或Schema来编写配置文件;
下面将会通过一个实例说明怎样根据已经存在的Schema来编写有效的XML文档;
已经存在的Schema文件名称(company.xsd)如下:
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="https://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="contacts">
<xs:complexType>
<xs:sequence>
<xs:element ref="contact" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="company" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="contact">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="phone"/>
<xs:element ref="address"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="name" type="xs:string"/>
<xs:element name="phone" type="xs:string"/>
<xs:element name="address">
<xs:complexType>
<xs:sequence>
<xs:element ref="street"/>
<xs:element ref="city"/>
<xs:element ref="state"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="street" type="xs:string"/>
<xs:element name="city">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="成都市"/>
<xs:enumeration value="深圳市"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="state">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="四川省"/>
<xs:enumeration value="广东省"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>第一步:分析 Schema 文档
a、根节点元素:contacts(包含子元素contact、属性company),company属性是必须填写的;
b、contact元素含name、phone、address三个个子元素,这三个元素出现的顺序必须是name、phone、address;
c、adrees元素含有三个子元素:street、city(只能选择“成都市”和“深圳市”两个值)和state(只能选择“四川省”和“广东省”两个值)。注意:这三个元素出现的属性必须是street、city、state;
通过上面简单的分析,现在我们是不是在头脑里面对文档基本机构有个比较清楚的认识呢?接下来就是编写XML文档;
第二步:根据上述Schema编写XML文档,示例:
<?xml version="1.0" encoding="UTF-8" ?>
<contacts xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="company.xsd"
company="奇强网络公司">
<contact>
<name>张三</name>
<phone>021-5555666</phone>
<address>
<street>二环路南四段20号五栋四单元10号</street>
<city>成都市</city>
<state>四川省</state>
</address>
</contact>
<contact>
<name>王三</name>
<phone>021-5555777</phone>
<address>
<street>天晖中路曙光国际18-15(高新地铁站C口)</street>
<city>成都市</city>
<state>四川省</state>
</address>
</contact>
</contacts>上述XML文档根据Schema创建了两个联系人信息,分别是:张三和王三