Java程序员从笨鸟到菜鸟之(二十五)XML之Schema验证
2012-04-06 13:03
453 查看
XML Schema是用一套预先规定的XML元素和属性创建的,这些元素和属性定义了XML文档的结构和内容模式。XML Schema规定XML文档实例的结构和每个元素/属性的数据类型。
为什么要用Schema
DTD 的局限性
1.DTD不遵守XML语法(写XML文档实例时候用一种语法,写DTD的时候用另外一种语法)
2.DTD数据类型有限(与数据库数据类型不一致)
3.DTD不可扩展
4.DTD不支持命名空间(命名冲突)
.Schema的新特性
1.Schema基于XML语法
2.Schema可以用能处理XML文档的工具处理
3.Schema大大扩充了数据类型,可以自定义数据类型
4.Schema支持元素的继承—Object-Oriented’
5.Schema支持属性组
一:Schema基础知识
1. Schema(模式):其作用与dtd一样,也是用于验证XML文档的有效性,只不过它提供了比dtd更强大的功能和更细粒度的数据类型,另外Schema还可以自定义数据类型。此外,Schema也是一个XML文件,而dtd则不是。
2. 所有的schema文档,其根元素必须为schema。
3.Schema的文档结构
4.schema的数据类型
1.基本类型
2.扩展数据类型
3.数据类型的特性
二:schema的元素类型
1.schema元素:
作用:包含已经定义的schema
用法:<xs:schema>
•属性
–xmlns –targetNamespace
2.element元素作用:声明一个元素
属性: –name –type –ref –minOccurs –maxOccurs
–substitutionGroup –fixed –default
示例:
3.group元素
作用:把一组元素声明组合在一起,以便它们能够一起被复合类型应用
•属性:name/ref
示例:
4.attribute元素
作用:声明一个属性
•属性:name/type/ref/use
•示例:
5.attributeGroup元素
作用:把一组属性声明组合在一起,以便可以被复合类型应用
.属性:name/ref
.示例:
6.simpleType元素
作用:定义一个简单类型,它决定了元素和属性值的约束和相关信息
.属性:name
.内容:应用已经存在的简单类型,三种方式:
–restrict→限定一个范围
–list→从列表中选择
–union→包含一个值的结合
1.子元素为:<xs:restriction> 定义一个约束条件
2.子元素为:<xs:list>从一个特定数据类型的集合中选择定义一个简单类型元素
3.子元素为:<xs:union>从一个特定简单数据类型的集合中选择定义一个简单类型元素
示例:<xs:simpleType name="roadbikesize">
7.complexTyep类型
作用:定义一个复合类型,它决定了一组元素和属性值的约束和相关信息
•属性:name
•示例:
simpleType元素和complexTyep类型的区别(重要)
simpleType类型的元素中不能包含元素或者属性。
•当需要声明一个元素的子元素和/或属性时,用complexType;
•当需要基于内置的基本数据类型定义一个新的数据类型时,用simpleType。
8.simplecontent元素
作用:应用于complexType,对它的内容进行约束和扩展
9.choice元素
作用:允许唯一的一个元素从一个组中被选择
.属性:minOccurs/maxOccurs
10.sequence元素
作用:给一组元素一个特定的序列
一个完整的schema样例:
Schema总结:
Schema是另一种文档类型定义,它遵循XML的语言规范。
.Schema是可扩展的,支持命名空间;
.Schema支持更多的数据类型与元素类型;
.Schema用element声明元素,用attribute声明元素的属性;
.Schema用simpleType定义简单类型,用complexType定义复杂类型。
为什么要用Schema
DTD 的局限性
1.DTD不遵守XML语法(写XML文档实例时候用一种语法,写DTD的时候用另外一种语法)
2.DTD数据类型有限(与数据库数据类型不一致)
3.DTD不可扩展
4.DTD不支持命名空间(命名冲突)
.Schema的新特性
1.Schema基于XML语法
2.Schema可以用能处理XML文档的工具处理
3.Schema大大扩充了数据类型,可以自定义数据类型
4.Schema支持元素的继承—Object-Oriented’
5.Schema支持属性组
一:Schema基础知识
1. Schema(模式):其作用与dtd一样,也是用于验证XML文档的有效性,只不过它提供了比dtd更强大的功能和更细粒度的数据类型,另外Schema还可以自定义数据类型。此外,Schema也是一个XML文件,而dtd则不是。
2. 所有的schema文档,其根元素必须为schema。
3.Schema的文档结构
4.schema的数据类型
1.基本类型
2.扩展数据类型
3.数据类型的特性
二:schema的元素类型
1.schema元素:
作用:包含已经定义的schema
用法:<xs:schema>
•属性
–xmlns –targetNamespace
2.element元素作用:声明一个元素
属性: –name –type –ref –minOccurs –maxOccurs
–substitutionGroup –fixed –default
示例:
<xs:element name="cat" type="xs:string"/> <xs:element name="dog" type="xs:string"/> <xs:element name="pets">
3.group元素
作用:把一组元素声明组合在一起,以便它们能够一起被复合类型应用
•属性:name/ref
示例:
<xs:group name="myGroupOfThings"> <xs:sequence> <xs:element ref="thing1"/> <xs:element ref="thing2"/> </xs:sequence> </xs:group>
4.attribute元素
作用:声明一个属性
•属性:name/type/ref/use
•示例:
<xs:complexType name="myComplexType"> <xs:attribute name="mybaseattribute" type="xs:string" use="required"/> </xs:complexType>
5.attributeGroup元素
作用:把一组属性声明组合在一起,以便可以被复合类型应用
.属性:name/ref
.示例:
<xs:attributeGroup name="myAttributeGroup"> <xs:attribute name="someattribute1" type="xs:integer"/> <xs:attribute name="someattribute2" type="xs:string"/> </xs:attributeGroup>
6.simpleType元素
作用:定义一个简单类型,它决定了元素和属性值的约束和相关信息
.属性:name
.内容:应用已经存在的简单类型,三种方式:
–restrict→限定一个范围
–list→从列表中选择
–union→包含一个值的结合
1.子元素为:<xs:restriction> 定义一个约束条件
2.子元素为:<xs:list>从一个特定数据类型的集合中选择定义一个简单类型元素
3.子元素为:<xs:union>从一个特定简单数据类型的集合中选择定义一个简单类型元素
示例:<xs:simpleType name="roadbikesize">
<xs:restriction base="xs:positiveInteger"> <xs:enumeration value="46"/> <xs:enumeration value="52"/> <xs:enumeration value="55"/> </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:schema>
7.complexTyep类型
作用:定义一个复合类型,它决定了一组元素和属性值的约束和相关信息
•属性:name
•示例:
<xs:complexType name="internationalShoeSize"> <xs:simpleContent> <xs:extension base="xs:decimal"> <xs:attribute name="sizing" type="xs:string"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name="myShoeSize" type="internationalShoeSize"/>
simpleType元素和complexTyep类型的区别(重要)
simpleType类型的元素中不能包含元素或者属性。
•当需要声明一个元素的子元素和/或属性时,用complexType;
•当需要基于内置的基本数据类型定义一个新的数据类型时,用simpleType。
8.simplecontent元素
作用:应用于complexType,对它的内容进行约束和扩展
9.choice元素
作用:允许唯一的一个元素从一个组中被选择
.属性:minOccurs/maxOccurs
10.sequence元素
作用:给一组元素一个特定的序列
一个完整的schema样例:
<xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema targetNamespace="http://tempuri.org/po.xsd" xmlns="http://tempuri.org/po.xsd" > <xs:element name="purchaseOrder" type="PurchaseOrderType"/> <xs:element name="comment" type="xs:string"/> <xs:complexType name="PurchaseOrderType"> <xs:sequence> <xs:element name="shipTo" type="USAddress"/> <xs:element name="billTo" type="USAddress"/> <xs:element ref="comment" minOccurs="0"/> <xs:element name="items" type="Items"/> </xs:sequence> <xs:attribute name="orderDate" type="xs:date"/> </xs:complexType> <xs:complexType name="USAddress"> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="street" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="state" type="xs:string"/> <xs:element name="zip" type="xs:decimal"/> </xs:sequence> <xs:attribute name="country" type="xs:NMTOKEN" fixed="US"/> </xs:complexType> <xs:complexType name="Items"> <xs:sequence> <xs:element name="item" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="productName" type="xs:string"/> <xs:element name="quantity"> <xs:simpleType> <xs:restriction base="xs:positiveInteger"> <xs:maxExclusive value="100"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="USPrice" type="xs:decimal"/> <xs:element ref="comment" minOccurs="0"/> <xs:element name="shipDate" type="xs:date" minOccurs="0"/> </xs:sequence> <xs:attribute name="partNum" type="SKU" use="required"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <!-- Stock Keeping Unit, a code for identifying products --> <xs:simpleType name="SKU"> <xs:restriction base="xs:integer"> <xs: minInclusive=“2”/> <xs:maxInclusive=“10”> </xs:restriction> </xs:simpleType> </xs:schema>
Schema总结:
Schema是另一种文档类型定义,它遵循XML的语言规范。
.Schema是可扩展的,支持命名空间;
.Schema支持更多的数据类型与元素类型;
.Schema用element声明元素,用attribute声明元素的属性;
.Schema用simpleType定义简单类型,用complexType定义复杂类型。
相关文章推荐
- Java程序员从笨鸟到菜鸟之(二十五)XML之Schema验证
- Java程序员从笨鸟到菜鸟之(二十五)XML之Schema验证
- Java程序员从笨鸟到菜鸟之(二十五)XML之Schema验证
- Java程序员从笨鸟到菜鸟之(二十五)XML之Schema验证
- Java程序员从笨鸟到菜鸟之(二十四)Xml基础详解和DTD验证
- Java程序员从笨鸟到菜鸟之(二十四)Xml基础详解和DTD验证
- Java程序员从笨鸟到菜鸟之(二十四)Xml基础详解和DTD验证
- Java程序员从笨鸟到菜鸟之(二十四)Xml基础详解和DTD验证
- Java程序员从笨鸟到菜鸟之(二十四)Xml基础详解和DTD验证
- Java程序员从笨鸟到菜鸟之(二十六)XML之DOM和SAX解析
- Java程序员从笨鸟到菜鸟之(二十六)XML之DOM和SAX解析
- Java程序员从笨鸟到菜鸟之(二十七)XML之Jdom和DOM4J解析 .
- Java程序员从笨鸟到菜鸟之(二十七)XML之Jdom和DOM4J解析 .
- Java程序员从笨鸟到菜鸟之(二十六)XML之DOM和SAX解析
- Java程序员从笨鸟到菜鸟之(二十七)XML之Jdom和DOM4J解析 .
- Java程序员从笨鸟到菜鸟之(二十七)XML之Jdom和DOM4J解析 .
- Java程序员从笨鸟到菜鸟之(二十六)XML之DOM和SAX解析
- Java程序员从笨鸟到菜鸟之(七十五)细谈struts2(十四)struts2+ajax实现异步验证
- Java程序员从笨鸟到菜鸟之(七十五)细谈struts2(十四)struts2+ajax实现异步验证
- java程序员从笨鸟到菜鸟之(三十二)集合之集合实用类