Schema 教程Word格式.docx

上传人:b****6 文档编号:21288976 上传时间:2023-01-29 格式:DOCX 页数:66 大小:38.19KB
下载 相关 举报
Schema 教程Word格式.docx_第1页
第1页 / 共66页
Schema 教程Word格式.docx_第2页
第2页 / 共66页
Schema 教程Word格式.docx_第3页
第3页 / 共66页
Schema 教程Word格式.docx_第4页
第4页 / 共66页
Schema 教程Word格式.docx_第5页
第5页 / 共66页
点击查看更多>>
下载资源
资源描述

Schema 教程Word格式.docx

《Schema 教程Word格式.docx》由会员分享,可在线阅读,更多相关《Schema 教程Word格式.docx(66页珍藏版)》请在冰豆网上搜索。

Schema 教程Word格式.docx

XMLSchema描述XML文档的结构。

XMLSchema语言也称作XMLSchema定义(XMLSchemaDefinition,XSD)。

在此教程中,你将学习如何在应用程序中读取和创建XMLSchema语言,XMLSchema为何比DTD更加强大,以及如何在您的应用程序中使用XMLSchema。

XMLSchema简介

XMLSchema可描述XML文档的结构。

XMLSchema语言也可作为XSD(XMLSchemaDefinition)来引用。

您应当具备的基础知识

在继续学习之前,您需要对下面的知识有基本的了解:

●HTML/XHTML

●XML以及XML命名空间

●对DTD的基本了解

什么是XMLSchema?

XMLSchema的作用是定义XML文档的合法构建模块,类似DTD。

XMLSchema:

●定义可出现在文档中的元素

●定义可出现在文档中的属性

●定义哪个元素是子元素

●定义子元素的次序

●定义子元素的数目

●定义元素是否为空,或者是否可包含文本

●定义元素和属性的数据类型

●定义元素和属性的默认值以及固定值

XMLSchema是DTD的继任者

我们认为XMLSchema很快会在大部分网络应用程序中取代DTD。

理由如下:

●XMLSchema可针对未来的需求进行扩展

●XMLSchema更完善,功能更强大

●XMLSchema基于XML编写

●XMLSchema支持数据类型

●XMLSchema支持命名空间

XMLSchema是W3C标准

XMLSchema在2001年5月2日成为W3C标准。

XMLSchema比DTD更强大。

XMLSchema支持数据类型

XMLSchema最重要的能力之一就是对数据类型的支持。

通过对数据类型的支持:

●可更容易地描述允许的文档内容

●可更容易地验证数据的正确性

●可更容易地与来自数据库的数据一并工作

●可更容易地定义数据约束(datafacets)

●可更容易地定义数据模型(或称数据格式)

●可更容易地在不同的数据类型间转换数据

编者注:

数据约束,或称facets,是XMLSchema原型中的一个术语,中文可译为“面”,用来约束数据类型的容许值。

XMLSchema使用XML语法

另一个关于XMLSchema的重要特性是,它们由XML编写。

由XML编写XMLSchema有很多好处:

●不必学习新的语言

●可使用XML编辑器来编辑Schema文件

●可使用XML解析器来解析Schema文件

●可通过XMLDOM来处理Schema

●可通过XSLT来转换Schema

XMLSchema可保护数据通信

当数据从发送方被发送到接受方时,其要点是双方应有关于内容的相同的“期望值”。

通过XMLSchema,发送方可以用一种接受方能够明白的方式来描述数据。

一种数据,比如"

03-11-2004"

,在某些国家被解释为11月3日,而在另一些国家为当作3月11日。

但是一个带有数据类型的XML元素,比如:

<

datetype="

date"

>

2004-03-11<

/date>

,可确保对内容一致的理解,这是因为XML的数据类型"

要求的格式是"

YYYY-MM-DD"

XMLSchema可扩展

XMLSchema是可扩展的,因为它们由XML编写。

