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

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:浅析XMLHTTPRequest的属性和方法
由于现在在公司负责制作标准的静态页面,为了增强客户体验,所以经常要做些AJAX效果,也学你也和我一样在,学习AJAX。而设计AJAX时使用的一个重要的技术(工具)就是XMLHTTPRequest对象了。这里海啸把我学习XMLHTTPRequest对象的一点资料拿出来跟大家一起分

首先简单的说一下,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
<lastname>Refsnes</lastname>
<age>36</age>
<dateborn>1970-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"/>

可选和必需属性

属性默认是可选的(即可以不填)可以使用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="?"/>来限定最长最短值。

 

 

分享:解读Ajax清理缓存
今天做一个密码初始化的功能,不想初始化了在返回原来页面,于是就用ajax实现,初始化页面包括一个生成随机密码的函数,当点击“初始化密码”的时候,可以得到返回的密码,但是当点击第二次,第三次,都是第一次返回的那个密码。而且数据库也不更新了。 于是

来源:模板无忧//所属分类:Xml教程/更新时间:2010-02-05
相关Xml教程