XML Schema定义了两种主要数据类型:简单数据类型和复杂数据类型。
一、简单数据类型
1.内置数据类型 44种;
2.自定义简单数据类型。 simpleType定义
简单类型细分之后大概的结构图如下:
1、XML内置的简单数据类型
内置基本类型:该类型与其它计算机语言中所提供的数据类型相似,有以下类型:string,boolean,float,double,decimal,time,datatime。比较特殊的是:duration(持续的日期/时间数据,格式为:PYYMMDDTHHMMSS),hexBinary(十六进制表示的二进制数据),anyURI(URL网址)等,W3C标准的内置数据类型多达44种。为保持与DTD的兼容性,其中ID、ENTITY、NOTATION等仅用于属性。
内置派生类型:从内置基本类型中派生出的类型,有多达25种。如:normalizedString,language,integer,int,ENTITY,IDREFS,byte等。派生方式有三种:一是限制,使用<restriction…/>;二是列表,使用<list…/>;三是联合,使用<union…/>。Schema的内置类型有复杂的层次关系,但没有对象概念。
2、用户自定义的简单数据类型
1.关键字:simpleType,其常用子元素有list和union
2.自定义数据类型是指以一个XML Schema类型为基础,添加一些限制条件,使之成为一个新的类型
使用simpleType元素为XML文档中的元素和属性自定义数据类型的具体语法格式为:
<xsd:simpleType name="name">
<xsd:restriction base="xsd:datatypes">
<xsd:facets_element value="value"/>
...
</xsd:restriction>
</xsd:simpleType>
restriction子元素定义用户自定义元素使用的数据类型,base属性指明自定义数据类型派生于哪个基本数据类型,facets_element子元素用于描述自定义数据类型的约束规则。
每个属性都能用value属性来指定范围或长度等具体的细节限制。
注意:满足以下两个条件的元素才适合定义为简单类型元素 :第一,元素内容是内置数据类型值,如字符串、日期等;第二,元素中不包含属性。
二、复杂数据类型:通过complexType定义
1.复杂类型用于表示包含子元素或属性,或者既包含元素也包含属性的数据类型。
2.顺序问题,Schema提供了all(任意顺序)、squence(先后顺序)和choice(选择顺序)三种指示符来解决这个问题。
语法格式:
<element name="元素名称" type="数据类型"/>
<complexType name="数据类型">
<complexContent>
<sequence>
<element name="子元素1">
<element name="子元素2">
…
</sequence>
</complexContent>
</complexTyep>
其中“元素名称”用于指明复杂类型元素的名称;“数据类型”指自定义数据类型名称。
复杂类型元素的子元素列表
all | 子元素可以无顺序的出现一个或多个 |
sequence | 子元素都必须按顺序出现 |
choice | 子元素选择其中之一出现 |