在日常开发中,需要使用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创建了两个联系人信息,分别是:张三和王三