2015年高级软考辅导:XMLSchema和XMLDTD的数据类型比较
发布时间:2010/3/13 16:26:02 来源:城市学习网 编辑:MOON
与XML DTD相比,XML Schema的一个显著特征就是其对数据类型的支持。这完全是因为XML DTD提供的数据类型只有CDATA,Enumerated,NMTOKEN,NMTOKENS等10种内置(built-in)数据类型。这样少的数据类型通常无法满足文档的可理解性和数据交换的需要。XML Schema则不同,它内置了37种数据类型,强long,int,short,double等常用的数据类型,并通过将数据表示为由value space,lexical space和facet三部分组成的三元组而获得更大的灵活性。但是,XML Schema数据类型的真正灵活性来自于其对用户自定义类型的支持。XML Schema提供两种方式来实现数据类型的定义。
(1)简单类型定义(simpleType),即在XML Schema内置的数据类型的基础上,或者在其他由XML Schema内置的数据类型继承或定义所得到的简单的数据类型(simpleType)的基础上,通过restriction,list或者union方式定义新的数据类型。
(2)复合类型定义(complexType),该方法提供了一种功能强大的复杂数据类型定义机制,可以实现包括结构描述在内的复杂的数据类型。下面是一个以complexType定义实现关系模式中的表结构的例子。设有表T_C_Type(Psign,Count),其中Psign为CHAR数据类型,Count为NUMBER数据类型。则有complexType的定义:
%26lt;!--表结构类型定义%26gt;
%26lt;complexType name=”T_C_Type”%26gt;
%26lt;sequence minOccurs=”0” maxOccurs=”unbounded”%26gt;
%26lt;element name=”Psign”%26gt;
%26lt;complexType%26gt;
%26lt;simpleContent%26gt;
%26lt;restriction base=”string”%26gt;
%26lt;attribute name=”valet” type=”string”/%26gt;
%26lt;/restriction%26gt;
%26lt;/simpleContent%26gt;
%26lt;/complexType%26gt;
%26lt;/element%26gt;
%26lt;element name=”Count” minOccurs=”0”%26gt;
%26lt;complexType%26gt;
%26lt;complexContent%26gt;
%26lt;restriction base=”anyType”%26gt;
%26lt;attribute name=”valet” type=”int” use=”optional”/%26gt;
%26lt;/restriction%26gt;
%26lt;/complexContent%26gt;
%26lt;/complexType%26gt;
%26lt;/element%26gt;
%26lt;/sequence%26gt;
%26lt;/complexType%26gt;
不仅如此,XML Schema还允许元素的内容取空值,这一点可以扩大XML Schema对数据情况的描述范围,而XML DTD则无能为力。