Xml Schema 之 简易类型

一、简单类型

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定义空白字符(换行、回车、空格以及制表符)的处理方式。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值