XML Schema学习札记(2)——简单类型介绍

简易元素:

  • 简易元素指哪些仅包含文本的元素,不包含其他任意的元素或属性。
  • 在XMLSchema中,文本有很多类型。它可以是 XML Schema 定义中包括的类型中的一种(布尔、字符串、数据等等),或者它也可以是您自行定义的定制类型。
  • 您也可向数据类型添加限定(即 facets),以此来限制它的内容,或者您可以要求数据匹配某种特定的模式。
    定义元素的语法:
?
1
< xs:element name = "xxx" type = "yyy" />

    常用的类型:
  • xs:string
  • xs:decimal
  • xs:integer
  • xs:boolean
  • xs:date
  • xs:time
    简易元素的默认值和固定值:简易元素可以定义默认值和固定值,分别用default和fixed来确定。看下面例子:

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

?
1
< xs:element name = "color" type = "xs:string" default = "red" />

     在下面例子中,固定值是”yellow”:

?
1
< xs:element name = "color" type = "xs:string" fixed = "red" />


用简易类型定义属性:

     前面说过,简易类型是不能拥有属性的,但属性本身是通过简易类型来定义的,定义属性的语法为:

?
1
< xs:attribute name = "xxx" type = "yyy" />

     类型的选择和前面定义元素类似,看一个示例:
     这是带有属性的XML元素:

?
1
< lastname lang = "EN" >Smith</ lastname >

     这是它对应的的属性定义:

?
1
< xs:attribute name = "lang" type = "xs:string" />

    和定义元素类似,在定义属性的过程中,也可以使用fixed和default参数设置固定值和默认值。

可选的和必须的属性:

    在缺省的情况下,属性是可选的,如果规定属性为必选,则可以使用”use”属性:

?
1
< xs:attribute name = "lang" type = "xs:string" use = "required" />


XSD限定/Facets

    限定(restriction)用于为 XML 元素或者属性定义可接受的值。对 XML 元素的限定被称为 facet,下面的例子就定义了一个带有限带有限定的age元素,0<=age<=120:

?
1
2
3
4
5
6
7
8
< xs:element name = "age" >
< xs:simpleType >
   < xs:restriction base = "xs:integer" >
     < xs:minInclusive value = "0" />
     < xs:maxInclusive value = "120" />
   </ xs:restriction >
</ xs:simpleType >
</ xs:element >

     其中通过一对<xs:simpleType>来确实为简单类型,base中的值来规定元素的属性。

枚举约束:

    我们可以通过使用关键词enumeration,来来限定一个元素只能在几个值中选择,这种方法叫做枚举约束例如下面的car元素,只能选择carA,carB,carC三种。

?
1
2
3
4
5
6
7
8
9
10
11
< xs:element name = "car" >
 
< xs:simpleType >
   < xs:restriction base = "xs:string" >
     < xs:enumeration value = "carA" />
     < xs:enumeration value = "carB" />
     < xs:enumeration value = "carC" />
   </ xs:restriction >
</ xs:simpleType >
 
</ xs:element >

    XML还提供了一种建立对象的描述方法,上例也可以写成如下形式:

?
1
2
3
4
5
6
7
8
9
< xs:element name = "car" type = "carType" />
 
< xs:simpleType name = "carType" >
   < xs:restriction base = "xs:string" >
     < xs:enumeration value = "carA" />
     < xs:enumeration value = "carB" />
     < xs:enumeration value = "carC" />
   </ xs:restriction >
</ xs:simpleType >
模式约束:

    在进行XML约束的时候,也可以通过类似正则表达的方法对值进行约束,这种方法叫做模式约束,关键词未pattern比如下一个例子定义了带有一个限定的名为 “initials” 的元素。可接受的值是大写A-Z或小写字母 a – z 其中的三个:

?
1
2
3
4
5
6
7
8
9
< xs:element name = "initials" >
 
< xs:simpleType >
   < xs:restriction base = "xs:string" >
     < xs:pattern value = "[a-zA-Z][a-zA-Z][a-zA-Z]" />
   </ xs:restriction >
</ xs:simpleType >
 
</ xs:element >

    同时还可以利用一些运算符对值进行更加灵活的限定:

    *运算符,表示该模式可以出现0到多次:如value=”([a-z]*)”,表示任意多个小写字符。

    +运算符,表示该模式可以出现1到多次:如value=”([0-9])+”,表示至少一位的全数字串。

    |运算符,表示选择,类似于enumeration:如value=”male|female”,表示可接受值在male和female之间。

    {number},表示出现指定number那么多次:如value=”([a-zA-Z0-9]){8}”,表示一个8位的串,串里面的内容只能是字母和数字。

空白字符的限定:

    如需规定空白字符的限定和处理方式,我们用whiteSpace限定,下面的例子演示将whiteSpace设置为preserve,这样意味着处理器不会移除任何空白字符。

?
1
2
3
4
5
6
7
8
9
< xs:element name = "address" >
 
< xs:simpleType >
   < xs:restriction base = "xs:string" >
     < xs:whiteSpace value = "preserve" />
   </ xs:restriction >
</ xs:simpleType >
 
</ xs:element >

其他可选的方式:

    value=”replace”,意味着XML处理器将移除所有空白字符(换行、回车、空格以及制表符)

    value=”collapse”,意味着这意味着XML会将换行、回车、空格以及制表符会被替换为空格,并将开头和结尾的空格会被移除,而多个连续的空格会被缩减为一个单一的空格。

对长度的限定:

    如果需要限制元素中的长度,则可以使用Length,maxLentgh,minLength来限定。如下例将password长度限定在5-8字符内:

?
1
2
3
4
5
6
7
8
9
10
< xs:element name = "password" >
 
< xs:simpleType >
   < xs:restriction base = "xs:string" >
     < xs:minLength value = "5" />
     < xs:maxLength value = "8" />
   </ xs:restriction >
</ xs:simpleType >
 
</ xs:element >

总结整理自:http://www.w3school.com.cn/schema/schema_simple.asp

仅供学习交流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值