使用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>gxsenjoy@163.com</companyEmail>  
  8.     <emp>  
  9.         <empName>王刚</empName>  
  10.         <empId>12345</empId>  
  11.         <sex></sex>  
  12.         <age>100</age>  
  13.         <email>wanggang@sino.com</email>  
  14.     </emp>  
  15.     <emp>  
  16.         <empName>瓜瓜</empName>  
  17.         <empId>100</empId>  
  18.         <sex></sex>  
  19.         <age>100</age>  
  20.         <email>guagua@sino.com</email>  
  21.     </emp>  
  22. </Company>  


4、注意点 

要将EmpSchema.xsd,CompanySchema.xsd的命名空间定义成一样的 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值