XMl Schema
使用了先定义类型和约束,后结合起来的方法
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/ContactSchema"
xmlns:tns="http://www.example.org/ContactSchema"
elementFormDefault="qualified">
<!-- 人名 -->
<xs:simpleType name="personName">
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"></xs:whiteSpace>
<xs:maxLength value="20"></xs:maxLength>
</xs:restriction>
</xs:simpleType>
<!-- 手机号 -->
<xs:simpleType name="phoneNumberType">
<xs:restriction base="xs:nonNegativeInteger">
<xs:pattern value="1[358]{1}[0-9]{9}"></xs:pattern>
</xs:restriction>
</xs:simpleType>
<!-- QQ号 -->
<xs:simpleType name="qqNumberType">
<xs:restriction base="xs:nonNegativeInteger">
<xs:pattern value="[1-9][0-9]{4,9}"></xs:pattern>
</xs:restriction>
</xs:simpleType>
<!-- 微信号 -->
<xs:simpleType name="weiXinType">
<xs:restriction base="xs:token">
<xs:pattern value="[a-z0-9_]*"></xs:pattern>
</xs:restriction>
</xs:simpleType>
<!-- 地址 -->
<xs:simpleType name="addressType">
<xs:restriction base="xs:normalizedString">
<xs:pattern value="[a-zA-Z0-9 ]*"></xs:pattern>
</xs:restriction>
</xs:simpleType>
<!-- QQ邮箱 -->
<xs:simpleType name="QQmailbox">
<xs:restriction base="xs:token">
<xs:pattern value="[1-9][0-9]{4,10}@qq.com"></xs:pattern>
</xs:restriction>
</xs:simpleType>
<!-- QQ邮箱 -->
<xs:simpleType name="NetEasemaibox">
<xs:restriction base="xs:token">
<xs:pattern value="[1-9a-zA-Z]{6,16}@163.com"></xs:pattern>
</xs:restriction>
</xs:simpleType>
<!-- 邮箱 -->
<xs:complexType name="eMailtype">
<xs:sequence>
<xs:element name="QQmailbox" type="tns:QQmailbox" minOccurs="0"></xs:element>
<xs:element name="NetEasemailbox" type="tns:NetEasemaibox" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<!-- 联系人 -->
<xs:element name="Linkman">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="tns:personName"></xs:element>
<xs:element name="phoneNumber" type="tns:phoneNumberType" maxOccurs="unbounded"></xs:element>
<xs:element name="QQ" type="tns:qqNumberType"></xs:element>
<xs:element name="weiXin" type="tns:weiXinType"></xs:element>
<xs:element name="address" type="tns:addressType"></xs:element>
<xs:element name="EMail" type="tns:eMailtype"></xs:element>
</xs:sequence>
<!-- ID标识 -->
<xs:attribute name="Id" type="xs:positiveInteger"></xs:attribute>
</xs:complexType>
</xs:element>
<!-- 联系单 -->
<xs:element name="contacts">
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:Linkman" maxOccurs="unbounded"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XML
遵循上面XML Schema的约束
<?xml version="1.0" encoding="UTF-8"?>
<contacts xmlns="http://www.example.org/ContactSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/ContactSchema ContactSchema.xsd">
<Linkman Id="1">
<name>Bob</name>
<phoneNumber>18571622568</phoneNumber>
<phoneNumber>15396564858</phoneNumber>
<QQ>888888</QQ>
<weiXin>sfafwerg1_dsd</weiXin>
<EMail>
<QQmailbox>888888@qq.com</QQmailbox>
</EMail>
<address>China Beijing</address>
</Linkman>
<Linkman Id="2">
<name>Jane</name>
<phoneNumber>15646516586</phoneNumber>
<QQ>99999</QQ>
<weiXin>fgegsgg165s4s_sd</weiXin>
<EMail>
<NetEasemailbox>gs465sd@163.com</NetEasemailbox>
</EMail>
<address>China Hong Kong</address>
</Linkman>
</contacts>