schema概述
来源:互联网 发布:股票交易记录软件 编辑:程序博客网 时间:2024/06/16 22:07
Schema
XML Schema是用一套预先规定的XML元素和属性创建的,这些元素和属性定义了XML文档的结构和内容模式。
XML Schema规定XML文档实例的结构和每个元素/属性的数据类型。
Schema基本格式及与DTD区别
区别
l DTD 的局限性
§ DTD不遵守XML语法(写XML文档实例时候用一种语法,写DTD的时候用另外一种语法)
§ DTD数据类型有限(与数据库数据类型不一致)
§ DTD不可扩展
§ DTD不支持命名空间(命名冲突)
l Schema的新特性
§ Schema基于XML语法
§ Schema可以用能处理XML文档的工具处理
§ Schema大大扩充了数据类型,可以自定义数据类型
§ Schema支持元素的继承—Object-Oriented’ish
§ Schema支持属性组
schema元素
- 作用:包含已经定义的schema
- 用法:<xs:schema>
- 属性:
- xmlns
- targetNamespace
- elementFormDefault
元素
<xs:element name="cat" type="xs:string"/>
<xs:element name="dog" type="xs:string"/>
<xs:element name="pets">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="cat"/>
<xs:element ref="dog"/>
</xs:choice>
</xs:complexType>
</xs:element>
group元素
- 作用:把一组元素声明组合在一起,以便它们能够一起被复合类型应用
- 属性:name/ref
- 示例:
<xs:element name="thing1" type="xs:string"/>
<xs:element name="thing2" type="xs:string"/>
<xs:attribute name="myAttribute" type="xs:decimal"/>
<xs:group name="myGroupOfThings">
<xs:sequence>
<xs:element ref="thing1"/>
<xs:element ref="thing2"/>
</xs:sequence>
</xs:group>
<xs:complexType name="myComplexType">
<xs:group ref="myGroupOfThings"/>
<xs:attribute ref="myAttribute"/>
</xs:complexType>
attribute元素
- 作用:声明一个属性
- 属性:name/type/ref/use
- 示例:
<xs:complexType name="myComplexType">
<xs:attribute name="mybaseattribute" type="xs:string" use="required"/>
</xs:complexType>
attributeGroup元素
- 作用:把一组属性声明组合在一起,以便可以被复合类型应用
- 属性:name/ref
- 示例:
<xs:attributeGroup name="myAttributeGroup">
<xs:attribute name="someattribute1" type="xs:integer"/>
<xs:attribute name="someattribute2" type="xs:string"/>
</xs:attributeGroup>
<xs:complexType name="myElementType">
<xs:attributeGroup ref="myAttributeGroup"/>
</xs:complexType>
simpleType元素
- 作用:定义一个简单类型,它决定了元素和属性值的约束和相关信息
- 属性:name
- 内容:应用已经存在的简单类型,三种方式:
- restrict→限定一个范围
- list→从列表中选择
- union→包含一个值的结合
- 示例:
1. 子元素为:<xs:restriction>(定义一个约束条件)
实例
<xs:simpleType name="freezeboilrangeInteger">
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>
2.子元素为:<xs:list>
从一个特定数据类型的集合中选择定义一个简单类型元素
<xs:simpleType name="listOfDates">
<xs:list itemType="xs:date">
</xs:simpleType>
3.子元素为:<xs:union>
从一个特定简单数据类型的集合中选择定义一个简单类型元素
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<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="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>
complexType元素
- 作用:定义一个复合类型,它决定了一组元素和属性值的约束和相关信息
- 属性: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"/>
complexType与simpleType区别
- simpleType类型的元素中不能包含元素或者属性。
- 当需要声明一个元素的子元素和/或属性时,用complexType;
- 当需要基于内置的基本数据类型定义一个新的数据类型时,用simpleType。
simpleContent元素
- 作用:应用于complexType,对它的内容进行约束和扩展。
- 示例:
<xs:element name="shoeSize">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="sizing">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="US"/>
<xs:enumeration value="European"/>
<xs:enumeration value="UK"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
choice元素
- 作用:允许唯一的一个元素从一个组中被选择
- 属性:minOccurs/maxOccurs
- 示例:
<xs:complexType name="chadState">
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element ref="selected"/>
<xs:element ref="unselected"/>
<xs:element ref="dimpled"/>
<xs:element ref="perforated"/>
</xs:choice>
<xs:attribute name="candidate" type="candidateType"/>
</xs:complexType>
unique元素
- 作用:定义一个属性或元素值,它必须在一个特定范围内。
- 示例:
xs:complexType name="customerOrderType">
<xs:sequence>
<xs:element name="item" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="itemID" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="CustomerID" type="xs:string"/>
</xs:complexType>
<xs:element name="ordersByCustomer">
<xs:complexType>
<xs:sequence>
<xs:element name="customerOrders" type="customerOrderType"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="oneCustomerOrdersforEachCustomerID">
<xs:selector xpath="mstns:customerOrders"/>
<xs:field xpath="@customerID"/>
</xs:unique>
</xs:element>
sequence元素
- 作用:给一组元素一个特定的序列
- 示例:
<xs:element name="zooAnimals">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="elephant"/>
<xs:element name="bear"/>
<xs:element name="giraffe"/>
</xs:sequence>
</xs:complexType>
</xs:element>
用schema的数据及元素类型声明XML文档的元素和属性
- 声明元素
- <xs:element>
- 声明属性
- <xs:attribute>
声明元素的实例
声明第一个元素
<xs:element name="cat" type="xs:string"/>
<xs:element name="dog" type="xs:string"/>
<xs:element name="redDog" type="xs:string" substitutionGroup="dog" />
<xs:element name="brownDog" type="xs:string" substitutionGroup ="dog" />
<xs:element name="pets">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="cat"/>
<xs:element ref="dog"/>
</xs:choice>
</xs:complexType>
</xs:element>
声明元素的方法
使用内置的数据类型
<xs:element name="cat" type="xs:string"/>
<xs:element name="dog" type="xs:string"/>
<xs:element name="redDog" type="xs:string" substitutionGroup="dog" />
<xs:element name="brownDog" type="xs:string" substitutionGroup ="dog" />
声明元素的方法
使用用户定义的simpleType
<xs:simpleType name="shapes">
<xs:restriction base="xs:string">
<xs:enumeration value="triangle"/>
<xs:enumeration value="rectangle"/>
<xs:enumeration value="square"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="geometry" type="shapes"/>
<xs:element name="geometry">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="triangle"/>
<xs:enumeration value="rectangle"/>
<xs:enumeration value="square"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
声明元素的方法
引用已经定义的元素
<xs:complexType name="PersonType">
<xs:sequence>
<xs:element name="Title" type="xs:string"/>
<xs:element name="FirstName" type="xs:string"/>
<xs:element name="Surname" type="xs:string"/>
</xsd:sequence>
</xs:complexType>
<xs:element ref="PersonType"/>
声明元素的方法
使用complexType
<xs:element name="pets">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="cat"/>
<xs:element ref="dog"/>
</xs:choice>
</xs:complexType>
</xs:element>
Schema样例详解
<xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema
targetNamespace="http://tempuri.org/po.xsd"
xmlns="http://tempuri.org/po.xsd" elementFormDefault="qualified"(根元素)>
<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>
子元素
shipTo billTo coment items
属性orderDate
Schema样例详解
<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>
Schema样例详解
<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>
Schema样例详解
</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:string">
<xs:pattern value="/d{3}-[A-Z]{2}"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
总结
l Schema是另一种文档类型定义,它遵循XML的语言规范。
l Schema是可扩展的,支持命名空间;
l Schema支持更多的数据类型与元素类型;
l Schema用element元素声明元素,用attribute声明元素的属性;
l Schema用simpleType定义简单类型,用complexType定义复杂类型。
- schema概述
- XML Schema 概述
- XML Schema概述
- XML中Schema的概述
- XML学习之Xml Schema:一、Xml Schema概述
- Schema
- schema
- Schema
- schema
- Schema
- Schema
- Schema
- Schema
- Schema
- schema
- Schema
- Schema
- Schema
- 使用grub恢复linxu
- 鸡兔同笼
- android---SQLite
- Java或web中解决所有路径问题
- 用openjtag&eclipse测试mini2440流水灯程序
- schema概述
- 对网站地址进行加密
- 关于打印dataGridView中数据
- OpenCV与Qt 中图像格式的转换
- SQL面试题
- java泛型理解一
- Jexus web server V4.2版正式发布
- fast report 的使用说明
- 为什么调用glPushMatrix()和glPopMatrix()