使用schema校驗xml

一、背景 
在大型的項目開發中,我們往往要是用xml進行一些規範化的處理。這時候就需要有高手先做好上層的一些規則。這時候往往就會用到schema對xml進行一個規範化的校驗 

二、代碼實踐 

我們以公司和員工爲例來實踐一下。 

1、創建公司校驗schema:CompanySchema.xsd 

Xml代碼 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
  3.         targetNamespace="http://www.example.org/company"   
  4.         xmlns:tns="http://www.example.org/company">   
  5.     <xsd:element name="emp" type="tns:empType"/>  
  6.     <xsd:complexType name="empType">  
  7.         <xsd:sequence>  
  8.             <xsd:element name="empName" type="xsd:string"/>  
  9.             <xsd:element name="empId" type="tns:empIdType"/>  
  10.             <xsd:element name="sex" type="tns:sexType"/>  
  11.             <xsd:element name="age" type="tns:ageType" />  
  12.             <xsd:element name="email" type="tns:emailType"/>  
  13.         </xsd:sequence>  
  14.     </xsd:complexType>  
  15.     <xsd:simpleType name="empIdType">  
  16.         <xsd:restriction base="xsd:int">  
  17.             <xsd:minInclusive value="1" />  
  18.             <xsd:maxExclusive value="100000" />  
  19.         </xsd:restriction>  
  20.     </xsd:simpleType>  
  21.   
  22.     <xsd:simpleType name="sexType">  
  23.         <xsd:restriction base="xsd:string">  
  24.             <xsd:enumeration value="男" />  
  25.             <xsd:enumeration value="女" />  
  26.         </xsd:restriction>  
  27.     </xsd:simpleType>  
  28.   
  29.     <xsd:simpleType name="ageType">  
  30.         <xsd:restriction base="xsd:int">  
  31.             <xsd:minInclusive value="1" />  
  32.             <xsd:maxExclusive value="120" />  
  33.         </xsd:restriction>  
  34.     </xsd:simpleType>  
  35.   
  36.     <xsd:simpleType name="emailType">  
  37.         <xsd:restriction base="xsd:string">  
  38.             <xsd:pattern value="(\w+\.*)*\w+@\w+\.[A-Za-z]{2,6}" />  
  39.             <xsd:minLength value="6" />  
  40.             <xsd:maxLength value="255" />  
  41.         </xsd:restriction>  
  42.     </xsd:simpleType>  
  43.   
  44. </xsd:schema>  


2、創建員工校驗schema:EmpSchema.xsd 

Xml代碼 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
  3.         targetNamespace="http://www.example.org/company"   
  4.         xmlns:tns="http://www.example.org/company">   
  5.     <xsd:element name="emp" type="tns:empType"/>  
  6.     <xsd:complexType name="empType">  
  7.         <xsd:sequence>  
  8.             <xsd:element name="empName" type="xsd:string"/>  
  9.             <xsd:element name="empId" type="tns:empIdType"/>  
  10.             <xsd:element name="sex" type="tns:sexType"/>  
  11.             <xsd:element name="age" type="tns:ageType" />  
  12.             <xsd:element name="email" type="tns:emailType"/>  
  13.         </xsd:sequence>  
  14.     </xsd:complexType>  
  15.     <xsd:simpleType name="empIdType">  
  16.         <xsd:restriction base="xsd:int">  
  17.             <xsd:minInclusive value="1" />  
  18.             <xsd:maxExclusive value="100000" />  
  19.         </xsd:restriction>  
  20.     </xsd:simpleType>  
  21.   
  22.     <xsd:simpleType name="sexType">  
  23.         <xsd:restriction base="xsd:string">  
  24.             <xsd:enumeration value="男" />  
  25.             <xsd:enumeration value="女" />  
  26.         </xsd:restriction>  
  27.     </xsd:simpleType>  
  28.   
  29.     <xsd:simpleType name="ageType">  
  30.         <xsd:restriction base="xsd:int">  
  31.             <xsd:minInclusive value="1" />  
  32.             <xsd:maxExclusive value="120" />  
  33.         </xsd:restriction>  
  34.     </xsd:simpleType>  
  35.   
  36.     <xsd:simpleType name="emailType">  
  37.         <xsd:restriction base="xsd:string">  
  38.             <xsd:pattern value="(\w+\.*)*\w+@\w+\.[A-Za-z]{2,6}" />  
  39.             <xsd:minLength value="6" />  
  40.             <xsd:maxLength value="255" />  
  41.         </xsd:restriction>  
  42.     </xsd:simpleType>  
  43.   
  44. </xsd:schema>  


3、創建公司xml:Company.xml 

Xml代碼 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <Company xmlns="http://www.example.org/company" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xsi:schemaLocation="http://www.example.org/company">  
  4.   
  5.     <companyName>中國實業集團</companyName>  
  6.     <comppanyAddress>北京市朝陽區呼家樓</comppanyAddress>  
  7.     <companyEmail>[email protected]</companyEmail>  
  8.     <emp>  
  9.         <empName>王剛</empName>  
  10.         <empId>12345</empId>  
  11.         <sex></sex>  
  12.         <age>100</age>  
  13.         <email>[email protected]</email>  
  14.     </emp>  
  15.     <emp>  
  16.         <empName>瓜瓜</empName>  
  17.         <empId>100</empId>  
  18.         <sex></sex>  
  19.         <age>100</age>  
  20.         <email>[email protected]</email>  
  21.     </emp>  
  22. </Company>  


4、注意點 

要將EmpSchema.xsd,CompanySchema.xsd的命名空間定義成一樣的 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章