XML Schema 属性
XML Schema 所有的属性均作为简易类型来声明
什么是属性 ?
简易元素无法拥有属性
假如某个元素拥有属性,它就会被当作某种复合类型
但是属性本身总是作为简易类型被声明的
语法
定义属性的语法
<xs:attribute name="xxx" type="yyy"/>
xxx 指属性名称,yyy 则规定属性的数据类型
XML Schema 拥有很多内建的数据类型,最常用的类型是
- xs:string
- xs:decimal
- xs:integer
- xs:boolean
- xs:date
- xs:time
范例
比如下面这个带有属性的 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"/>
对内容的限定
当 XML 元素或属性拥有被定义的数据类型时,就会向元素或属性的内容添加限定
假如 XML 元素的类型是 "xs:date",而其包含的内容是类似 "Hello World" 的字符串,元素将不会(通过)验证
通过 XML schema,可以向 XML 元素及属性添加自己的限定
这些限定被称为 facet ,我们会在下一节学习到更多有关 facet 的知识