XML

XML 知识量:7 - 28 - 99

4.3 XML Schema数据类型><

基本数据类型- 4.3.1 -

XML Schema支持丰富的数据类型,主要可以分3类:基本数据类型、内置派生的数据类型和自定义数据类型。

基本数据类型如下表所示:

数据类型 说明
string 任意长度的字符串
boolean 布尔型,真值为True或1,假值为False或0
float 单精度32位浮点数
double 双精度64位浮点数 
integer 十进制整型
decimal 任意精度的十进制数
duration 持续的日期/时间数据,格式为PYYMMDDTHHMMSS,其中,P为打头字符,YY表示年,MM表示月,DD表示日,T为分隔日期和时间的字符,HH表示时,MM表示分,SS表示秒。
dateTime 日期时间型,格式为YYYY-MM-DD hh:mm:ss
date 日期型,格式为YYYY-MM-DD
time 时间型,格式为HH:MM:SS
hexBinary 十六进制表示的二进制数据,包括图形文件、可执行程序或其他二进制数据的字符串
anyURI URL地址

内置派生数据类型- 4.3.2 -

内置派生的数据类型如下表所示:

数据类型说明
normalizedString格式化字符串数据类型,派生自string类型,包含字符,但XML处理器会移除换行符、回车符合制表符。
token源自string类型,包含字符,但XML处理器会移除换行符、回车符、制表符、开头和结尾的空格及连续的空格。
language由token派生,表示合法的xml:lang属性值,如EN、ZH等。
NMTOKEN由token派生,与DTD中含义相同。
NMTOKENS源自NMTOKEN,与DTD中含义相同。
Name由token派生,指定XML文档名称字符串。
NCName源自Name,指定XML文档中不含命名空间前缀的名称字符串。
ID由NCName派生,与DTD中含义相同。
IDREF源自NCName,与DTD中含义相同。
IDREFS由IDREF派生,与DTD中含义相同。
ENTITY源自NCName,与DTD中含义相同。
ENTITYS由ENTITY派生,与DTD中含义相同。
nonPositiveInteger源自integer,表示小于或等于0的整数。
nonNegativeInteger源自integer,表示大于或等于0的整数。
long源自integer,表示长整数。
negativeInteger源自nonPositiveInteger,表示小于0的整数。
positiveInteger源自nonNegativeInteger,表示大于0的整数。
unsignedLong
源自nonNegativeInteger,表示无符号长整数。
int由long派生,表示32位带符号整数。
short由int派生,表示16位带符号整数。
unsignedInt由unsignedLong派生,表示32位非负整数。
byte源自short,表示8位带符号整数。
unsignedShort源自unsignedInt,表示16位非负数字。
unsignedByte
源自unsignedShort,表示8位非负数字。

自定义数据类型- 4.3.3 -

在XML Schema中使用simpleType元素来自定义需要的数据类型,其语法为:

<xs:simpleType name="自定义数据类型名称">
    <xs:restriction base="数据类型">
    ......
    </xs:restriction>
</xs:simpleType>

其中:

  • name属性表示自定义数据类型的名称。

  • restriction元素用于定义自定义的数据类型,属性base指明自定义数据类型派生于哪一种基本数据类型。

  • 省略部分用于描述自定义数据类型的细节,例如长度、取值范围、枚举值等。

描述自定义数据类型细节时可使用以下元素:

元素说明
minInclusive内容的最小取值,且包含该值。
maxInclusive内容的最大取值,且包含该值。
minExclusive内容的最小取值,且不含该值。
maxExclusive内容的最大取值,且不含该值。
length元素内容的长度
minLength元素内容的最小长度
maxLength元素内容的最大长度
list允许输入多少个数据,数据间用空白间隔。
pattern正规语法定义数据的组合类型
enumeration枚举列表
union元素内可包含多种不同类型数据,但同时只能包含一种。
totalDigits
最大数字的位数

其中,除list和union以外,都需要嵌套在restriction元素内,且都有value属性。通过设置value,可具体指明数据的取值范围或长度等细节。