XML技术分析05

发布时间:2024年01月08日

一、DOM

使用DOM扫描器程序:DOM扫描器是一种非常通用的程序,它不需知道用户定制的XML标记的确切含义。DOMAPI具有某些能把任何数据存储到树形结构中的接口。扫描器具有一组实现了这些接口的类,可以实例化这些类的对象。 ? ? ?

这些接口和类允许插入和卸下不同的扫描器,不会影响应用程序,也可以调用DOMAPI的主要数据类型。它提供几种方法,可以引导到子节点。其他许多接口如Document、ELement、Entity和Attr都扩展了Node。

?局限性:DOM适合处理少量及中等数据量的数据,但不适合处理非常大的数据。因为DOM处理文档时,只要一开始,必须到结束才能停止返回,对于非常大的数据,效率则比较低,当我们所需要的只不过是文件中的某些少量元素时,它却要浪费大量的时间处理整个文档。

二、SAX

SAX 扫描器:SAX与DOM工作方式有所不同,当它发现了所需要的元素时,会立即把XML元素返回给调用程序。也就是说,当SAX扫描器开始读取XML数据时,无论何时遇到给定元素的起始标记符,它将立即通知通用程序,而不需要每次都处理整个文档。遇到结束标记符也是如此。SAX扫描器与调用程序的通信方式是通过回调来实现的。又由于SAX不必在内存中建立语法树,从而节省了内存。 ? ?

?SAX扫描能够非常有效而方便地利用计算机资源,灵活地处理比较大的数据,但也有不足。与DOM扫描器相比,必须编写较多的接口代码才能调用SAX扫描器,而且一旦需要,程序员还必须增加代码以便跟踪它己经扫描到什么位置了。

三、XML查询语言XQuery

? ?XML Query:通常缩写为 XQuery,是一种能灵活地从 XML 文档中抽取数据的查询语

(1) 字符表达式 ? ? ? ? ?

字符表达式包括字符字符串和数字字符串二种,字符字符串是由所有schema中类型为xs:sting的字符组成,数字字符串是由数字0~9以及“·”“e”和“E”组成。

(2) 变量 ? ? ? ? ?

变量表达式为:“$变量名”,如“$book”表达变量为book,它是区分属性、节点等其他元素的标志。变量通常直接使用,既可在for语句中给变量赋值,又可在条件限定语句和函数调用时给变量赋值;若变量没有赋值,则值为error。

(3)路径

?用以确定每个节点在树中的位置。分为绝对路径和相对路径。 ? ? ?

绝对路径——从文档的根目录开始,直到目标的子节点或属性,之间用“//”隔开。 ? ? ?

相对路径——是直接从当前路径的下一级开始,然后至目标子节点或属性。路径是一个表达式,有前向和后向表达式。

四、前后向表达式

前向表达式有:

child:: 子节点名——表示当前节点的子节点,如child::book ;child::* 表示当前节点的所有子节点。

descendant:: 子孙节点名——表示当前节点的子孙节点,如descendant::book ;

attribute:: 属性名——表示当前节点的属性,如attribute::title ;

self:: 节点名——表示节点自身,如self::auther;

descendant-or-self:: 节点名——表示当前节点自身或它的子孙节点,如descendant-or-self:: auther 。

后向表达式有:

parent:: 父节点名——表示当前节点的父节点,如parent::price 。

前向、后向表达式每次运行时,都会返回一个元素,并对这个元素系列进行检查,具体有:①节点名的合法性检查。 ②节点类型检查。包括文本类型测试text()、注释类型测试comment()、节点类型测试node()、处理信息类型测试processing-instruction等。

简略写法

“child::”可以完全省略,“attribute::”可以省略为“@”,“descendant-or-self::node()/”可省为“//”,self:: node()的省略写法是“.”,parent:: node()的缩写为“..”。又,para代表当前节点的子节点,*代表当前节点的所有子节点,text()代表当前节点的所有文本类型的子节点,name代表当前节点的name属性。

五、各种类型的查询

