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

2016-02-19 20:03 8 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内置的数据类型的数据,也可以是我们自己创建的数据类型的数据。

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

定义一个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

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的默认值和固定值

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

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

属性默认是可选的(即可以不填)可以使用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

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

延伸阅读
标签: 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(&...
标签: Web开发
代码如下: !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" html xmlns="http://www.w3.org/1999/xhtml" head meta http-equiv="Content-Type" content="text/html; charset=utf-8" / script src="js/jquery-1.3.2.js"/script script type="text/javascript...
标签: Web开发
2001年5月2日,经过三年多的发展,XML 的Schema终成正果。这样,XML、XML Schema和Namespace都成为了W3C的正式标准,这是一个值得庆贺的历史性时刻,意味着XML语法规范已经奠定了扎实的基础。中国XML联盟于第一时刻为你介绍最新的XML Schema标准和其在MSXML 4.0中的应用。 XML定义语言:DTD,XDR和XSD 我们知道XML文档有格式良好和有效性两...
标签: Web开发
列表类型   除了使用简单类型中描述的原子类型(这些原子类型可用于组合成绝大多数的其它类型,包括其它的简单类型和复合类型)外,XML Schema中在简单类型范畴中还有列表类型(List Type)的概念。原子类型、列表类型以及联合类型,总称为简单类型。一个原子类型的值在XML Schema中是不可分割的。举例来说,NMTOKEN值US是不可分割的,US的任...

经验教程

341

收藏

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