使用W3C XML Schema(4)
来源:互联网 发布:辅食添加食谱知乎 编辑:程序博客网 时间:2024/06/05 13:02
分组,排序和派生
分组
W3C XML Schema 亦允许元素和属性的分组定义。
<xs:group name="mainBookElements">
<xs:sequence>
<xs:element name="title" type="nameType"/>
<xs:element name="author" type="nameType"/>
</xs:sequence>
</xs:group>
<!-- definition of an attribute group -->
<xs:attributeGroup name="bookAttributes">
<xs:attribute name="isbn" type="isbnType" use="required"/>
<xs:attribute name="available" type="xs:string"/>
</xs:attributeGroup>
这些分组可以被用于复杂类型的定义,如下:
<xs:sequence>
<xs:group ref="mainBookElements"/>
<xs:element name="character" type="characterType"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="bookAttributes"/>
</xs:complexType>
这些分组不是数据类型,而是包含一组元素或属性的容器,在整体复用上提供了方便。
排序(Compositors)
到目前为止,我们已经看到了xs:sequence排序元素,它定义了有序的元素组。W3C XML Schema支持另外两种排序元素, 它们可以被混合使用以支持各种组合形式。每个排序元素都拥有minOccurs 和maxOccurs 属性,来定义它们的基数。
xs:choice表示几种可能的元素中的一个选择,或者多组元素中的一个选择。以下的组——排序可以在组内出现、复杂类型或者其他的排序,将会接受单一的name元素或者一系列的firstName、可选的middleName以及lastName:
<xs:choice>
<xs:element name="name" type="xs:string"/>
<xs:sequence>
<xs:element name="firstName" type="xs:string"/>
<xs:element name="middleName" type="xs:string" minOccurs="0"/>
<xs:element name="lastName" type="xs:string"/>
</xs:sequence>
</xs:choice>
</xs:group>
xs:all 定义了一组无序的元素。下面的复杂类型定义允许其包含的元素以任意顺序排列:
<xs:all>
<xs:element name="title" type="xs:string"/>
<xs:element name="author" type="xs:string"/>
<xs:element name="character" type="characterType" minOccurs="0"
maxOccurs="unbounded"/>
</xs:all>
<xs:attribute name="isbn" type="isbnType" use="required"/>
</xs:complexType>
为了避免组合变得复杂和模糊,而无法被W3C XML Schema工具所处理,一组约束被加到了xs:all:
- 在内容模型上子节点必须唯一
- 并且其子节点只能为xs:element定义或references,并且基数不能大于1
简单类型的派生
简单的数据类型都是派生于其他的数据类型,要么是被W3C XML Schema 名称空间预定义或标识的,要么是在你自己的schema定义的。
我们之前看到了简单类型使用约束派生的例子(使用xs:restriction 元素)。可以应用的不同类别的约束称为切面(facet)。除了xs:pattern(使用正则表达式语法)和xs:maxLength这两个切面看过外,许多切面允许在数据长度、值列表、最小和最大值、精确和可变等上面进行控制。
另外两个派生方法已经可用了,可以允许定义列表中分隔的空白和组合的数据类型。下面的定义使用xs:union扩展了我们的isbn类型,用了接受数据TDB和NA:
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{10}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="TBD"/>
<xs:enumeration value="NA"/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
union元素被应用到两个内嵌的简单类型上以允许两个数据类型的值数据,新类型现在将接受来自于一个枚举的两个可能值(TBD和NA)。
下面的例子,类型(isbnTypes)使用xs:list去定义一个ISBN数据的空白分隔的列表。它也是派生自一个类型(isbnTypes10)使用xs:restriction接受1到10的数据值,以空白分隔。
<xs:list itemType="isbnType"/>
</xs:simpleType>
<xs:simpleType name="isbnTypes10">
<xs:restriction base="isbnTypes">
<xs:minLength value="1"/>
<xs:maxLength value="10"/>
</xs:restriction>
</xs:simpleType>
- 使用W3C XML Schema(4)
- 使用W3C XML Schema(1)
- 使用W3C XML Schema(2)
- 使用W3C XML Schema(3)
- 使用W3C XML Schema(5)
- 使用W3C XML Schema(6)
- 使用W3C XML Schema(7)
- 使用W3C XML Schema(8)
- 使用W3C XML Schema(1)
- 使用W3C XML Schema(2)
- XML学习---Schema(W3C)
- 使用W3C XML Schema(9)(全文完)
- 使用W3C XML Schema(3结束)
- W3C XML Schema 教程 (二)
- W3C XML Schema 教程 (三)
- W3C XML Schema 教程
- XML Schema(W3C)数据类型
- W3C Schema Validation With XML::LibXML
- 内存受限设备的应用层内存管理(三)
- asp.net控件开发基础(18) --------让DadaSource接受过多的数据源
- oracle函数大全
- 字符串分解和连接
- 字符串分解和连接
- 使用W3C XML Schema(4)
- 想变成大牛的菜猫
- 根据FxCop整理的.NET代码编写规范
- 微软亚洲技术中心面试题
- 日立JP1当选07年度制造业信息化杰出供应商
- 在proc*c中如何提高oracle游标的效率
- bmp文件的数据格式
- 英语中符号以及标点符号的读法
- 盛大总裁唐骏将离职 有可能转向风投行业