Xquery要查找的信息可以包含在一个或多个表达式中,Xquery可以用XML表现查询结果;Xquery又可根据查询的不同,用各种不同的语句表达式,如FLWR表达式、[条件]表达式、及排序表达式等,并允许各个表达式相互嵌套。

(1) 用XML表现查询结果 ? ? ? ? Xquery可以用XML表现查询结果,即通过构造XML结构的方法,使结果表现出XML的结构方式。在查询结果中制定节点、属性、注释、处理指针及CDATA(其中的数据照原样输出)。

(2) 指出查找范围 ? ? ? 可以用FOR语句将查找的对象限定为某个文档或节点。

(3) 限定查找条件 ? ? ? 通过WHERE语句限定查找条件。

(4) if-then-else语句 ? ? ?用于需要分条件判断的情况。

(5) 对查询结果进行排序 ? ? ? ? ?按照需要对查询的结果进行排序,如按书名排序,按作者排序等。

六、FLWR表达式

? ? ?XQuery 中最强大的新特性是 FLWR 表达式。FLWR(发音为 flower)是 For-Let-Where-Return 的首字母缩略词,每个 FLWR 表达式都有一个或多个 for 子句、一个或多个 let 子句、一个可选的 where 子句以及一个 return 子句,这些子句都允许在这些表达式的任何一个中。 ? ?

FLWR的语句格式为:

for 变量1 in 表达式1,变量2 in 表达式2,……变量n in 表达式n 。

let 变量1:=1,变量2:=2,……

where条件

return 返回的内容

(1) for 子句 ? ? ? ?for 子句对表达式中的变量进行范围限定,若没有for 子句,则变量在当前文档的范围内。

(2) let 子句 ? ? ? ?let子句为for子句中所有的变量进行赋值,通常一个变量赋一个值或一个序列。 (3) where子句 ? ? ? where条件语句对变量作进一步的限制。如果特定的元组不能满足特殊条件,那么where 子句命令程序废弃这些元组。

(4) return 子句 ? ? ? ? return 子句定义每个元组要返回的内容,它指定了返回的结果及形式。Return语句可以嵌套FLWR语句。

七、XML与数据库的关系

数据库在XML应用中的角色 ? ? ? ?

XML作为数据交换的标准,更着重于统一数据格式,而不是提供数据库的特性,数据库作为数据管理的地位没有改变!

XML数据库 ? ? ? ? ? ? ? ?

XML作为数据交换的标准,更着重于统一数据格式,而不是提供数据库的特性,数据库作为数据管理的地位没有改变!

XML数据库的类型

目前XML数据库有三种类型:

(1)XMLEnabledDatabase(XEDB),即能处理XML的数据库。其特点是在原有的数据库系统上扩充对XML数据的处理功能,使之能适应XML数据存储和查询的需要。一般的做法是在数据库系统之上增加XML映射层,这可以由数据库供应商提供,也可以由第三方厂商提供。映射层管理XML数据的存储和检索,但原始的XML元数据和结构可能会丢失,而且数据检索的结果不能保证是原始的XML形式。XEDB的基本存储单位与具体的实现紧密相关。

(2)NativeXMLDatabase(NXD),即纯XML数据库。其特点是以自然的方式处理XML数据,以XML文档作为基本的逻辑存储单位,针对XML的数据存储和查询特点专门设计适用的数据模型和处理方法。

(3)HybridXMLDatabase(HXD),即混合XML数据库。根据应用的需求,可以视其为XEDB或NXD的数据库。

XML数据库的优势 ? ? ? ?

1、XML数据库能够对半结构化数据进行有效的存取和管理

2、提供对标签和路径的操作。

3、当数据本身具有层次特征时,由于XML数据格式能够清晰表达数据的层次特征,因此XML数据库便于对层次化的数据进行操作。

XML数据库的典型应用 :数据交换、 Web应用和服务、 信息集成、 内容管理、 电子商务、 电子政务。 ?

文章来源:https://blog.csdn.net/snowy_and_sunny/article/details/135433069
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。