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>
分享到:
相关推荐
1. 定义一个Xml文档中都有什么元素 2. 定义一个Xml文档中都会有什么属性 3. 定义某个节点的都有什么样的子节点,可以有多少个子节点,子节点出现的顺序 4. 定义元素或者属性的数据类型 5. 定义元素或者属性的...
生成XML文件的定义规范文件XSD,能够严格定义XML文件的内容样式,对于刚学习XSD的人有一定的帮助。
XsdParser是一个将XML定义文件(.xsd)解析为Java对象列表的库。 每个不同的XSD标记都有一个对应的Java类,并且给定XSD类型的属性表示为该类的字段。 所有这些类都源自同一抽象类XsdAbstractElement 。 XSD元素的...
附件是我写的一个demo程序,该程序的功能是根据一个定义好的XSD文件去检查指定的XML文件是否满足XSD的约束。 这里的约束比标准的约束要弱一些,比如:这里的约束不限制元素出现的顺序,只关心有没有这个元素。 我...
当EXECL表格输出到XML的时候,需要一个XSD定义。 有时候我们需要手动生成这个文件。 我们也可用一个带有“两行数据”的的XML由EXECL自动生成。
Xgen介绍xgen是一个用Go语言编写的库,提供了一组允许您解析XSD(XML模式定义)文件的功能。 该库需要Go版本1.10或更高版本。 可以使用go的内置文档工具或在在线查看完整的API文档。 xgen命令自动将XML模式文件编译...
使用goetas-webservices/xsd2php您可以将任何XSD / WSDL定义转换为PHP类。 XSD2PHP还可以生成与兼容的元数据,该元数据可用于序列化/反序列化对象实例。 安装 有一种推荐的方法可以通过安装xsd2php: 将依赖项...
在Constants接口中,定义了config.properties文件的Path以及用于检索其中定义的值的键。 该练习是使用URL上的公共xsd进行的: ...但是,它应该可以与任何有效的xsd一起正常使用。 本文档中特意省略了重音符号
PLCOpenXML结构定义文件,结合系统自带xsd工具可生成PLCOpenXML定义类。
Xml完成 此扩展通过提供提示来... 转到定义支持(使用XSD作为目标) 配置 每个XML名称空间的扩展配置 "xmlComplete.schemaMapping" : [ { "xmlns" : "https://github.com/avaloniaui" , "xsdUri" : "https://raw.g
XSD 将xmlns:exts =“ ”添加到bpmn:definitions将使访问项目的已定义xsd文件更加容易。 这引用了下面定义的所有扩展元素。内部条件通过在(bpmn:sequenceFlow,bpmn:process,bpmn:startEvent)中使用bpmn:...
由于它们实际上是从 JAXB 生成的 Java 对象,因此它们由模式文件支持,并且可以轻松地序列化为 XML。 由于它们实际上是使用插件生成的,它们与 JPA 兼容。 到目前为止,如此标准。 使用这些 bean 进行编程需要普通...
- XSD文件:1个,用于定义框架配置的结构。 功能特点: - 快速构建:支持通过Java快速搭建Flink流批一体应用程序; - 数据处理:实现异构数据库间的实时同步及ETL操作; - 简化Flink SQL:使Flink SQL的使用变得...
POCD_MT000040就是CDA的消息模型,而CDA.xsd是对POCD_MT000040封装一个根元素。 其它的几个xsd文件,是HL7中的数据类型及编码术语的定义文件。
本资源将《IEC 61850-6:与变电站相关的IED的通信配置描述语言》附录A中SCL定义文件提取出来,还原为xsd格式,供大家使用。
NULL 博文链接:https://alpha2009.iteye.com/blog/677314
UrlRewritingNet是一个可以在ASP.NET2.0里使用的实现url重写的一个组件,并且是开源的,使用这个控件,大家通过定义里面...·拷贝urlrewritingnet.xsd文件 ·定义Url重写规则 其中在web.config里需要做如下的配置
java过滤器和监听器的使用 1.1. 安装流程设计器插件(Graphical Process Designer) 1, jBPM4.4包含了一个图形化设计流程的工具(GPD),它是...5, 流程定义文件的xsd文件的路径为:JBPM_HOME/src/jpdl-4.3.xsd
掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单数据类型,如何定义复杂数据类型,全局/局部元素和数据类型之间的区别;如何将XML Schema文档关联到XML实例数据文档,并完成文档的...
从2 5 2的核心包里能找到ehcache.xml,可以作为我们进行同步配置的参照。...跟ehcache.xml同级放着ehcache.xsd文件,是xml的结构定义文件,其实ehcache.xml配置文件开头的超链接配置也同样配置着该xml结构定义文件。