通过可扩展的Schema定义,您可以:

●在其他Schema中重复使用您的Schema

●创建由标准类型衍生而来的您自己的数据类型

●在相同的文档中引用多重的Schema

形式良好是不够的

我们把符合XML语法的文档称为形式良好的XML文档,比如:

●它必须以XML声明开头

●它必须拥有唯一的根元素

●开始标签必须与结束标签相匹配

●元素对大小写敏感

●所有的元素都必须关闭

●所有的元素都必须正确地嵌套

●必须对特殊字符使用实体

即使文档的形式良好,仍然不能保证它们不会包含错误,并且这些错误可能会产生严重的后果。

请考虑下面的情况:

您订购的了5打激光打印机,而不是5台。

通过XMLSchema,大部分这样的错误会被您的验证软件捕获到。

XML文档可对DTD或XMLSchema进行引用。

一个简单的XML文档:

请看这个名为"

note.xml"

的XML文档:

?

xmlversion="

1.0"

note>

to>

George<

/to>

from>

John<

/from>

heading>

Reminder<

/heading>

body>

Don'

tforgetthemeeting!

/body>

/note>

DTD文件

下面这个例子是名为"

note.dtd"

的DTD文件,它对上面那个XML文档的元素进行了定义:

!

ELEMENTnote(to,from,heading,body)>

