XML学习笔记(五)Schema语法之简单类型

2016-02-19 20:03 14 1 收藏

今天图老师小编要向大家分享个XML学习笔记(五)Schema语法之简单类型教程,过程简单易学,相信聪明的你一定能轻松get!

【 tulaoshi.com - Web开发 】

Preface:本文是W3CSchools上《Schema指南》的学习笔记。其中大部分内容是对指南的翻译总结。由于原文的例子更详尽生动,如果各位想阅读原文可以到这个网址http://www.w3schools.com/schema/default.asp。 同时,W3CSchools提供了测试,大家可以测试一下自己的理解程度。

首先简单的说一下,Schema中的简单类型(SimpleType)有三种:SimpleElement(简单元素)、Attribute(属性)和Restrictions(约束)。下面逐一介绍这几种类型。


一、XSD SimpleElement
所谓SimpleElement是指不包含任何其他元素和属性,只包含Text(元素间的内容)的元素。这里Text指代的不单单是文本(string),准确地说应该是数据,可以是Schema内置的数据类型的数据,也可以是我们自己创建的数据类型的数据。

定义一个SimpleElement

xs:element name="xxx" type="yyy"在这里再次提醒语法,XML是大小写敏感的,属性的值要用双引号括起来。“xxx”是我们要定义的Element的名称。“yyy”是这个Element的数据类型。XML Schema预定义的内置数据类型有如下一些:
“xs:string ”、“xs:decimal”、“xs:integer”、“xs:boolean”、“xs:date”、“xs:time”。
看一个例子,以下是一些在XML中出现的SimpleElement lastnameRefsnes/lastname
age36/age
dateborn1970-03-27/dateborn 那么在Schema中应该作如下定义,注意Element名称和数据类型的对应。 xs:element name="lastname" type="xs:string"/
xs:element name="age" type="xs:integer"/
xs:element name="dateborn" type="xs:date"/
Element的默认值和固定值

默认值是当Elment中没有指定一个值时默认提供的值,使用default属性给出。 xs:element name="color" type="xs:string" default="red"/
固定值同样是自动给出的,但是XML的用户不能再为Element指定值,使用fixed属性给出。 xs:element name="color" type="xs:string" fixed="red"/
二、XSD Attribute
所有的Attribute都是作为简单类型的。一个SimpleElement是不能有属性的。如果一个Element包含有Attriute我们就认为它看作是一个复杂类型(Complex Type)。虽然Attribute不会单独的出现,但我们仍将它作为一种SimpleType在这里介绍

定义一个Attribute

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

xs:attribute name="xxx" type="yyy"/ “xxx”是Attribute的名称。“yyy”是Attribute的数据类型。可以使用XML Schema定义的内置数据类型,如:“xs:string ”、“xs:decimal”、“xs:integer”、“xs:boolean”、“xs:date”、“xs:time”。
例如有如下一个Element,包含一个Attribute lastname lang="EN"Smith/lastname那么定义lang属性的Schema语句应该如下: xs:attribute name="lang" type="xs:string"/
Attribute的默认值和固定值

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

同样可以使用default属性和fixed属性为Attrbute指定默认值和固定值。
默认值 xs:attribute name="lang" type="xs:string" default="EN"/ 固定值 xs:attribute name="lang" type="xs:string" fixed="EN"/
可选和必需属性

属性默认是可选的(即可以不填)可以使用use属性来指定属性是必需的,如下: xs:attribute name="lang" type="xs:string" use="required"/
三、XSD Restrictions(约束)
Restrictions是用来限制(或者说定义)Element或Attribute可接受值的。而对于Element的Restrictions通常又称为Facets。
下面通过一些常见的约束例子来说明Restrictions的用法和语法。

数值型范围限制

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 该约束定义age元素的值是整形而且值要在0到120之间。
枚举限制

