XML Schema学习札记(2)——简单类型介绍
来源:互联网 发布:js html2img 编辑:程序博客网 时间:2024/05/17 02:37
简易元素:
- 简易元素指哪些仅包含文本的元素,不包含其他任意的元素或属性。
- 在XMLSchema中,文本有很多类型。它可以是 XML Schema 定义中包括的类型中的一种(布尔、字符串、数据等等),或者它也可以是您自行定义的定制类型。
- 您也可向数据类型添加限定(即 facets),以此来限制它的内容,或者您可以要求数据匹配某种特定的模式。
定义元素的语法:
<
xs:element
name
=
"xxx"
type
=
"yyy"
/>
常用的类型:
- xs:string
- xs:decimal
- xs:integer
- xs:boolean
- xs:date
- xs:time
简易元素的默认值和固定值:简易元素可以定义默认值和固定值,分别用default和fixed来确定。看下面例子:
在下面的例子中,缺省值是 “red”:
<
xs:element
name
=
"color"
type
=
"xs:string"
default
=
"red"
/>
在下面例子中,固定值是”yellow”:
<
xs:element
name
=
"color"
type
=
"xs:string"
fixed
=
"red"
/>
用简易类型定义属性:
前面说过,简易类型是不能拥有属性的,但属性本身是通过简易类型来定义的,定义属性的语法为:
<
xs:attribute
name
=
"xxx"
type
=
"yyy"
/>
类型的选择和前面定义元素类似,看一个示例:
这是带有属性的XML元素:
<
lastname
lang
=
"EN"
>Smith</
lastname
>
这是它对应的的属性定义:
<
xs:attribute
name
=
"lang"
type
=
"xs:string"
/>
和定义元素类似,在定义属性的过程中,也可以使用fixed和default参数设置固定值和默认值。
可选的和必须的属性:
在缺省的情况下,属性是可选的,如果规定属性为必选,则可以使用”use”属性:
<
xs:attribute
name
=
"lang"
type
=
"xs:string"
use
=
"required"
/>
XSD限定/Facets
限定(restriction)用于为 XML 元素或者属性定义可接受的值。对 XML 元素的限定被称为 facet,下面的例子就定义了一个带有限带有限定的age元素,0<=age<=120:
<
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三种。
<
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还提供了一种建立对象的描述方法,上例也可以写成如下形式:
<
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 其中的三个:
<
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,这样意味着处理器不会移除任何空白字符。
<
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字符内:
<
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
仅供学习交流
- XML Schema学习札记(2)——简单类型介绍
- XML Schema学习札记(1)——基础总览
- [XML]学习笔记(五)——XML Schema简单类型元素与属性
- 疯狂XML学习笔记(8)---------schema 的简单类型
- XML Schema学习教程(一)-XML Schema介绍
- XML学习之Xml Schema:三、自定义简单类型--facet
- XML学习之Xml Schema:四、自定义简单类型
- [XML]学习笔记(六)——XML Schema复杂类型
- 学习笔记——XML Schema复杂类型
- XML学习总结(2)——XML简单介绍
- XML Schema中的简单类型
- 学习笔记——XML Schema自定义简单数据类型
- XML Schema内置简单类型
- Xml学习笔记:(一)schema元素类型
- 疯狂XML学习笔记(9)-------------Schema内置类型
- 学习笔记——XML Schema自定义数据类型(续)
- 学习笔记——XML Schema注释
- 学习笔记——XML Schema数据类型
- [LeetCode] Reverse Linked List II Solution
- BZOJ 2049: [Sdoi2008]Cave 洞穴勘测 LCT
- Codevs 1076 题解
- 程序员编程技术迅速提高的终极攻略
- OpenCV入门(十五)-- 霍夫变换
- XML Schema学习札记(2)——简单类型介绍
- cocos2dx实例开发之flappybird(入门版)
- Imagemagick中解决convert: no decode delegate for this image format 问题
- Android SDK无法更新
- 1034
- fruitstrap安装app
- 去除Odoo主页中的提示: Your Odoo is not supported.
- java自制线程池
- 成功的背后!(给所有IT人)