`

xml学习笔记一(XML文件的Schema验证)

    博客分类:
  • xml
阅读更多

mark......

 

 

schema.xml

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd">
	<textElement>abc</textElement>
	<complexElement1 attr1="23">
		<element1 attr1_2="astring" attr1_3="fd" attr1_4="fixed">fdfd</element1>
		<element2>12.2</element2>
		<element2>62.2</element2>
		<element3>18</element3>
	</complexElement1>
	<complexElement2>
		<element4>22.2</element4>		
	</complexElement2>
	<complexElement3>
		<element8>枚举值一</element8>
		<element7>abcdefghij</element7>
		<element9>ww_233</element9>
		<element10>12 457 545</element10>
		<element11>23:30:55</element11>
	</complexElement3>	
	<commonElement1 att1="string1" att2="string2"></commonElement1>
	<commonElement2 att1="string3" att2="string3" att3="string3"></commonElement2>	
</root>

 

schema.xsd

<?xml version="1.0" encoding="UTF-8"?>
<!-- XML文件的Schema验证 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<!-- ================= 文本元素的声明 ================ -->
	<!-- 文本元素声明,仅仅含有文本,不允许属性和子元素 -->
	<xs:element name="textElement" type="xs:string"/>
	<!-- ================= 复合元素的声明 ================ -->
	<!-- 复合元素声明,要含有属性或子元素,必须采用复合类型 -->
	<xs:element name="complexElement1">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="element1">
					<!-- 如果是含有属性和文本的复合类型,则必须设置mixed为true(混合类型)。
						缺省值为false,即非混合类型,只能有属性,元素不能包含值。
					 -->
					<xs:complexType mixed="true">
						<xs:attribute name="attr1_1" type="xs:int"/>
						<xs:attribute name="attr1_2" type="xs:string" use="required"/>
						<xs:attribute name="attr1_3" type="xs:string" use="optional" default="default"/>
						<xs:attribute name="attr1_4" type="xs:string" use="required" fixed="fixed"/>
						<!-- 声明元素的属性,属性默认可有可无 -->
						<!-- 声明元素的属性并设置该属性为必须:use="required" -->
						<!-- 声明元素的属性并设置该属性默认值:default="default"。
							有默认值时,use必须是optional。
							设置了默认值后,属性的值也可以是别的值。
						 -->
						<!-- 声明元素的属性并设置该属性固定值:fixed="fixed"。
							 设置了固定值之后,属性的值只能是指定的值。
						-->
					</xs:complexType>
				</xs:element>
				<!-- 设置元素出现次数为0-3的任意多个:minOccurs最少出现次数,maxOccurs最大出现次数。
					元素的出现次数缺省值为1,也就是说,当不显示的指明出现次数时,将默认必须出现一次,
					且只能出现一次。
					注意:minOccurs和maxOccurs不能出现在集合类型为all的集合的元素中。
				 -->
				<xs:element name="element2" type="xs:float" minOccurs="0" maxOccurs="3"/>
				<!-- 声明元素,并指定类型为用户自定义类型。(见下文) -->
				<xs:element name="element3" type="type1"/>
			</xs:sequence>
			<xs:attribute name="attr1" type="xs:int"/>
			<!-- 队列集合,元素按顺序出现,且必须全部出现。 -->
			<!-- 元素中含有子元素和属性时,先定义元素再定义属性。 -->
		</xs:complexType>
	</xs:element>
	<xs:element name="complexElement2">
		<xs:complexType>
			<xs:choice>
				<xs:element name="element4" type="xs:float" maxOccurs="2"/>
				<xs:element name="element5" type="xs:double"/>
				<xs:element name="element6" type="xs:int"/>
			</xs:choice>
			<!-- 多选一集合,只能出现一个元素 -->
		</xs:complexType>
	</xs:element>
	<xs:element name="complexElement3">
		<xs:complexType>
			<xs:all>
				<xs:element name="element7" type="type2"/>
				<xs:element name="element8" type="type3"/>
				<xs:element name="element9" type="type4"/>
				<xs:element name="element10" type="type5"/>
				<xs:element name="element11" type="xs:string"/>
			</xs:all>
			<!-- 全选集合,元素出现的顺序不限,且必须全部出现。 -->
		</xs:complexType>
	</xs:element>
	<!-- ================= 根元素的声明,此处定义整个xml文件的结构 ================ -->
	<!-- 声明根元素  -->
	<xs:element name="root">
		<xs:complexType>
			<xs:sequence>
				<!-- 引用元素:ref="元素名(name值)" -->
				<xs:element ref="textElement"/>
				<xs:element ref="complexElement1"/>
				<xs:element ref="complexElement2"/>
				<xs:element ref="complexElement3"/>
				<xs:element ref="commonElement1"/>
				<xs:element ref="commonElement2"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<!-- ================= 属性组的声明及使用 ================ -->
	<!--声明属性组:attgp1,包含两个属性:att1/att2-->
	<xs:attributeGroup name="attgp1">
		<xs:attribute name="att1" type="xs:string"/>
		<xs:attribute name="att2" type="xs:string"/>
	</xs:attributeGroup>
	<!--声明元素commonElement1,引用属性组attgp1以包含两个属性:att1/att2-->
	<xs:element name="commonElement1">
		<xs:complexType>
			<xs:attributeGroup ref="attgp1"/>
		</xs:complexType>
	</xs:element>
	<!--声明元素commonElement2,首先引用属性组attgp1以包含两个属性:att1/att2,
		接着声明自己的属性:att3
	-->
	<xs:element name="commonElement2">
		<xs:complexType>
			<xs:attributeGroup ref="attgp1"/>
			<xs:attribute name="att3" type="xs:string"/>
		</xs:complexType>
	</xs:element>
	<!-- ================= 自定义类型 ================ -->
	<!-- 声明自定义类型,本类型为int型,最小值(包含界值)10,最大值(不包含界值)20 -->
	<xs:simpleType name="type1">
		<xs:restriction base="xs:int">
			<xs:minInclusive value="10"/>
			<xs:maxExclusive value="20"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- 声明自定义类型,本类型为string型,最小长度(包含界值)4,最大长度(包含界值)10 -->
	<xs:simpleType name="type2">
		<xs:restriction base="xs:string">
			<xs:minLength value="4"/>
			<xs:maxLength value="10"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- 声明自定义类型,本类型为枚举类型,元素的值只能为枚举值中的任一个 -->
	<xs:simpleType name="type3">
		<xs:restriction base="xs:string">
			<xs:enumeration value="枚举值一"/>
			<xs:enumeration value="枚举值二"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- 声明自定义类型,本类型为正则表达式验证类型,元素的值按正则表达式匹配 -->
	<xs:simpleType name="type4">
		<xs:restriction base="xs:string">
			<xs:pattern value="\w+_\d{2,3}"/>
			<!-- 正则表达式 -->
		</xs:restriction>
	</xs:simpleType>
	<!-- 声明自定义类型,本类型为列表类型,元素的值为列表且列表中值的类型为int。
		 列表各值之前以空格隔开,可以有一个或多个值。
	-->
	<xs:simpleType name="type5">
		<xs:list itemType="xs:int"/>
		<!-- 定义列表中值的类型 -->
	</xs:simpleType>
</xs:schema>

 

分享到:
评论

相关推荐

    xml学习笔记有助于对 schema学习,介绍了schema的基础知识

    ### XML Schema基础知识详解 #### 一、XML与Schema概述 XML (Extensible Markup Language) 是一种标记语言,用于描述数据的...这些知识点不仅对于学习XML Schema至关重要,也是理解XML文档结构和数据交换标准的关键。

    xml schema 学习笔记

    "XML Schema 学习笔记" XML Schema 是一种基于 XML 的语言,用于定义 XML 文档的结构和约束。它可以描述 XML 文档的格式、元素、属性、数据类型、默认值、固定值等信息。XML Schema 的作用类似于 DTD,但它具有更多...

    Xml学习笔记.pdf

    由于提供的文件信息中包含了大量的XML学习资料,且内容比较丰富,我们将逐一详细解释这些内容所涵盖的知识点。 **XML简介** XML是Extensible Markup Language(可扩展标记语言)的缩写,它是一种用于标记电子文件...

    XML基础学习笔记指南

    除了DTD,XML还可以使用Schema进行文档定义,XML Schema的优势在于其本身就是XML格式,易于阅读和编写,且支持的数据类型比DTD更为丰富。 在XML的应用中,DOM(Document Object Model)和SAX(Simple API for XML)...

    Xml高级学习笔记

    【XML 高级学习笔记】 XML(Extensible Markup Language)是一种可扩展标记语言,与HTML类似,但其设计目标是存储和传输数据,而非呈现数据。XML允许用户自定义标签,使得它成为一种自描述的语言,并且是W3C的标准...

    北京圣思园xml学习笔记

    ### 北京圣思园XML学习笔记核心知识点详解 #### XML概述 - **XML全称**:eXtensible Markup Language(可扩展标记语言) - **学习XML的原因**: - 数据交换的需求日益增长,XML成为了电子商务的重要基础之一。 - ...

    MLDN学习笔记 —— XML学习笔记

    1. **命名空间**:通过引入命名空间,可以避免元素名称的冲突,如`&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;`。 2. **DTD(Document Type Definition)**:定义XML文档的结构,用于验证文档是否符合...

    XML Schema 教程(word版本)

    在此教程中,你将学习如何在应用程序中读取和创建 XML Schema 语言,XML Schema 为何比 DTD 更加强大,以及如何在您的应用程序中使用 XML Schema。 (注,以上文档完全是我整理的难点要点的笔记!)

    XML 学习笔记,课件,实例

    本压缩包包含了关于XML的学习笔记、课件和实例,旨在帮助初学者全面理解和掌握XML的核心概念与应用。 XML的基础知识包括以下几个关键点: 1. **XML的基本结构**:XML文档由一系列元素构成,每个元素由起始标签(如...

    xml学习笔记.docx

    XML的学习不仅仅是理解这些基本概念,还包括命名空间、DTD(文档类型定义)或XML Schema的使用,XPath和XSLT(用于查询和转换XML)等高级主题。掌握XML能帮助开发者更好地理解和处理结构化数据,从而在各种应用场景...

    Schama —— Xml文档约束技术 学习笔记

    **Schama —— XML文档约束技术 学习笔记** XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件、Web服务等场景。为了确保XML文档的数据结构正确、完整,避免数据错误,XML...

    XML学习笔记

    &lt;title&gt;XML学习笔记 张三 &lt;year&gt;2022 ``` 在这个例子中,`book`是父元素,`title`、`author`和`year`是子元素。XML元素可以嵌套,但不能交叉嵌套。 **XML的命名规则** XML的标签名称是大小写敏感的,并且必须...

    XML学习笔记(特别适合初学者)

    XML文档通常需要有文档类型定义(DTD,Document Type Definition)或XML Schema来定义元素的结构和规则。例如,`&lt;!DOCTYPE filelist SYSTEM "filelist.dtd"&gt;`声明了文档类型为`filelist`,并且引用了`filelist.dtd`...

    XML文件解析学习笔记···

    XML文件解析学习笔记 XML(eXtensible Markup Language)是一种标记语言,常用于存储和传输数据,尤其在Web服务和配置文件中广泛使用。Libxml是一个强大的C语言库,用于处理XML数据,包括解析、创建和修改XML文档。...

    XML学习大全(适合开发人员)

    《XML学习笔记.doc》可能包含了个人或团队在学习过程中整理的要点、难点解析、实战经验,以及一些易错点和最佳实践,这些都是理论知识之外的宝贵经验。 总的来说,这个“XML学习大全”资料包全面覆盖了XML的基础到...

    xml学习笔记

    ### XML学习笔记知识点详解 #### 一、XML技术概述及应用场景 **XML技术的主要目标**:XML(Extensible Markup Language,可扩展标记语言)是一种旨在描述具有关联性的数据的标记语言。XML允许用户自定义标签,通过...

    schema学习笔记

    ### Schema学习笔记 #### 关键概念与术语 **Schema**是一种用于定义XML文档结构和约束的语言。它通过一组规则来确保XML文档中的数据遵循特定格式和逻辑规则,从而提高数据的一致性和有效性。 #### 命名约定 - **...

Global site tag (gtag.js) - Google Analytics