» 网友学堂 » XML教程 » 3.2.2.5 Schema的特色——扩展数据类型
3.2.2.5 Schema的特色——扩展数据类型
作者:hinet 发表时间:2007-2-25 17:37 阅读:919次 在百度搜索相关内容

3.2.2.5 Schema的特色——扩展数据类型


Schema中共有23种扩展数据类型,包括bin.base64、bin.hex、boolean、char、date、dateTime、dateTime.tz、fixed.14.4、float、int、number、time、time.tz、i1、i2、i4、r4、r8、ui1、ui2、ui4、uri、uuid,已经可以覆盖相当广泛的应用。限于篇幅,这里只列表介绍几种最常用的类型。
类 型
解 释
举 例

boolean 布尔型:0 或 1, 其中0代表false,1代表true 0,1
char 单字符 “a”、“b”
time 时间类型,符合 ISO 8601格式, 无日期和时区部分。 08:16:18
date 日期类型,符合ISO 8601格式且无时间部分. 2000-06-01
dateTime 日期类型,符合ISO 8601格式,带可选时间部分但无时区部分,秒可精确到纳秒级。 2000-06-01T20:08:18
fixed.14.4 数值类型,同“number”类似,但精度上小数点前不超过14位,小数点后不超过4位 14.1234
float 实数类型,位数不受限制,可以包含符号位和小数位以及指数。取值范围从 1.7976931348623157E+308 至 2.2250738585072014E-308 .314159265358979E+1
int 数值类型, 可以包含符号位,但不含小数位和指数位 1, -10, 2566
number 数值类型,位数不限,可以包含符号位和小数位以及指数。取值范围从 1.7976931348623157E+308 至 2.2250738585072014E-308 12, 3.1415, -1.24E-10
uri 统一资源标识(URI)类型。 http://www.ics.
uci.edu
/pub/ietf/uri/
元素和属性的数据类型可以使用元素datatype来定义,这个元素是Schema中一个重要元素,也是Schema的一大特色。datatype的语法表达如下:

除此以外,还有另一种更直接的方法,是在元素ElementType和AttributeType之中利用dt:type属性。下面分别给出具体的示例:
  datatype dt:type
ElementType


AttributeType







好了,现在我们结束这些枯燥的语法论述,来看个实际的例子:

















上面给出的是一个关于笔记本电脑的Schema定义,在这里,我们为笔记本电脑定义了一个属性--资料更新时间,数据类型定为dateTime;笔记本电脑涉及的元素有:品牌,因为它实际上是一个名称,所以定为string类型;价格,因为考虑到经销商不会小气到连几毛钱都不放过,所以数据类型定为int型;是否全内置,不言而喻自然是铁板钉钉的布尔型了;库存数量,因为考虑到经销上可能会大量囤积以谋取高利,故而选取范围较大的number类型。下面我们再给出一个XML示例文档,以便大家对数据类型有一个更加直观的认识。
<笔记本电脑 更新时间="2000-06-10T14:00:00">
<品牌>ACER 518TE
<价格>22800
<是否全内置>1
<库存数量>258000

可是,假设我们偏偏遇上了一个爱专牛角尖且极为小气的电脑经销商,他擅自将上面的实例文档加以改动挂在自己门口,于是就有下面的文档:
<笔记本电脑 更新时间="2000-06-10T14:00:00">
<品牌>ACER 518TE
<价格>22800.21
<是否全内置>1
<库存数量>258000

就在他自鸣得意于自己的精明时,我们的语法分析器却报警了:“价格”取值与定义不符!当然了,明明是int类型,又岂能再加上一个小数点?除非我们将上面的Schema中的“价格”定义作下列修改:
#1 hinet 发表评论于:2007-2-25 17:37
3.2.2.6 Schema中的注释


现在,Schema中的元素只剩下description没有介绍。description只能算是Schema中的一个配角,它可以嵌套在任何其它的Schema元素之中,为这些元素提供备注信息,类似于DTD中的注释。description中的信息不会被XML语法分析器所解析,但是可以为我们提供注释信息,并可以被XML工具或应用程序所解读。
举个简单的例子,假如你是某大学社区网站的技术人员,想在网上开辟一个"售车"栏目供毕业生出售自行车,而正好你刚刚学习过XML Schema,于是就用XML Schema写了一个Schema文档,并把它发布到了网上(可能这种应用在目前有点超前,不过,相信我吧,用不了多久这种应用就会风靡全球的)。可是,问题又来了,单凭这个文档别人怎么知道你是在求购自行车还是想出售自行车呢?不要着急,description前来帮忙。下面就是这个包含description的XML Schema片段:

出售自行车