220 likes | 431 Views
第 12 章 XML 技术. 本章的重要概念. ( 1 )从 SGML 、 HTML 到 XML 的发展, XML 文档、 DTD (文档类型定义)、 XML 模式, XML 数据库的存取方法。 ( 2 ) XML 查询语言 XQUERY 的基本功能、基本概念,简单查询的表达,各种类型查询的表达,复杂查询的表达。 ( 3 )基于关系数据库 XML 的处理, XML 存储和查询系统体系结构, XML 数据到关系数据库的存储映射,基于关数据库的 XML 查询。. 本章概述.
E N D
本章的重要概念 (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推荐标准。其特点为: lXML可直接在因特网上使用 lXML应支持广泛的应用 l使用方便,结构简明 l表达能力强,适于计算机进行处理
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存储和查询系统体系结构 图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技术的其他内容进行深入学习。