Xml Schema的用途
1. 定义一个Xml文档中都有什么元素
2. 定义一个Xml文档中都会有什么属性
3. 定义某个节点的都有什么样的子节点,可以有多少个子节点,子节点出现的顺序
4. 定义元素或者属性的数据类型
5. 定义元素或者属性的默认值或者固定值
Xml Schema的根元素:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 表示数据类型等定义来自w3
targetNamespace="http://www.w3schools.com" 表示文档中要定义的元素来自什么命名空间
xmlns="http://www.w3schools.com"表示此文档的默认命名空间是什么
elementFormDefault="qualified"> 表示要求xml文档的每一个元素都要有命名空间指定
……定义主体部分……
</xs:schema>
如何定义一个简单元素
<xs:element 此处表示要定义一个元素
name=”color” 表示要定义元素的名称
type=”xs:string” 表示要定义元素的数据类型
default=”red” 表示定义元素的默认值
fixed=”red”/> 表示要定义元素的固定值,此元素只可以取“red”值
以上定义了一个简单元素,元素实例:<color>red</color>
如何定义一个属性
<xs:attribute
name=”birthday” 表示要定义属性的名字
type=”xs:date” 表示要定义属性的数据类型
default=”2001-01-11” 表示要定义属性的默认值
fixed=”2001-01-11” 表示要定义属性的固定值
use=”required”/> 表示此属性是否是必须指定的,即如果不指定就不符合Schema,默认没有use=”required”属性表示属性可有可无
如何定义元素或者属性值的限制
1.最大值最小值限制
<xs:element name="age">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/> 大于等于0,<xs: minExclusive>表示最小值但是不包括指定值
<xs:maxInclusive value="120"/> 小于等于120,<xs: maxExclusive>
</xs:restriction>
</xs:simpleType>
</xs:element>
2.枚举限制,指只能在指定的几个值中取值
<xs:element name="car" type="carType"/>
<xs:simpleType name="carType">
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
3.模式(pattern)限制,指字符串的格式必须满足制定的匹配模式
例子
|
说明
|
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
|
表示只能在小写字母中取一个值
|
<xs:element name="initials">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z][A-Z][A-Z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
|
表示必须是三个大写字母
|
<xs:element name="initials">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
|
表示必须是三个字母,可以是大写或小写的
|
<xs:element name="choice">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[xyz]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
|
表示必须是xyz中的一个
|
<xs:element name="prodid">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
|
表示数字的范围是0-99999
|
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z])*"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
|
表示必须是0或者多个小写字符组成的序列
|
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z][A-Z])+"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
|
表示必须是多个字母。
|
<xs:element name="gender">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="male|female"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
|
表示是male或者female中的一个
|
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9]{8}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
|
表示必须是8个字母数字字符
|
4.字符串长度的限制
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
长度必须是8。
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="5"/>
<xs:maxLength value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
表示长度在5-8之间
6.对于空白字符的限制
示例
|
说明
|
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
|
保留原样,表示xml处理器不会移除或者替换任何空白字符
|
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="replace"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
|
指回车,换行,Tab都会被替换成空格处理
|
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
|
去掉多于一个空格,和html中处理方式相同
|
如何定义复杂类型
复杂类型是指定义元素中包含属性或者子元素的类型
1.定义只包含子元素的复杂类型
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
2.定义只包含属性的复杂类型
<xs:element name="product" type="prodtype"/>
<xs:complexType name="prodtype">
<xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:complexType>
3.定义只包含内容的复杂类型
<xs:element name="shoesize" type="shoetype"/>
<xs:complexType name="shoetype">
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="country" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
4.定义包含内容和子元素混合的复杂类型
<xs:element name="letter">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="orderid" type="xs:positiveInteger"/>
<xs:element name="shipdate" type="xs:date"/>
</xs:sequence>
</xs:complexType>
</xs:element>
以上定义对应的Xml
<letter>
Dear Mr.<name>John Smith</name>.
Your order <orderid>1032</orderid>
will be shipped on <shipdate>2001-07-13</shipdate>.
</letter>
5.定义包含属性和子元素的复杂类型
使用指示器
在Xsd中的指示器包括
1.顺序指示器
1)All
英文解释:The <all> indicator specifies that the child elements can appear in any order, and that each child element must occur only once
规定子元素能够以任意顺序出现,每个子元素必须只出现一次。
<xs:element name="person">
<xs:complexType>
<xs:all>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:all>
</xs:complexType>
</xs:element>
2)Choice
指示子元素中可以出现一个或者另一个
<xs:element name="person">
<xs:complexType>
<xs:choice>
<xs:element name="employee" type="employee"/>
<xs:element name="member" type="member"/>
</xs:choice>
</xs:complexType>
</xs:element>
3)Sequence
指示子元素必须按照顺序出现
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
2.出现次数指示器minOccurs,maxOccurs
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string"
maxOccurs="10" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
3.组指示器(group Indicators)
用来定义相关的一组元素
<xs:group name="persongroup">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="birthday" type="xs:date"/>
</xs:sequence>
</xs:group>
<xs:element name="person" type="personinfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:group ref="persongroup"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
用来定义一组相关的属性
<xs:attributeGroup name="personattrgroup">
<xs:attribute name="firstname" type="xs:string"/>
<xs:attribute name="lastname" type="xs:string"/>
<xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>
<xs:element name="person">
<xs:complexType>
<xs:attributeGroup ref="personattrgroup"/>
</xs:complexType>
</xs:element>
Any关键字
表示可以有任意元素
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:any minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
anyAttribute关键字
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
<xs:anyAttribute/>
</xs:complexType>
</xs:element>
substitutionGroup关键字
表示某一个元素和另一个替代元素定义相同
<xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/>
<xs:complexType name="custinfo">
<xs:sequence>
分享到:
相关推荐
6. **引用和重用**:通过`import`和`include`元素,可以引用或包含其他XSD文件,便于模块化设计。 ### XSD2.0 XML Schema 2.0 是一个重要的更新,发布于2009年,它引入了许多新特性和改进,包括: 1. **选择器和...
XML Schema (XSD) 是一种用于定义XML文档结构和数据类型的规范。它是W3C推荐的标准,用于确保XML文档遵循一套预定义的规则,从而提高数据的准确性和一致性。通过XSD,我们可以清晰地定义XML文档中允许的元素、属性、...
XSD文件使用 `<element>`、`<complexType>`、`<attribute>` 等标签来定义这些元素。 3. **完善XSD文件**:细化XSD文件,添加必要的约束条件,比如元素的出现次数(minOccurs和maxOccurs)、数据类型限制(如整数、...
在给定的压缩包文件中,我们看到的是与Java Web开发框架Struts 2和Servlet容器相关的DTD和XSD文件。 首先,让我们了解DTD和XSD的基本概念: 1. DTD(Document Type Definition):DTD是一种早期的XML文档结构定义...
总之,Spring 3.0的XSD文件是理解和配置Spring框架的关键,它们定义了XML配置的结构和语义,使得Spring应用的配置更加规范、易于维护和扩展。在开发过程中,熟悉这些XSD文件能帮助开发者更好地掌握Spring的精髓,...
当开发者在Xamarin Studio或Visual Studio中编辑Android布局文件时,这个XSD文件使得IDE可以提供代码补全、语法高亮和错误检查等智能提示功能,极大地提高了开发效率。 另一方面,`schemas.android....
首先,Dubbo.xsd文件本质上是一个XML Schema定义文件,用于规范和验证Dubbo配置文件(通常是dubbo.xml)的结构和内容。它定义了一系列的XML元素和属性,这些元素和属性对应于Dubbo框架中的各种配置项,如服务提供者...
XSD文件是XML文档的模式定义,它为XML提供了结构约束和数据类型定义,使得XML数据的解析和验证更为规范。本篇文章将深入探讨`dubbo.xsd`文件及其在Dubbo中的作用,旨在帮助读者理解Dubbo的服务治理机制。 首先,`...
在ONVIF上下文中,XSD文件定义了交换的数据格式和规则。例如,设备信息、媒体配置、PTZ位置等数据的XML表示都遵循相应的XSD模式。这确保了不同设备之间数据交换的一致性和准确性。 在“onvif网站下载的原wsdl和xsd...
### XSD 文件规则和语法详解 ...以上XSD文件定义了一个名为`note`的元素,其中包含了四个子元素`to`、`from`、`heading`和`body`。这些子元素的数据类型均为`xs:string`。XML文件按照XSD文件中定义的模式进行了编写。
标题中的“spring5.0的全部xsd文件”是指Spring 5.0版本所使用的全部XML Schema定义文件的集合。这些文件包含了Spring框架配置的各种元素和属性的定义,使得开发者能够按照规范编写Spring配置文件,确保IDE(如...
3. **验证XSD文件**:一旦生成了XSD文件,建议对生成的模式进行验证,以确保其准确无误。可以使用专门的工具如XMLSpy或其他在线验证服务来完成这项工作。 #### 四、示例 为了更好地理解这一过程,下面提供了一个...
XSD文件则用于定义数据结构和数据类型,它为XML文档提供了结构化的语义规则。在ONVIF场景中,XSD文件规定了如设备信息、媒体配置、事件通知等数据应该如何编码成XML。通过XSD,开发者可以验证发送和接收的XML消息...
6. **验证转化**:完成XSD文件编写后,可以用这个XSD文件来验证XML文档是否符合定义的结构和约束。 XSD验证XML的合法性: 1. **解析XSD**:首先,解析XSD文件以获取其定义的规则。 2. **匹配元素和属性**:遍历XML...
【描述】"淘淘商城的dubbo.xsd文件"是用来定义Dubbo服务的XML配置文件,其中包含了服务提供者、消费者、协议、注册中心等核心元素的配置信息。这个文件对于理解和维护淘淘商城的后端服务至关重要,因为它定义了服务...
- **绑定配置**:通过在XSD文件中添加特殊的JAXB注解,或者创建一个独立的绑定文件(如`jaxb-bindings.xml`),可以自定义生成的Java类的特性,例如命名空间前缀、类名等。 - **生成的Java类**:生成的Java类通常...
在Spring框架中,XSD文件用于定义XML配置文件的结构和规则,确保配置文件的语法正确性,使得Spring容器能够正确解析和加载配置。 描述中的错误 "cvc-complex-type.2.4.a: Invalid content was found starting with ...
XSD文件是一种XML文档,用于定义XML文档的结构和数据类型。在Spring框架中,XSD文件为Spring配置文件提供了语义化的元素和属性,使得开发者能够用XML来声明和配置bean、依赖关系、AOP代理、事务管理等。 1. ...