XML(五)-Schema验证
来源:互联网 发布:易语言客户端发送数据 编辑:程序博客网 时间:2024/06/10 00:00
Schema
什么是Schema
Schema(模式) :其作用与DTD一样,也是用于验证XML文档的有效性,只不过它提供了比DTD更强大的功能和更细粒度的数据类型。另外,Schema可以自定义数据类型。
Schema也是一个XML文件,而DTD则不是。
Schema与DTD的比较
为何要Schema
Schema文档结构:
所有的Schema文档,其根元素必须叫schema。schema可以包含属性,比如:
<?xml version="1.0"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"targetNamespace="http://www.w3school.com.cn"xmlns="http://www.w3school.com.cn"elementFormDefault="qualified">......</xs:schema>
一个Schema的例子
新建一个dtd文件
<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="name" type="xs:string"></xs:element> <xs:element name="health" type="xs:int"></xs:element> <xs:element name="love" type="xs:int"></xs:element> <xs:element name="strain" type="xs:string"></xs:element> <xs:group name="mygroup" > <xs:sequence> <xs:element ref="name"></xs:element> <xs:element ref="health"></xs:element> <xs:element ref="love"></xs:element> <xs:element ref="strain"></xs:element> </xs:sequence> </xs:group>
<!--定义一个复合类型--> <xs:complexType name="dogType"> <xs:group ref="mygroup"></xs:group> </xs:complexType> <xs:element name="dog" type="dogType"></xs:element></xs:schema>
根据以上dtd写的xml文件
<?xml version="1.0" encoding="UTF-8"?><dog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="C:\Users\x\Desktop\schema\my3.xsd"> <name>安倍晋三</name> <health>0</health> <love>0</love> <strain>草狗</strain></dog>
Schema的数据类型
基本数据类型
扩展数据类型
其它数据类型
数据类型的约束
规则
Schema的元素类型
schema元素:
作用:包含已经定义的schema
用法:<xs:schema>
属性:xmlns targetNamespace elementFormDefault attributeFormDefault
Element元素
group元素
attribute元素
attributeGroup元素
综合案例:
Schema
<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="name" type="xs:string"></xs:element> <xs:element name="health" type="xs:int"></xs:element> <xs:element name="love" type="xs:int"></xs:element> <xs:element name="strain" type="xs:string"></xs:element> <xs:group name="mygroup" > <xs:sequence> <xs:element ref="name"></xs:element> <xs:element ref="health"></xs:element> <xs:element ref="love"></xs:element> <xs:element ref="strain"></xs:element> </xs:sequence> </xs:group> <xs:attribute name="id" type="xs:string"></xs:attribute> <xs:attribute name="color" type="xs:string"></xs:attribute> <xs:attributeGroup name="myattr"> <xs:attribute ref="id"></xs:attribute> <xs:attribute ref="color"></xs:attribute> </xs:attributeGroup> <xs:element name="dog"> <xs:complexType> <xs:group ref="mygroup"></xs:group> <xs:attributeGroup ref="myattr"></xs:attributeGroup> </xs:complexType> </xs:element></xs:schema>
xml
<?xml version="1.0" encoding="UTF-8"?><dog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="C:\Users\xx\Desktop\schema\my4.xsd" color="红色" id="id01"> <name/> <health>10</health> <love>10</love> <strain/></dog>
simpleType元素
综合例子1:schema文件
<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="name" type="xs:string"></xs:element> <xs:element name="love" type="xs:int"></xs:element> <xs:element name="strain" type="xs:string"></xs:element> <xs:element name="sex" type="xs:string"></xs:element> <xs:element name="health" type="myhealth"></xs:element> <xs:element name="birthday" type="listOfDates"></xs:element> <!--应用在已有的数据类型上面,对已有的数据类型做限制--> <xs:simpleType name="myhealth"> <xs:restriction base="xs:int"> <xs:minInclusive value="60"></xs:minInclusive> <xs:maxInclusive value="100"></xs:maxInclusive> </xs:restriction> </xs:simpleType> <xs:simpleType name="listOfDates"> <xs:list itemType="xs:date"/> </xs:simpleType> <xs:group name="myGroupElement"> <xs:sequence> <xs:element ref="name"></xs:element> <xs:element ref="health"></xs:element> <xs:element ref="love"></xs:element> <xs:element ref="sex"></xs:element> <xs:element ref="birthday"></xs:element> </xs:sequence> </xs:group> <xs:attributeGroup name="myattrGroup"> <xs:attribute name="id" type="xs:string" use="required"></xs:attribute> <xs:attribute name="color" type="xs:string" use="optional"></xs:attribute> <xs:attribute name="strain" type="xs:string" use="prohibited"></xs:attribute> </xs:attributeGroup> <xs:element name="penguin"> <!--匿名内部类--> <xs:complexType> <xs:group ref="myGroupElement"></xs:group> <xs:attributeGroup ref="myattrGroup"></xs:attributeGroup> </xs:complexType> </xs:element></xs:schema>
对应的xml文件
<?xml version="1.0" encoding="UTF-8"?><penguin xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema2.xsd" id="p01" color="黑色"> <name>旺财</name> <health>88</health> <love>100</love> <sex>黑狗</sex> <birthday>2010-01-01 2010-01-01 2010-01-01 2010-01-02</birthday></penguin>
综合例子2
<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"><xs:attribute name="allframesize"> <xs:simpleType> <xs:union> <xs:simpleType> <xs:restriction base="roadbikesize"/> </xs:simpleType> <xs:simpleType> <xs:restriction base="mountainbikesize"/> </xs:simpleType> </xs:union> </xs:simpleType></xs:attribute><xs:simpleType name="roadbikesize"> <xs:restriction base="xs:positiveInteger"> <xs:enumeration value="16"/> <xs:enumeration value="20"/> <xs:enumeration value="28"/> </xs:restriction></xs:simpleType><xs:simpleType name="mountainbikesize"> <xs:restriction base="xs:string"> <xs:enumeration value="small"/> <xs:enumeration value="medium"/> <xs:enumeration value="large"/> </xs:restriction></xs:simpleType><xs:element name="myelement"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string"></xs:element> </xs:sequence> <xs:attribute ref="allframesize"></xs:attribute> </xs:complexType></xs:element></xs:schema>
对应的xml文件
<?xml version="1.0" encoding="UTF-8"?><myelement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema3.xsd" allframesize="small"> <name/></myelement>
simpleContent元素
应用于complexType,对它的内容进行约束和扩展
好了,关于Schema我就讲这么多了,更多的Schema的用法,大家可以参考W3chool,对于Schema文档大家只要能看懂约束即可。
阅读全文
0 0
- XML(五)-Schema验证
- 用Schema验证XML
- schema 验证xml初例
- XML之Schema验证
- schema验证xml
- XML之Schema验证
- XML之Schema验证
- Schema验证XML文件
- Schema验证XML
- Schema验证XML
- 用Schema验证XML文档
- xml基础、DTD验证、Schema验证
- 理解XML Schema: XML Schema初步 (五)
- 如何用XML SCHEMA 验证xml文?
- 使用XML schema验证xml 文件
- 使用XML Schema验证XML数据输入
- 使用schema验证xml文档的合法性
- 利用Schema验证xml的代码
- Java-面向对象
- XML(一)-语法 属性 实体 处理指令 样式单 CDATA节
- XML(二)有效的XML: DTD(文档类型定义)介绍与三种使用方式
- XML(三)-DTD详细讲解
- XML(四)-命名空间
- XML(五)-Schema验证
- XML(六)-DOM解析
- 灵活构建和拼接Laravel的SQL语句
- 面向对象-异常机制
- XML(七)-DOM解析
- XML(八)-XML的DOM解析
- ZCMU-1017: 勇者斗恶龙
- XML(九)-使用DOM来生成xml文档
- XML(十)- SAX解析