没有合适的资源?快使用搜索试试~ 我知道了~
这是一个很好的schema教程,讲的很详细!希望对大家有用!!!!!!!!!
资源推荐
资源详情
资源评论
第四章 XML Schema
XML Schema(模式/大纲/架构)是一种用 XML 定义的 XML 文档结构语言,可替代
DTD 来书写具体 XML 应用的语法规范,并可用于验证文档的合法性。
Schema 实质上也是 XML 的一种应用,它将 XML 的 DTD 重新按 XML 语言规范来定
义,充分体现了 XML 元语言的自描述性特点。
一、概述
1.DTD 的缺点
采用了非 XML 的语法规则(BNF 生成式)
不支持多种数据类型
不支持命名空间
扩展性较差
处理 XML 文档的自动化,要求有一种更为严格和全面的解决方案。如应用程序的不
同模块间能互相协调,对文档的结构、属性、数据类型进行约束等。 XML Schema 正好可
以解决这些问题。
2.Schema 的特点
XML Schema 的主要优点为:数据类型丰富、支持命名空间、本身是 XML 应用。
1)Schema 的优点
一致性——利用 XML 的基础语法规则来定义 XML 文档的结构,不必使用其他形式化
语言,使得 XML 达到了从内到外的完美统一
扩展性——Schema 对 DTD 进行了扩充,使其具备了较强的可扩展性。如引入了
Namespace(名字空间/名域)和(对程序、数据库及电子商务都很重要的)数据类型
互换性——与 DTD 相似,Schema 也可以自己来定义,并与其他人交换。还可以利用
映射机制对不同 Schema 进行转换,以实现更高层次的数据交换
规范性——与 DTD 相似,Schema 也提供了一套完整的机制来约束 XML 文档中标记的
使用,但 Schema 比 DTD 要更规范。如 Schema 严格定义了 XML 文档的整体结构
易用性——用 Schema 取代 DTD 后,可以使用 XML 的各种 API 来处理文档结构,如
判断元素的属性类型及其子元素允许出现的次数等。这对 DTD 是不行的,因为这些
API 只能处理 XML 的实例文档,而 Schema 本身正是一种实例文档
2)Schema 相对于 DTD 的具体优点
丰富的数据类型——如数字、布尔、整型、日期时间、URI、十进制数等简单数据类
型,及由它们生成的复杂数据类型
用户自定义数据类型——似 C/C++,Schema 可以利用预定义的简单数据类型来自己定
义复杂的数据类型
属性分组——可使属性的应用范围多样化,如所有元素、图形元素等
原型可更新——与 DTD 中的内容模式的定义是封闭的不同,Schema 的定义是开放的,
可以更新
名域支持——DTD 是不直接支持名字空间的,这对 XML 的广泛应用和标准化非常不
利,但在 Schema 中增加了对名域的支持
本身是一种 XML 应用文档
3)Schema 的缺点
文档规则复杂
不允许借助参数实体专门化
对文本型 XML 文档来说太复杂
支持的工具不多
4)适用范围
DTD——以文本为中心的文档(如网页)
Schema——以数据为中心的文档(如数据库)[+ 以文本为中心的文档]
5)有效性
XML 文档
良构——合 XML 语法
有效——合 DTD 或遵守 XML Schema
3.XML Schema 的版本与组成
版本:
第一版:XML Schema 1.0, REC: 2001.5.2(推荐标准)
当前版本:XML Schema 1.0 Second Edition, REC: 2004.10.28(推荐标准)
新版本:XML Schema 1.1,正在开发中,
2010.1.19. 推 出 候 选 推 荐 标 准 : W3C XML Schema Definition Language (XSD):
Component Designators,W3C Candidate Recommendation 19 January 2010
2009.12.3.推出最后呼叫草案(Last Call Drafts): W3C XML Schema Definition
Language (XSD) 1.1 Part 1: Structures 和 W3C XML Schema Definition Language
(XSD) 1.1 Part 2: Datatypes,W3C Working Draft 3 December 2009
推荐标准由下列三部分组成:
Part 0: Primer 基础(引论与使用)67 页
Part 1: Structures 结构(语法定义)191 页
Part 2: Datatypes 数据类型(内置/简单类型)136 页
4.例子
下面以学生信息表为例,看看 Schema 是如何替代 DTD 的:
1)students.dtd
<?xml version="1.0" encoding="GB2312"?>
<!ELEMENT 学生信息表 (学生)*>
<!ELEMENT 学生 (姓名,年龄,地址)>
<!ATTLIST 学生 性别 (男 | 女) #REQUIRED>
<!ELEMENT 地址 (省份,城市,街道)>
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT 年龄 (#PCDATA)>
<!ELEMENT 省份 (#PCDATA)>
<!ELEMENT 城市 (#PCDATA)>
<!ELEMENT 街道 (#PCDATA)>
2)students.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="学生信息表">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="学生" type="学生类型"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="学生类型">
<xsd:sequence>
<xsd:element name="姓名" type="xsd:string"/>
<xsd:element name="年龄" type="年龄类型"/>
<xsd:element name="地址">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="省份" type="xsd:string"/>
<xsd:element name="城市" type="xsd:string"/>
<xsd:element name="街道" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd: attribute name="性别" type="性别类型" use="required"/>
</xsd:complexType>
<xsd:simpleType name="性别类型">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="男"/>
<xsd:enumeration value="女"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="年龄类型">
<xsd:restriction base="xsd:nonNegativeInteger">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="150"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
3)students-dtd.xml
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<!DOCTYPE 学生信息表 SYSTEM "students.dtd">
<?xml-stylesheet type="text/xsl" href="mystyle.xsl"?>
<学生信息表>
<学生 性别="男">
<姓名>张三</姓名>
<年龄>23</年龄>
<地址>
<省份>广东</省份>
<城市>广州</城市>
<街道>新港西路 135 号</街道>
</地址>
</学生>
<学生 性别="女">
<姓名>李四</姓名>
<年龄>21</年龄>
<地址>
<省份>湖北</省份>
<城市>武汉</城市>
<街道>鲁磨路 388 号</街道>
</地址>
</学生>
</学生信息表>
4)students-xsd.xml
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="mystyle.xsl"?>
<学生信息表 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="students.xsd">
<学生 性别="男">
<姓名>张三</姓名>
<年龄>23</年龄>
<地址>
<省份>广东</省份>
<城市>广州</城市>
<街道>新港西路 135 号</街道>
</地址>
</学生>
<学生 性别="女">
<姓名>李四</姓名>
<年龄>21</年龄>
<地址>
<省份>湖北</省份>
<城市>武汉</城市>
<街道>鲁磨路 388 号</街道>
</地址>
</学生>
</学生信息表>
5)mystyle1.xsl
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<head>
<title>中大学生信息</title>
</head>
剩余43页未读,继续阅读
资源评论
zhaojinling
- 粉丝: 0
- 资源: 25
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功