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基础知识详解 #### 一、XML与Schema概述 XML (Extensible Markup Language) 是一种标记语言,用于描述数据的...这些知识点不仅对于学习XML Schema至关重要,也是理解XML文档结构和数据交换标准的关键。
"XML Schema 学习笔记" XML Schema 是一种基于 XML 的语言,用于定义 XML 文档的结构和约束。它可以描述 XML 文档的格式、元素、属性、数据类型、默认值、固定值等信息。XML Schema 的作用类似于 DTD,但它具有更多...
由于提供的文件信息中包含了大量的XML学习资料,且内容比较丰富,我们将逐一详细解释这些内容所涵盖的知识点。 **XML简介** XML是Extensible Markup Language(可扩展标记语言)的缩写,它是一种用于标记电子文件...
除了DTD,XML还可以使用Schema进行文档定义,XML Schema的优势在于其本身就是XML格式,易于阅读和编写,且支持的数据类型比DTD更为丰富。 在XML的应用中,DOM(Document Object Model)和SAX(Simple API for XML)...
【XML 高级学习笔记】 XML(Extensible Markup Language)是一种可扩展标记语言,与HTML类似,但其设计目标是存储和传输数据,而非呈现数据。XML允许用户自定义标签,使得它成为一种自描述的语言,并且是W3C的标准...
### 北京圣思园XML学习笔记核心知识点详解 #### XML概述 - **XML全称**:eXtensible Markup Language(可扩展标记语言) - **学习XML的原因**: - 数据交换的需求日益增长,XML成为了电子商务的重要基础之一。 - ...
1. **命名空间**:通过引入命名空间,可以避免元素名称的冲突,如`<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">`。 2. **DTD(Document Type Definition)**:定义XML文档的结构,用于验证文档是否符合...
在此教程中,你将学习如何在应用程序中读取和创建 XML Schema 语言,XML Schema 为何比 DTD 更加强大,以及如何在您的应用程序中使用 XML Schema。 (注,以上文档完全是我整理的难点要点的笔记!)
本压缩包包含了关于XML的学习笔记、课件和实例,旨在帮助初学者全面理解和掌握XML的核心概念与应用。 XML的基础知识包括以下几个关键点: 1. **XML的基本结构**:XML文档由一系列元素构成,每个元素由起始标签(如...
XML的学习不仅仅是理解这些基本概念,还包括命名空间、DTD(文档类型定义)或XML Schema的使用,XPath和XSLT(用于查询和转换XML)等高级主题。掌握XML能帮助开发者更好地理解和处理结构化数据,从而在各种应用场景...
**Schama —— XML文档约束技术 学习笔记** XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件、Web服务等场景。为了确保XML文档的数据结构正确、完整,避免数据错误,XML...
<title>XML学习笔记 张三 <year>2022 ``` 在这个例子中,`book`是父元素,`title`、`author`和`year`是子元素。XML元素可以嵌套,但不能交叉嵌套。 **XML的命名规则** XML的标签名称是大小写敏感的,并且必须...
XML文档通常需要有文档类型定义(DTD,Document Type Definition)或XML Schema来定义元素的结构和规则。例如,`<!DOCTYPE filelist SYSTEM "filelist.dtd">`声明了文档类型为`filelist`,并且引用了`filelist.dtd`...
XML文件解析学习笔记 XML(eXtensible Markup Language)是一种标记语言,常用于存储和传输数据,尤其在Web服务和配置文件中广泛使用。Libxml是一个强大的C语言库,用于处理XML数据,包括解析、创建和修改XML文档。...
《XML学习笔记.doc》可能包含了个人或团队在学习过程中整理的要点、难点解析、实战经验,以及一些易错点和最佳实践,这些都是理论知识之外的宝贵经验。 总的来说,这个“XML学习大全”资料包全面覆盖了XML的基础到...
### XML学习笔记知识点详解 #### 一、XML技术概述及应用场景 **XML技术的主要目标**:XML(Extensible Markup Language,可扩展标记语言)是一种旨在描述具有关联性的数据的标记语言。XML允许用户自定义标签,通过...
### Schema学习笔记 #### 关键概念与术语 **Schema**是一种用于定义XML文档结构和约束的语言。它通过一组规则来确保XML文档中的数据遵循特定格式和逻辑规则,从而提高数据的一致性和有效性。 #### 命名约定 - **...