使用W3C XML Schema(5)

本文深入探讨了W3C XML Schema中的内容类型定义,包括空白内容元素、具有属性的简单内容元素以及混合内容的使用方法。通过具体示例展示了如何定义不同类型的XML元素及其属性。

内容类型

在文章的第一部分,我们检查了默认的内容类型行为,在面向数据的文档后建模,发现复杂类型的元素只是元素和属性,并且简单类型的元素是没有属性的字符数据。

W3C XML Schema 定义语言也支持定义空白内容元素,以及具有属性的简单内容(它们只包含字符串数据)。

空白内容元素使用xs:complexType结构并有意的忽略定义子元素。下列结构定义一个空白book元素并接受一个isbn属性。

<xs:element name="book"> 
<xs:complexType> 
<xs:attribute name="isbn" type="isbnType"/> 
</xs:complexType> 
</xs:element> 

简单的内容元素,例如,具有属性的字符串数据元素,可以使用xs:simpleContent从简单类型派生。上面定义的book元素因此被扩展成可以接受一个文本数据:

<xs:element name="book"> 
<xs:complexType> 
<xs:simpleContent> 
<xs:extension base="xs:string"> 
<xs:attribute name="isbn" type="isbnType"/> 
</xs:extension> 
</xs:simpleContent> 
</xs:complexType> 
</xs:element> 

注意属性定义的位置,显示扩展点是通过扩展属性完成的。这个定义将会接受下面的XML元素:

<book isbn="0836217462"> 
Funny book by Charles M. Schulz. 
Its title (Being a Dog Is a Full-Time Job) says it all ! 
</book>

W3C XML Schema在 xs:complexType 元素中通过混合属性支持混合的内容。考虑下:

<xs:element name="book"> 
<xs:complexType mixed="true"> 
<xs:all> 
<xs:element name="title" type="xs:string"/> 
<xs:element name="author" type="xs:string"/> 
</xs:all> 
<xs:attribute name="isbn" type="xs:string"/> 
</xs:complexType> 
</xs:element> 

将验证这样的XML文件,如下:

<book isbn="0836217462"> 
Funny book by 
<author>Charles M. Schulz</author>
Its title (
<title>Being a Dog Is a Full-Time Job</title>) says it all ! 
</book> 

不像DTD那样,W3C XML Schema 混合内容不修改子元素的约束,简单内容模型可以使用相同的方式表示。虽然这是较XML 1.0 DTD重要的改进,但注意字符数据值以及其相对子元素的位置,其不能应用约束。

 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值