一、简单类型
1. 元素
定义简易元素的语法:
<xs:element name="xxx" type="yyy"/>
例子:
简易XML元素:
<lastname>Smith</lastname>
<age>28</age>
<dateborn>1980-03-27</dateborn>
对应的简易元素定义:
<xs:element name="lastname" type="xs:string"/>
<xs:element name="age" type="xs:integer"/>
<xs:element name="dateborn" type="xs:date"/>
简易元素的默认值(default)或固定值(fixed)。
默认值的设置。如:
<xs:element name="color" type="xs:string" default="red" />
固定值的设置。如:
<xs:element name="color" type="xs:string" fixed="red" />
2.属性
什么是属性?
简易元素无法拥有属性。假如某个元素拥有属性,它就会被当作某种复合类型。但是属性本身总是作为简易类型被声明的。
属性的语法:
<xs:attribute name="xxx" type="yyy"/>
例子
带有属性的 XML 元素:
<lastname lang="EN">Smith</lastname>
对应的属性定义:
<xs:attribute name="lang" type="xs:string"/>
属性的默认值和固定值
默认值:在下面的例子中,缺省值是 "EN":
<xs:attribute name="lang" type="xs:string" default="EN"/>
固定值:在下面的例子中,固定值是 "EN":
<xs:attribute name="lang" type="xs:string" fixed="EN"/>
属性的可选和必需
在缺省的情况下,属性是可选的。如需规定属性为必选,请使用 "use" 属性:
<xs:attribute name="lang" type="xs:string" use="required"/>
3.限定
限定(restriction)用于为 XML 元素或者属性定义可接受的值。对 XML 元素的限定被称为 facet。
对值的限定
例如:人的年龄(age)一般是在0~120之间
<xs:element name="age">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive vlaue="120"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
当然也可以这样定义
<xs:element name="age" type="ageType" />
<xs:simpleType name="ageType" >
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive vlaue="120"/>
</xs:restriction>
</xs:simpleType>
对一组值的限定
xml元素的内容定义为一组可以接受的值,采用枚举约束(enumeration constraint)
例如:三元色
<xs:element name="color">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="red"/>
<xs:enumeration value="green"/>
<xs:enumeration value="blue"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
对一系列值的限定
xml元素的内容是一系列值中的,采用模式约束(pattern constraint)
例如:一个字符
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
例如:0或者多个字符:
<xs:element name="letters">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]*"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
例如:1或者多个字符
<xs:element name="letters">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]+"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
例如:指定N个字符(下面N=8)
<xs:element name="letters">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]{8}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
例如:性别
<xs:element name="gender">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="male|female"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
对空白字符的限定
preserve:保留空白字符
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
replace:移除空白字符
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="replace"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
collapse:换行、回车、空格以及制表符会被替换为空格,开头和结尾的空格会被移除,而多个连续的空格会被缩减为一个单一的空格
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
对长度的限定
length:精确到N位
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:length: value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
minLength、maxLength:在某个区间
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minLength: value="5"/>
<xs:maxLength: value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
数据类型的限定
限定 | 描述 |
---|---|
enumeration | 定义可接受值的一个列表 |
fractionDigits | 定义所允许的最大的小数位数。必须大于等于0。 |
length | 定义所允许的字符或者列表项目的精确数目。必须大于或等于0。 |
maxExclusive | 定义数值的上限。所允许的值必须小于此值。 |
maxInclusive | 定义数值的上限。所允许的值必须小于或等于此值。 |
maxLength | 定义所允许的字符或者列表项目的最大数目。必须大于或等于0。 |
minExclusive | 定义数值的下限。所允许的值必需大于此值。 |
minInclusive | 定义数值的下限。所允许的值必需大于或等于此值。 |
minLength | 定义所允许的字符或者列表项目的最小数目。必须大于或等于0。 |
pattern | 定义可接受的字符的精确序列。 |
totalDigits | 定义所允许的阿拉伯数字的精确位数。必须大于0。 |
whiteSpace | 定义空白字符(换行、回车、空格以及制表符)的处理方式。 |