第 12章 XML技术本章的重要概念
( 1) 从 SGML,HTML到 XML的发展,XML文档,
DTD( 文档类型定义 ),XML模式,XML数据库的存取方法 。
( 2) XML查询语言 XQUERY的基本功能,基本概念,简单查询的表达,各种类型查询的表达,
复杂查询的表达 。
( 3)基于关系数据库 XML的处理,XML存储和查询系统体系结构,XML数据到关系数据库的存储映射,基于关数据库的 XML查询。
本章概述
随着因特网的快速发展,XML( 可扩展标记语言,
eXtensible Markup Language) 不仅作为 Internet上的一种数据发布语言出现,同时作为数据交换语言,正应用于其它很多领域如数据交换,标准定一等 。 同时 XML
数据的各种存储与查询的技术也日益成熟,在 XML查询语言,XML数据的存储方法,查询代数,查询优化和索引技术方面等方面出现很多研究成果和成熟方法,绝大多数数据库管理系统厂商均在它们的产品中增加了对
XML数据处理的模块,同时也出现了专门针对 XML数据的存储系统,并应用在很多实际系统中 。
主要内容
XML概述
常用的 XML查询语言,XQUERY
基于关系数据库的 XML处理
XML概述
从 SGML,HTML到 XML
XML是 SGML的一个子集,它试图将 HTML的简单性与 SGML
的强大功能结合起来。 XML的设计目的明确地定位为万维网上的应用。设计工作基于两个重要的准则:易于编写处理 XML的计算机程序,以及人和系统能花费极少的代价将 HTML移植到 XML中。
1996年 W3C正式成立 XML工作组 。 1998年 2月,XML1.0被
W3C正式确认为 W3C推荐标准 。 其特点为:
XML可直接在因特网上使用
XML应支持广泛的应用
使用方便,结构简明
表达能力强,适于计算机进行处理
XML,DTD与 XML Schema
一个 XML文档由序言和文档实例两个部分组成 。 序言包括一个 XML声明和一个文档类型声明,二者都是可选的 。
文档类型声明由 DTD定义,它定义了文档类型结构 。 序言之后是文档实例,它是文档的主体,它是 DTD的一个实现 。
XML文档中最重要的组件是元素 ( element) 。 每个元素都有一个类型,类型声明可以放在文档内部或放在外部 DTD文件中 。 元素可能具有一组属性 ( 称为属性列表 ),每个属性说明有属性名和属性值类型 。 在文档中,
用开始标记 <标签 >和结束标记 </>来确定元素的边界 。
元素之间的包含关系是一种树型结构 。 一个 XML文档就是一棵有根,有序,带标记的树 。
一个 XML文档
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE book system
"http://sidbrc.com/DTDS/book.dtd">
<book year =”1998”>
<title>XML技术内幕 </title>
<author>
<firstname>Natanya</firstname>
<lastname>Pitts</lastname>
</author>
<price> $25</price>
</book>
一个 XML文档其中的 book.dtd为,
<!ELEMENT book (title,author*,price)>
<!ARRLIST BOOK year CDATA #REQUIRED>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (firstname,lastname)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT price (#PCDATA)>
XML数据库
纯粹的 XML存取方法:它是专门针对 XML格式文档进行存取管理和数据操作的数据库,数据库中的数据和元数据完全采用 XML结构表示,其底层针对 XML数据的特点,采用相应的存储结构,而不是采用现有的数据存储工具。
基于关系数据库的存取方法:它是在关系数据库基础之上扩展了 XML支持模块,它将 XML数据存储在关系数据库中,在查询时将 XML数据查询语言转换成关系数据数据库查询语言。
返回常用的 XML查询语言,XQUERY
例 12.3 查询每本书的作者人数以及每位作者的名字,语句为:
<results>
{
FOR $book IN //book //指定变量 $book的取值范围是结点 <book>
LET $authors,= $book/author
//把变量 $authors赋值为 $book的子结点 <author>
RETURN
<book authorCount={ count($authors) }>
{
FOR $author IN $authors
RETURN
<author>{ $author/last/text() }</author>
}
</book>
}
</results>
基本概念
表达环境表达式环境指的是一切能影响表达式的最后结果的元素。
这些元素主要可以分成两类:静态环境和动态环境。
文档顺序和类型值
类型
XQuery对类型有严格的要求,其类型主要包括 XML的结点类型,XML schema的原子类型以及一些特别的派生类型 。
简单查询
字符表达式
变量
路径
序列
运算符
FLWR表达式各种类型的查询
构造查询结果的结构
限定查找的范围
指定查询条件
FLWR的嵌套
if-then-else语句
量词
type switch语句
对查询的结果进行排序
名字空间的约定
Schema的导入
自定义函数的使用复杂查询
查询 ref信息
关联
投影
分组( grouping)
基于关系数据库的 XML处理
目前 XML数据的存储主要主要有两种方式,一种是基于关系数据库的方法,另一种是纯的 XML数据存储系统。
在 XML数据和关系数据库之间有两个问题。一个问题是如何将存储于关系数据库中的数据用 XML的形式表达出来,即 XML的发布问题;另一个问题是如何将 XML数据存储于关系数据库中,并能提供基于 XML查询语言的查询。
关系数据的 XML发布
基于模板驱动的映射这种方法的原理是首先定义一个模板,然后在模板中嵌入对数据库访问的命令,这些命令将交给数据库关系系统进行执行。
基于模型驱动的映射数据从数据库到 XML文档的传送用一个具体的模型,而不是用户定义的模型实现的。
( 1)表格模型
( 2)数据专用的对象模型
XML存储和查询系统体系结构关系数据库管理系统映射关系 数据装载器
XM L 文本查询转换器
XM L 查询语句关系数据库查询语句结果组装器
XM L 查询结果图 12.2 XML存储和查询系统体系结构图
XML数据到关系数据库的存储映射
不考虑 DTD的映射以边为中心的方法以结点为中心的映射方法
考虑 DTD的映射这种方法是针对不同的 DTD根据其结构的特点和查询的方法设置映射关系,在这种方法中 DTD中的每个元素对应的关系中的一列。
产生映射方法的步骤
简化 DTD
将 DTD和 xml文档转换为图的形式
将 DTD映射至关系表的三种方法
(1) Basic Inlining 的方法
(2) Shared Inlining的方法
(3) Hybrid Inling的方法
三种方法的比较与小结将 XML文档中数据装入关系表
关系表生成之后便是 xml数据装入工作,即根据映射关系,将 XML文档内容存储到关系数据库中。对于 XML文档中的每一个元素,为其分配一个唯一标识 UID(类似面向对象数据库中的 Oid),由它在具有相同标签的元素集中唯一标识该元素。按照关系模式的定义,XML文档中的字符串数据、元素唯一标识构成的层次结构关系及元素的顺序语义等信息被组装成元组插入到数据库视图中。由于 XML元素和属性值的类型都是字符串,组装时需要转化成视图中字段的定义类型。
返回基于关系数据库的 XML查询
需要解决的三个问题
转换使用简单路径表达式的查询至 SQL
查询通过如下步骤被翻译为 SQL:
① 若存在关系表所对应的根结点,则将代表此根结点根路径表达式加入到 SQL查询的 from子句中。
② 路径表达式被翻译为表间的联接(若元素是内联的则不需)。
转换有简单循环的路径表达式至 SQL
小 结
XML数据的处理技术是近年来学术界研究的热点,同时也引起了工业界的关注 。 因此这部分的技术正处在高速发展的期间,这方面相关的知识也有很多,如,XML数据的解析,XML数据的索引技术,XML数据的存储技术,
基于 XML的数据交换,集成技术等 。
本章先是简单介绍一下 XML的基础知识和基本结构,然后介绍了一种目前比较常用的 XML查询语言 XQUERY,随后介绍了基于关系数据库管理系统的 XML数据处理方法。
如果感兴趣可以就 XML技术的其他内容进行深入学习。