ELEMENTto(#PCDATA)>

ELEMENTfrom(#PCDATA)>

ELEMENTheading(#PCDATA)>

ELEMENTbody(#PCDATA)>

第1行定义note元素有四个子元素:

"

to,from,heading,body"

第2-5行定义了to,from,heading,body元素的类型是"

#PCDATA"

XMLSchema

下面这个例子是一个名为"

note.xsd"

的XMLSchema文件,它定义了上面那个XML文档的元素:

xs:

schemaxmlns:

xs="

http:

//www.w3.org/2001/XMLSchema"

targetNamespace="

xmlns="

elementFormDefault="

qualified"

elementname="

note"

<

complexType>

sequence>

to"

type="

string"

/>

from"

heading"

body"

/xs:

element>

note元素是一个复合类型,因为它包含其他的子元素。

其他元素(to,from,heading,body)是简易类型,因为它们没有包含其他元素。

您将在下面的章节学习更多有关复合类型和简易类型的知识。

对DTD的引用

此文件包含对DTD的引用:

DOCTYPEnoteSYSTEM"

对XMLSchema的引用

此文件包含对XMLSchema的引用:

note

xmlns:

xsi="

//www.w3.org/2001/XMLSchema-instance"

xsi:

schemaLocation="

note.xsd"

 

元素

元素是每一个XMLSchema的根元素。

元素是每一个XMLSchema的根元素:

...

元素可包含属性。

一个schema声明往往看上去类似这样:

代码解释:

下面的片断:

显示schema中用到的元素和数据类型来自命名空间"

同时它还规定了来自命名空间"

的元素和数据类型应该使用前缀xs:

这个片断:

显示被此schema定义的元素(note,to,from,heading,body)来自命名空间:

"

指出默认的命名空间是"

指出任何XML实例文档所使用的且在此schema中声明过的元素必须被命名空间限定。

在XML文档中引用Schema

此XML文档含有对XMLSchema的引用:

notexmlns="

规定了默认命名空间的声明。

此声明会告知schema验证器,在此XML文档中使用的所有元素都被声明于"

这个命名空间。

一旦您拥有了可用的XMLSchema实例命名空间:

您就可以使用schemaLocation属性了。

此属性有两个值。

第一个值是需要使用的命名空间。

第二个值是供命名空间使用的XMLschema的位置:

XSD简易元素

XMLSchema可定义XML文件的元素。

简易元素指那些只包含文本的元素。

它不会包含任何其他的元素或属性。

什么是简易元素?

简易元素指那些仅包含文本的元素。

不过,“仅包含文本”这个限定却很容易造成误解。

文本有很多类型。

它可以是XMLSchema定义中包括的类型中的一种(布尔、字符串、数据等等),或者它也可以是您自行定义的定制类型。

您也可向数据类型添加限定(即facets),以此来限制它的内容,或者您可以要求数据匹配某种特定的模式。

定义简易元素

定义简易元素的语法:

xxx"

yyy"

此处xxx指元素的名称,yyy指元素的数据类型。

XMLSchema拥有很多内建的数据类型。

最常用的类型是:

●xs:

string

decimal

integer

boolean

date

time

例子:

这是一些XML元素:

lastname>

Smith<

/lastname>

age>

28<

/age>

dateborn>

1980-03-27<

/dateborn>

这是相应的简易元素定义:

lastname"

age"

integer"

dateborn"

简易元素的默认值和固定值

简易元素可拥有指定的默认值或固定值。

当没有其他的值被规定时,默认值就会自动分配给元素。

在下面的例子中,缺省值是"

red"

color"

default="

固定值同样会自动分配给元素,并且您无法规定另外一个值。

在下面的例子中,固定值是"

fixed="

XSD属性

所有的属性均作为简易类型来声明。

什么是属性?

简易元素无法拥有属性。

假如某个元素拥有属性,它就会被当作某种复合类型。

但是属性本身总是作为简易类型被声明的。

如何声明属性?

定义属性的语法是:

attributename="

在此处,xxx指属性名称,yyy则规定属性的数据类型。

实例

这是带有属性的XML元素:

lastnamelang="

EN"

这是对应的属性定义:

lang"

属性的默认值和固定值

属性可拥有指定的默认值或固定值。

固定值同样会自动分配给元素,并且您无法规定另外的值。

可选的和必需的属性

在缺省的情况下,属性是可选的。

如需规定属性为必选,请使用"

use"

属性:

use="

required"

对内容的限定

当XML元素或属性拥有被定义的数据类型时,就会向元素或属性的内容添加限定。

假如XML元素的类型是"

,而其包含的内容是类似"

HelloWorld"

的字符串,元素将不会(通过)验证。

通过XMLschema,您也可向您的XML元素及属性添加自己的限定。

这些限定被称为facet(编者注:

意为(多面体的)面,可译为限定面)。

您会在下一节了解到更多有关facet的知识。

XSD限定/Facets

限定(restriction)用于为XML元素或者属性定义可接受的值。

对XML元素的限定被称为facet。

对值的限定

下面的例子定义了带有一个限定且名为"

的元素。

age的值不能低于0或者高于120:

simpleType>

restrictionbase="

minInclusivevalue="

0"

maxInclusivevalue="

120"

restriction>

对一组值的限定

如需把XML元素的内容限制为一组可接受的值,我们要使用枚举约束(enumerationconstraint)。

下面的例子定义了带有一个限定的名为"

car"

可接受的值只有:

Audi,Golf,BMW:

enumerationvalue="

Audi"

Golf"

BMW"

上面的例子也可以被写为:

carType"

simpleTypename="

注释:

在这种情况下,类型"

可被其他元素使用,因为它不是"

元素的组成部分。

对一系列值的限定

如需把XML元素的内容限制定义为一系列可使用的数字或字母,我们要使用模式约束(patternconstraint)。

letter"

可接受的值只有小写字母a-z其中的一个:

patternvalue="

[a-z]"

下一个例子定义了带有一个限定的名为"

initials"

可接受的值是大写字母A-Z其中的三个:

[A-Z][A-Z][A-Z]"

下一个例子也定义了带有一个限定的名为"

可接受的值是大写或小写字母a-z其中的三个:

[a-zA-Z][a-zA-Z][a-zA-Z]"

choice的元素。

可接受的值是字母x,y或z中的一个:

choice"

[xyz]"

/xs

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1