XML查询语言XQuery的分析与研究

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:kcsj001
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:XML的应用变得日益广泛,XML数据库技术也得到了迅速发展,当越来越多的数据资料以XML为标准格式进行存储时,却由于其格式的不同导致了传统的数据库及查询语法无法适用。分析了一种全新的XML查询语言XQuery,并对FLWOR表达式进行了重要阐述。
  关键词:XML查询;XQuery;表达式
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)23-865-02
  Research and Analysis of XQuery,a XML Query Language
  ZHANG Jing-jing1,LI Nan2
  (1.Northwest Normal Uniuersity, Lanzhou 730070, China; 2.Bohai Uniuersity, Jingzhou 121000, China)
  Abstract:XML becomes more and more popular in Web implementation .XML database and related technologies are also rapidly developing.When more and more data are stored up in the standard format of XML,the traditional datebase and inquiring grammar can't be used due to different format.The article intends to analyze a brand-new query language,XQuery for XML,and it also introduces FLWOR expression exactly.
  Key words: XML querying; XQuery; expression
  
  1 引言
  
  随着Web的广泛应用,W3C提出了新的可扩展性标记语言XML,它能对各种数据源的信息内容进行标记,包括结构化和半结构化的文档、关系数据库和对象库。XML得到了广泛的应用[5],越来越多的数据采用XML格式进行存储、交换或表现,但当这些数据资料以XML为标准格式进行存储时,由于其格式的不同而导致传统的数据库及查询语法无法使用,鉴于非结构性数据的查询工作以及关系数据库自己的缺陷,人们需要一种更优化的数据查询语言来解决这些问题。
  XQuery1.0在2007年1月23日被确立为W3C推荐标准[1],XQuery起源于Quilt,并将Xpath2.0作为其子集,综合了SQL、OQL、XML-QL、XQL及Lorel等诸多语言的特点,XQuery吸取了多种查询语言的优点,适用于各种类型的XML数据源的查询,不仅查询功能强大,而且简洁灵活且易于实现。此外,XQuery还具有从多种数据库中检索信息的功能,能对各种数据和文档进行查询,是专门为处理XML数据的查询而设计的查询语言。
  
  2 XQuery的模块结构及特点
  
  XQuery查询模块主要由三部分组成:名字空间和模式声明,函数定义和查询表达式。前两部分和起来称为查询序(query prolog),查询序不是必需的[2],可省略。下节我们将通过FLWOR表达式来进行详细的分析。
  XQuery能较好的满足目前XML对查询语言的要求,能够实现对基于数据的、基于文档的以及混合型的XML数据源的查询,提高用户查询效率。下面我们对XQuery的几点主要特性做一简要的说明[3,5]:
  1)组合性:XQuery语言通常是由多种表达式(如路径表达式、条件表达式以及元素构造函数等)构成,它们是完全通用的,其中任何一个表达式的结果都可用作另一个表达式的操作数。组合性能使其实现简单或复杂的模式匹配功能,如过滤,选择,重构等。
  2)简洁性:XQuery定义了运算符的语义,使其包括了某种隐式操作。例如,将算术运算符(如+)施加于某个元素时,该运算符会自动提取该元素的数值。类似地,将比较运算符(如=)施加于一系列值时,则会自动地对该序列进行迭代,寻找满足比较条件的一对值。
  3)静态分析:XQuery查询语法主要有三层:首先是表层语法,它是可视性最高的并且是用户最有可能与之发生联系的语法;其次是可以替换表层语言的基于XML的语法XQuery;最后是形式代数语言,它使用正规定义的形式十分详细地描述了XQuery处理器内部工作,为XQuery处理器查询优化奠定了基础。查询的三个层主要体现在静态分析和动态求值的过程中。静态分析的目标是把XQuery表层语句通过XQuery核心语法XQueryX转换为标准的XQuery运算树,并对其进行类型检查,静态分析阶段是执行优化和检测某种错误的阶段,它能够及时发现查询错误并进行反馈。
  
  3 XQuery表达式的特性及实例的应用分析
  
  XQuery具有强大的查询和检索功能,它通过各种由关键字、符号和操作数所组成的表达式来完成查询。作为一门函数化的语言,它允许各个表达式进行相互嵌套,同时它又是一门类型明确的语言,一个运算涉及的表达式、函数、常量和变量必须符合类型要求。XQuery的基础是表达式,目前,最新版本的XQuery 1. 0规范共有14种表达式:初级表达式(Primary Expressions),路径表达式(Path Expressions),序列表达式(Sequence Expressions),算术表达式(Arithmetic Expressions),比较表达式(Comparison Expressions),逻辑表达式(Logical Expressions),构造器(Constructors), FLWOR表达式(FLWOR Expressions),有序和无序表达式( Ordered and Unordered Expressions),条件表达式(ConditionalExpressions),量化表达式(Quantified Expressions),序列类型表达式(Expressions on SequenceTypes),效用表达式(Validate Expressions),扩展表达式(Extension Expressions)。本文主要介绍和实现FLOWR表达式。
  3.1 FLWOR表达式的语法规范[1]
  XQuery 中最强大的新特性是FLOWR表达式,FLWOR在XQuery中的作用类似于SQL中的“SELECT FROM WHERE ORDER BY”, FLWOR是“For,Let,Where,Order by,Return”的缩写,其语法构成为:
  FLWORExpr::=(ForClause|LetClause)+WhereClause?+OrderByClause?“return”ExprSingle
  ExprSingle::=FLWORExp
  | QuantifiedExpr
  | TypeswitchExpr
  | IfExpr
  | OrExpr
  ForClause ::= "for" "$" VarName TypeDeclaration? PositionalVar? "in" ExprSingle ("," "$" VarName TypeDeclaration? PositionalVar? "in" ExprSingle)*
  LetClause ::="let" "$" VarName TypeDeclaration? ":=" ExprSingle ("," "$" VarName TypeDeclaration? ":=" ExprSingle)*
  WhereClause ::= "where"ExprSingle
  OrderByClause ::= (("order" "by") | ("stable" "order" "by")) OrderSpecList
  3.2 FLWOR表达式的执行过程及语句含义
  FLWOR表达式的执行过程如图1所示。
  FLWOR具体的含义如下:
  For 遍历结果集,并把当前条目绑定到给定的变量。
  Let 将匹配结果绑定到给定的变量。
  Where 条件子句,用来过滤结果集。
  Order by 排序子句,对结果进行排序。
  Return 对For ,Let ,Where, Order by子句进行求值,也就是返回FLWOR的结果。
  3.3 XQuery对XML文档的查询示例
  FLWOR表达式的结果是一个包含连接这些求值结果的有序序列。首先看一个简单的"bib.xml" XML文档:
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <bib>
  <book><title >SQL Server</title><author>Stevens </author><year>2008</year><price>30.00</price>
  </book>
  <book>
  <title>asp.net 2.0</title>
   <author>J K</author>
   <year>2007</year>
  <price>30.80</price>
  </book>
  <title >c#</title>
  <author>H.M</author>
  <year>2006</year>
  <price>40.95</price>
  </book>
  </bib>
  该文档的数据模型示于图2。
  下面用一简单的例子进行查询说明:
  for $x in document("bib.xml")/bib/book
  let $y:=$book/@year
  where $x/price>30 AND $y>=2006
  order by ($y) decending
  return
  <results>
  {$x/title}
  </results>
  表示选取 bib 元素下的 book 元素下所有的 title元素,并且其中的 price 元素的值必须大于 30,year元素的值大于等于2006,并对year元素进行升序排序。其中document() 用于打开 "bib.xml" 文件。
  上面的 XQuery 查询的结果为:
  <results>
  <title >c#</title>
  <title>asp.net 2.0</title>
  </results>
  
  4 结束语
  
  本文通过对非结构性数据的查询工作以及关系数据库自己的缺陷这一问题引出了XQuery语言,并对XQuery的特点进行了简要的分析,对于W3C发布的查询语言标准,文中我们从源语言的语言规范开始,尤其对于XQuery中的FLWOR表达式的整体应用过程,进行了详细的介绍。
  由于XML本身还是比较新的东西,尤其是XML查询语言,它的研究现在也在大部分限于理论研究阶段。尽管XQuery还不太成熟稳定,但是对于查询和恢复XML文档和文档集,XQuery仍然是一种很有前途的创新语法定义,并且在生成XML文档等方面,XQuery有着其他查询语言无可比拟的优势。随着计算机领域的不断扩大,XQuery也将会被广泛的接受,大规模的采用XQuery的浪潮不会太遥远。
  
  参考文献:
  [1] XQuery 1.0: An XML Query Language W3C Recommendation[EB/OL].[2008-1-23].http://www.w3.org/TR/xquery/.
  [2] W3C Working Group:XML Syntax for XQuery 1.0(XQueryX)[EB/OL].http://www.w3.org/TR/xqueryx/.
  [3] 谢荣传,谢铉洋.XQuery语言的实现[J].安徽大学学报:自然科学版,2005,29(1):23-26.
  [4] 基于XQuery的XML查询平台研究与设计[J].河南大学硕士论文,2006.
  [5] 程和侠,黄国兴.XQuery简介及在.NET中的应用[J].微型电脑应用,2005,21(7):62-63.
