`

使用schema校验xml

    博客分类:
  • 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的命名空间定义成一样的
分享到:
评论

相关推荐

    Java通过XML Schema校验XML

    ava校验XML是件很扯淡的事情,... 下面不扯这些废话了,我用DOM4j结合javaxml api使用XSD来校验一个xml有效性,下面这个例子虽然和蹩脚,但是也费了一番功夫,放出来大家研究吧,有更好的实现也希望能和我一同分享。

    通过Schema验证XML格式是否正确

    C#源码, 通过Schema验证XML文件格式是否正确

    c# XML 验证器 Schema验证XML

    NULL 博文链接:https://fhqiwcw.iteye.com/blog/1696624

    DTD和Schema规范XML文档

    [实验目的]: 1、掌握使用XMLSpy软件创建DTD和Schema文档 2、掌握在XML文档如何引入DTD和Schema,并验证有效 3、掌握DTD中声明元素、属性的方法 4、掌握Schema中声明元素,属性,类型的方法

    XML - 实验(2) -- Schema

    1、学习如何使用XMLSPY集成开发环境完成XML Schema相关的开发工作。 2、掌握XML Schema与DTD之间的区别,能够完成两者之间的转换;掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单...

    java中实现xmlschema验证文件借鉴.pdf

    java中实现xmlschema验证文件借鉴.pdf

    《XML》实验(2) -- Schema

    1、学习如何使用XMLSPY集成开发环境完成XML Schema相关的开发工作。 2、掌握XML Schema与DTD之间的区别,能够完成两者之间的转换;掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单...

    XML Schema

    介绍XML中schema的语法,使用指南等等,使用schema进行内容校验

    xml dom,sax解析,schema验证

    xerces-c++ 2.8应用,主要报错xml文件的解析,创建,修改保存。schema验证的。希望对初学者有所帮助.

    xml Schema 例子(C#写的验证程序)

    xml Schema 例子(C#写的验证程序)QQ:292258449

    武汉大学软工xml上机第二次作业Schema

    1、学习如何使用XMLSPY集成开发环境完成XML Schema相关的开发工作。2、掌握XML Schema与DTD之间的区别,能够完成两者之间的转换;掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单...

    DOMCount.rar_Schema C_XML程序开发_personal_xml list_解析xml

    默认情况下xxx=auto,如果DOCTYPE声明或schema声明出现在XML文档中,将进行验证:xxx=always,强制进行验证:xxx=never,不使用验证。 -n,允许处理名字空间。默认情况下不允许。 -s,允许处理大纲。默认情况下不...

    xml schema 学习笔记

    介绍了xml的schema校验的基本知识

    schema_xml.rar_vc xml

    分享一下在网上找到的关于vc中xml文档校验的文章,自己试验过了,比较好用!

    《XML》实验任务书 XML Schema 答案 解答

    1、学习如何使用XMLSPY集成开发环境完成XML Schema相关的开发工作。 2、掌握XML Schema与DTD之间的区别,能够完成两者之间的转换;掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单...

    Eclipse的XML编辑器

    使用DTD或Schema校验XML。从XML生成DTD或Schema。与其它编辑器相比最大不同之处在 于,Rinzo能够与Java elements结合在一起。你可以打开一个类的定义,自动完成类名,从XML声明创建类。这将非常有用假如你要编辑web....

    XSD(XML Schemas Definition)

    可以用一个指定的XML Schema来验证某个XML文档,以检查该XML文档是否符合其要求。文档设计者可以通过XML Schema指定一个XML文档所允许的结构和内容,并可据此检查一个XML文档是否是有效的。XML Schema本身是一个XML...

    java中实现xmlschema验证文件参照.pdf

    java中实现xmlschema验证文件参照.pdf

    xmlschema:适用于Python的XML模式验证器和数据转换库

    xmlschema:适用于Python的XML模式验证器和数据转换库

    深入理解C#中的XML,完整扫描版

    《深入理解C#中的XML》主要讲述C#软件开发中的XML的功能,全书共10章,分别介绍了XML基础语法、应用文档对象模型、用XSLT转换XML文档、利用DTD和XSDSchema验证XML文档、XML文档的读取、ADO.NET的相关知识、....

Global site tag (gtag.js) - Google Analytics