在大型的項目開發中,我們往往要是用xml進行一些規範化的處理。這時候就需要有高手先做好上層的一些規則。這時候往往就會用到schema對xml進行一個規範化的校驗
二、代碼實踐
我們以公司和員工爲例來實踐一下。
1、創建公司校驗schema:CompanySchema.xsd
- <?xml version="1.0" encoding="UTF-8"?>
- <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- targetNamespace="http://www.example.org/company"
- xmlns:tns="http://www.example.org/company">
- <xsd:element name="emp" type="tns:empType"/>
- <xsd:complexType name="empType">
- <xsd:sequence>
- <xsd:element name="empName" type="xsd:string"/>
- <xsd:element name="empId" type="tns:empIdType"/>
- <xsd:element name="sex" type="tns:sexType"/>
- <xsd:element name="age" type="tns:ageType" />
- <xsd:element name="email" type="tns:emailType"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:simpleType name="empIdType">
- <xsd:restriction base="xsd:int">
- <xsd:minInclusive value="1" />
- <xsd:maxExclusive value="100000" />
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="sexType">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="男" />
- <xsd:enumeration value="女" />
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="ageType">
- <xsd:restriction base="xsd:int">
- <xsd:minInclusive value="1" />
- <xsd:maxExclusive value="120" />
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="emailType">
- <xsd:restriction base="xsd:string">
- <xsd:pattern value="(\w+\.*)*\w+@\w+\.[A-Za-z]{2,6}" />
- <xsd:minLength value="6" />
- <xsd:maxLength value="255" />
- </xsd:restriction>
- </xsd:simpleType>
- </xsd:schema>
2、創建員工校驗schema:EmpSchema.xsd
- <?xml version="1.0" encoding="UTF-8"?>
- <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- targetNamespace="http://www.example.org/company"
- xmlns:tns="http://www.example.org/company">
- <xsd:element name="emp" type="tns:empType"/>
- <xsd:complexType name="empType">
- <xsd:sequence>
- <xsd:element name="empName" type="xsd:string"/>
- <xsd:element name="empId" type="tns:empIdType"/>
- <xsd:element name="sex" type="tns:sexType"/>
- <xsd:element name="age" type="tns:ageType" />
- <xsd:element name="email" type="tns:emailType"/>
- </xsd:sequence>
- </xsd:complexType>
- <xsd:simpleType name="empIdType">
- <xsd:restriction base="xsd:int">
- <xsd:minInclusive value="1" />
- <xsd:maxExclusive value="100000" />
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="sexType">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="男" />
- <xsd:enumeration value="女" />
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="ageType">
- <xsd:restriction base="xsd:int">
- <xsd:minInclusive value="1" />
- <xsd:maxExclusive value="120" />
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="emailType">
- <xsd:restriction base="xsd:string">
- <xsd:pattern value="(\w+\.*)*\w+@\w+\.[A-Za-z]{2,6}" />
- <xsd:minLength value="6" />
- <xsd:maxLength value="255" />
- </xsd:restriction>
- </xsd:simpleType>
- </xsd:schema>
3、創建公司xml:Company.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <Company xmlns="http://www.example.org/company" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.example.org/company">
- <companyName>中國實業集團</companyName>
- <comppanyAddress>北京市朝陽區呼家樓</comppanyAddress>
- <companyEmail>[email protected]</companyEmail>
- <emp>
- <empName>王剛</empName>
- <empId>12345</empId>
- <sex>男</sex>
- <age>100</age>
- <email>[email protected]</email>
- </emp>
- <emp>
- <empName>瓜瓜</empName>
- <empId>100</empId>
- <sex>男</sex>
- <age>100</age>
- <email>[email protected]</email>
- </emp>
- </Company>
4、注意點
要將EmpSchema.xsd,CompanySchema.xsd的命名空間定義成一樣的