其他文献
摘要:该文以湖南交通职业学院的校园网为背景,从校园网内网安全威胁的特点和攻击原理入手,解析了如何利用VLAN技术保障校园网内网安全。  关键词:VLAN技术;校园网;内网安全  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)23-913-02  How to Support Campus Net the Net Security Use VLAN Technical 
期刊
摘要:探讨了软件逆向工程的基本原理,基于OnTrac平台设计了一个针对 Python源代码的逆向分析系统,并简要介绍ReverseUML系统以及核心模块。  关键词:逆向工程;Python;UML;类图;序列图  中图分类号:TP391文献标识码:A文章编号:1009-3044(2008)23-969-02  Design of Reverse Analysis System Based on O
期刊
摘要:当前,网络信息资源呈现爆炸式增长趋势,用户对信息查询的要求也越来越高,传统的各种信息查询技术已经很难满足这种要求。未来的因特网作为人类的信息库、知识库,应该支持用户以自然语言的方式来完成信息查询,并具备理解语义,进行自动扩展、联想的智能化查询系统。该文提出一个基于Ontology的信息查询系统模型,实现支持自然语言的理解和语义层面的智能化查询功能。  关键词:本体;信息查询;自然语言理解  
期刊
摘要:分析了基于Web服务的Acegi安全框架的构架和实现原理,以Web服务中的HTTPForm为例,详细阐述了Acegi提供的认证和授权机制,并进一步探讨了Acegi安全框架的权限管理,以满足复杂的企业安全需求,从而提高了Web系统的安全性和稳定性。  关键词:Web服务;认证;授权;权限管理  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)23-897-03  R
期刊
摘要:首先给出了SOA概念,然后分析了Web服务体系结构,最后讨论了Web服务的开发方式。  关键词:SOA;Web服务  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)23-958-02  Research about Web Service Based on SOA  PENG Bo1,2  (1.School of Computer and Informatio
期刊
摘要:为了方便教学,让学生尽快掌握汇编语言程序设计的方法,开发了基于VC++的Windows下MASM集成汇编系统,该系统集成了微机汇编语言主要调试工具,实现了编程、编译、联接和动态调试等功能的一体化。实践证明:MASM集成汇编系统界面友好、操作方便,有较好的应用价值。  关键词:汇编语言;微机;教学;Visual C++;Windows  中图分类号:G640文献标识码:A文章编号:1009-3
期刊
摘要:无线自组织网络由不需要任何基础设施的一组具有动态组网能力的节点组成,因此网络可以通过节点路由发现机制转发分组,并进行路由维护。这种网络适应了军事和商用中对网络和设备移动性的要求,而引起了人们的关注,并在20世纪90年代以后获得了广泛的研究和发展。文章对DSR(动态源路由协议)的路由发现过程进行了优化,并采用OPNET仿真软件对基于DSR协议的Ad Hoc网络的路由开销和时延等关键参数进行了仿
期刊
摘要:函数的应用是Excel2003的精华部分,针对大学生计算机文化基础教学过程中经常遇到的情况,以大部分教材中没有讲述的RANK函数和SUMIF函数为例,详细分析了Excel2003中函数的应用过程及需要引起注意的问题,具有重要的实际应用价值。  关键词:Excel2003 ;函数 ;应用  中图分类号:TP317文献标识码:A文章编号:1009-3044(2008)23-999-03  Det
期刊
摘要:详细介绍了IPv4IPv6转换网关的设计与实现过程;首先介绍转换网关的工作流程,其次介绍地址转换和协议转换设计,最后分析了DNS ALG设计。  关键词:IPv6;IPv4;转换网关  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)23-883-02  Design and Implementation of IPv4/IPv6 Translation Gate
期刊
摘要:将IEEE 802.11b技术应用于工控网络,必须对无线网关进行有效监控。文章介绍了无线网关接入工业以太网的原理和的功能,对SNMP(SimpleNetworkManagementProtocol)管理模型及协议体系结构进行了分析,详细阐述了SNMP在嵌入式无线网关系统上的实现过程,并给出了测试结果。  关键词:嵌入式Linux;SNMP;无线网关;管理模型  中图分类号:TP393文献标识
期刊