使用schema校验xml

一、背景
在大型的项目开发中,我们往往要是用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>gxsenjoy@163.com</companyEmail>
<emp>
<empName>王刚</empName>
<empId>12345</empId>
<sex>男</sex>
<age>100</age>
<email>wanggang@sino.com</email>
</emp>
<emp>
<empName>瓜瓜</empName>
<empId>100</empId>
<sex>男</sex>
<age>100</age>
<email>guagua@sino.com</email>
</emp>
</Company>



4、注意点

要将EmpSchema.xsd,CompanySchema.xsd的命名空间定义成一样的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值