Schema入门之XMLSchema元素及属性

5.XSD 简单元素
========================================
XML Schema 可定义 XML 文件的元素。

简易元素指那些只包含文本的元素。它不会包含任何其他的元素或属性。

什么是简易元素?
简易元素指那些仅包含文本的元素。它不会包含任何其他的元素或属性。

不过,“仅包含文本”这个限定却很容易造成误解。文本有很多类型。它可以是 XML Schema 定义中包括的类型中的一种(布尔、字符串、数据等等),或者它也可以是您自行定义的定制类型。

您也可向数据类型添加限定(即 facets),以此来限制它的内容,或者您可以要求数据匹配某种特定的模式。

定义简易元素
定义简易元素的语法:
<xs:element name="xxx" type="yyy"/>此处 xxx 指元素的名称,yyy 指元素的数据类型。XML Schema 拥有很多内建的数据类型。

最常用的类型是:
xs:string
xs:decimal
xs:integer
xs:boolean
xs:date
xs:time
例子:
这是一些 XML 元素:

<lastname>Refsnes</lastname>
<age>36</age>
<dateborn>1970-03-27</dateborn>这是相应的简易元素定义:

<xs:element name="lastname" type="xs:string"/>
<xs:element name="age" type="xs:integer"/>
<xs:element name="dateborn" type="xs:date"/> 简易元素的默认值和固定值
简易元素可拥有指定的默认值或固定值。

当没有其他的值被规定时,默认值就会自动分配给元素。

在下面的例子中,缺省值是 "red":

<xs:element name="color" type="xs:string" default="red"/>固定值同样会自动分配给元素,并且您无法规定另外一个值。

在下面的例子中,固定值是 "red":

<xs:element name="color" type="xs:string" fixed="red"/>
========================================
6.XSD 属性

所有的属性均被作为简易类型来声明。

什么是属性?
简易元素无法拥有属性。假如某个元素拥有属性,它就会被当作某种复合类型。但是属性本身总是作为简易类型被声明的。

如何声明属性?
定义属性的语法是:
<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 的知识。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值