xs:element name="car"
xs:simpleType
xs:restriction base="xs:string"
xs:enumeration value="Audi"/
xs:enumeration value="Golf"/
xs:enumeration value="BMW"/
/xs:restriction
/xs:simpleType
/xs:element 这里约束了car的值是string,而且只能为“Audi”、“Golf”和“BMW”中的一个。
可以使用另一种写法: xs:element name="car" type="carType"/
xs:simpleType name="carType"
xs:restriction base="xs:string"
xs:enumeration value="Audi"/
xs:enumeration value="Golf"/
xs:enumeration value="BMW"/
/xs:restriction
/xs:simpleType 这种写法的好处是,上面的Restriction不是定义在Element中的,可以被其他的Element很方便的调用。
使用正则表达式(RegularExpression)约束

xs:element name="letter"
xs:simpleType
xs:restriction base="xs:string"
xs:pattern value="[a-z]"/
/xs:restriction
/xs:simpleType
/xs:element这里xs:pattern的value属性的值是一个正则表达式正则表达式的语法则不再本文介绍的范围。使用RegularExpression你可以规定任何格式的string约束。
空格字符(Whitespace Characters)约束

xs:element name="address"
xs:simpleType
xs:restriction base="xs:string"
xs:whiteSpace value="preserve"/
/xs:restriction
/xs:simpleType
/xs:element 以上例子对address中的所有空格字符进行保留。关键是value="preserve"。XML语法本来就是保留空格的。
当值为“replace”时
XML processer会用空间来代替所有的空格字符。
当值为“collapse”时
会将连续的空格合并成一个。
长度约束

xs:element name="password"
xs:simpleType
xs:restriction base="xs:string"
xs:length value="8"/
/xs:restriction
/xs:simpleType
/xs:element 以上例子限定了password元素的长度为8。当然也可以使用 xs:minLength value="?"/和xs:maxLength value="?"/来限定最长最短值。

更多的有关约束标签的参考,请查阅以下的网址:
http://www.w3schools.com/schema/schema_elements_ref.asp

来源:http://www.tulaoshi.com/n/20160219/1622614.html

延伸阅读
标签: Web开发
25、DOM的全称是Document Object Model,也即文档对象模型。在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程序正是通过对这个对象模型的操作,来实现对XML文档数据的操作。通过DOM接口,应用程序可以在任何时候访问XML文档中的任何一部分数据,因此,这种利用DOM接口的机制也被...
标签: Web开发
我们可以看到,DTD的语法相当复杂,并且它不符合XML文件的标准,自成一个体系。也就是说DTD文档本身并不是一个良好形式的XML文档,上面的关于DTD的介绍也仅仅是作了一个简介,目的是帮助大家能读懂DTD文件以及在必要时创建简单的DTD文件,因为现在很多的XML应用是建立在DTD之上的。   另外一个代替DTD的就是W3...
标签: Web开发
简体中文码:GB2312 繁体中文码:BIG5 西欧字符: UTF-8 1、一般实体 我们前面说到的那个信件署名就是一般实体。定义一般实体的格式如下:  !ENTITY 实体名 "文本内容"〉 关于刚才的信件署名的实体定义如下: !ENTITY lettersign "张三 某网络公...
标签: Web开发
41、在关系数据库中,数据仅仅是数据,它不包含层次结构信息;而面向对象数据库可以将数据视为对象,数据是作为一个整体,包含了属性和方法,并能体现数据间的继承关系。 42、一个基于XML的数据库系统应该具备以下特征:  1能够根据文档类型定义(DTD或Schema)确定数据库的模式。 也就是说,能够按照DTD或Schema来定义数据库,...
标签: Web开发
36、实现添加元素操作的语句如下: node = root.childNodes.item(0)  //确定位置 newNode = myDocument.createElement("company") //创建节点 node.insertBefore(newNode,node.lastNode)  //插入节点 textNode = myDocument.creatTextNode(&...

经验教程

923

收藏

13
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部