
XQuery
superlmj
这个作者很懒,什么都没留下…
展开
-
XPath查询XML文档的注意事项
老鼠与人最好的排列计划 本文的灵感来自一个诸事不顺的周末。我的那一位决定和同事去拉斯维加斯进行一次庆祝旅行,恰好我计划去宜家家居挑一个书柜,这样我在搬到雷得蒙几个月之后终于可以将我的书松绑了。在宜家家居逛了两个小时之后,我发现一个陈列的书柜与我房间的色调很相配,只是一些必要的配件缺货。最终我订购了这种书柜,空着手先回家了。然而,我已经把书都解开了,它们散落在房间的各个角落。这成为整理我日益增长转载 2004-07-06 17:04:00 · 1403 阅读 · 0 评论 -
XQuery表达式之量化表达式(Quantified Expression)
量化表达式比较简单,它类似于SQL中的exists 子句。它的语法如下:[some | every] $var in expr ($anothervar in anotherexpr)* satisfies test_exprsome或every是量词,也是关键字。in子句可以有多个。量化表达式的执行结果是一个boolean值,因为它一般做为谓词用在路径表达式中,或做为where子句用在FLWOR原创 2006-03-23 12:51:00 · 1944 阅读 · 4 评论 -
XQuery表达式之条件表达式(Conditional Expression)
[如需转载请注明出处]条件表达式实现了XQuery的分支功能,它的语法如下: if (expr1) then expr2 else expr3if,then,else都是关键字。如果expr1的有效布尔值(Effective Boolean Value)为true,则条件表达式评估expr2,如果是false则评估expr3。那么有效布尔值是什么概念呢?一个操作数的有效布尔值就是对该操作数调用fn原创 2006-04-03 16:55:00 · 2440 阅读 · 0 评论 -
XQuery的基本结构
[如需转载,请注明出处]前两天去给客户做培训,需要讲解XQuery的知识。虽然一直在从事XQuery相关的工作,包括XQuery引擎的实现,XQuery在实际应用中的探索,XQuery和SQL的结合等等,但是从来没有条理性地梳理过XQuery的知识点。正好最近也比较空闲一点,可以开始重新review一下,并记录在blog上。第一篇先介绍一下XQuery的基本结构。XQuery语言由模块(Mod原创 2006-03-06 17:30:00 · 1710 阅读 · 2 评论 -
XQuery表达式之基本表达式(Primary Expression)
[如需转载,请注明出处]构成XQuery中的基本元素是表达式,XQuery表达式又分为基本表达式(Primary Expression)、路径表达式(Path Expression)、序列表达式(Sequence Expression)、数学表达式(Arithmetic Expression)、比较表达式(Comparison Expression)、逻辑表达式(Logical Express原创 2006-03-08 16:40:00 · 3873 阅读 · 0 评论 -
XQuery表达式之逻辑表达式(Logical Expression)
像高级编程语言一样,XQuery同样有逻辑表达式,逻辑表达式要么是or表达式要么是and表达式。在不抛错的前提下,逻辑表达式的运算结果要么是true要么是false。and和or都是二元操作,在执行时,首先会得出两个操作数的有效布尔值。关于有效布尔值,在前面已经提过了。下面两张表分别说明and和or运算时的情况。EBV1指第一个操作数的有效布尔值,EBV2指第二个操作数的有效布尔值,原创 2006-04-21 16:27:00 · 2244 阅读 · 3 评论 -
XQuery表达式之比较表达式(Comparison Expression)
XQuery中比较表达式主要分为三类:1。值比较2。大体比较3。节点比较1。值比较:值比较是通过eq,ne,lt,le,gt和ge比较符(操作符)来比较两个单个的值(原子类型值和节点),这里说的单个值是指左右两个操作数原子化后是单个的值.计算时首先原子化操作符左边的表达式,如果结果是空序列,那么比较的结果是空序列,或者继续原子化右边的表达式看右边表达式原子化是是否抛错(和具体实现相关)如果左边的序原创 2006-04-25 14:41:00 · 2404 阅读 · 0 评论 -
XQuery表达式之算术表达式(Arithmetic Expression)
XQuery中的算术表达式提供加(+)、减(-)、乘(*)、除(div,idiv)和取模(mod)功能。这些是二元运算,XQuery还提供+,-的一元运算计算时,首先原子化操作数,如果原子化后操作数是空序列,那么运算结果是空序列。如果原子化后操作数是长度大于等于1的序列,那么抛错。如果原子化后操作数类型是xdt:untypedAtomic,那么将它转换为xs:double型后再运算。需要注意的是因原创 2006-04-25 14:43:00 · 2081 阅读 · 0 评论 -
XQuery表达式之FLWOR表达式(FLWOR Expression)
[如需转载请注明出处http://blog.youkuaiyun.com/superlmj/archive/2006/04/25/676744.aspx]FLWOR表达式应该是XQuery最重要的表达式之一了。FLWOR表达式是指由for、let、where、order by和return子句组成的表达式,可以把FLWOR念成flower。它的语法如下:for in for_expression (类原创 2006-04-25 14:45:00 · 4970 阅读 · 0 评论 -
XQuery表达式之序列类型表达式(Expressions on SequenceTypes)
谈到类型,我们就想到Schema。XQuery是一种强类型的查询语言,它包括了对于类型的运算。然而目前带有Schema意义的XQuery引擎还不多,比较有名的就是Saxon的商业版本(Saxon的open source版则没有)XQuery中提供的关于序列类型的表达式有5种:1.instance ofinstance of用于判断第一个操作数是否是某种类型,等同于Java种的instanceof。原创 2006-04-25 14:54:00 · 1703 阅读 · 0 评论 -
XQOM--基于XQuery的开源XML持久化工具
我们以前听到castor,xmlbean,jaxp等都是为了开发人员使用方便开发的xml数据和对象之间的映射转换框架,但缺乏完整的持久化框架。XQOM就是基于XQuery和XQJ来满足这样需求的开源的工具。参见https://xqom.dev.java.net/ 和http://www.ilyasterin.com/enteprise_software/2006/08/xml_persistenc原创 2006-11-08 13:54:00 · 8415 阅读 · 0 评论 -
一篇关于基于成本优化的XQuery查询引擎的文章
今年正好是XML出现并发展的第十个年头,而关于XML查询的XQuery发展也开始进入新的阶段。DB2的新版本DB2 9(code name Viper)也将于下个月28号正式发布了,这个由750名开发人员历时5年并被IBM称为新一代的数据库最大的特点就是加入了对Native XML的支持。今天在IBM的网站上看到一篇关于基于成本优化XQuery查询引擎的文章http://www.research.原创 2006-06-30 11:14:00 · 1378 阅读 · 0 评论 -
对于XPath的新要求
我们知道使用xpath可以根据给定的path路径寻找到相应的节点 ,但是如何根据已知的节点确定他的路径呢?Rick Jelliffe就提出了这样的疑问。参见http://www.oreillynet.com/digitalmedia/blog/2004/07/javas_xpath_apis_needs_groutin.html我们可以通过多个path路径找到所有符合条件的节点,然后再根据这些节点原创 2006-12-27 10:57:00 · 1189 阅读 · 0 评论 -
XQuery正式成为标准
http://www.w3.org/2007/01/qt-pressrelease XQuery从提草案到变为Standard的时间是差不多是SQL成为标准所需时间的一半原创 2007-01-25 17:03:00 · 1727 阅读 · 0 评论 -
XML+SQL=数据库的未来?
XML标准和文档的出现为关系数据库出了一道难题,以访问二维表数据为主的SQL和XML的结合就成了一条中和之路。于是乎,漫长的SQL/XML结合之旅开始了。 随着新XML文档规范的问世,厂商正在加大在RDBMS(关系型数据库管理系统)中对XML支持的力度。 当XML五年前推出时,它所具有的改写数据管理规则的前景引起了关系型数据库厂商的注意,不过他们并没有恐慌。十年前就经历过这一幕,转载 2006-02-16 09:59:00 · 1286 阅读 · 0 评论 -
XQuery引擎的两种应用
[如需转载,请注明出处]目前,XQuery主要应用在两个方面:1,做为XML数据库的查询语言来操作XML文档;2,做为中间件用于企业信息的集成(EII)。 市面上的XML数据库,尤其是源生XML数据库(Native XML Database)如Ipedo XML Database、Software AG Tamino Server、Berkeley XML Database都提供了XQ原创 2006-02-09 15:21:00 · 2312 阅读 · 1 评论 -
XPath中如何比较不同类型的对象
目前XPath2.0还没有正式定稿,因此本文的讨论是基于XPath1.0.XPath支持四种基本类型:1. Node-set2. string3. number4. boolean我们知道一个Location Step由Axis,Node Test和Predicate三部分组成,而用于查询XML文档的XPath又是由若干Location Step组成,比如/table/row[id=0000]原创 2004-09-25 15:27:00 · 1178 阅读 · 2 评论 -
各类XQuery引擎的比较
这篇文档翻译自Wei Ren(weiren@dstc.edu.au),写作时间是2001,距今已有3年,其间XQuery的发展突飞猛进,文中的很多内容已经不再准确了。翻译的目的也只是给对XQuery,尤其是XQuery实现的朋友一些参考。等有空我会把目前我所在公司Ipedo(http://www.ipedo.com)的XQuery引擎做些介绍。Software AGs Quiphttp://翻译 2004-11-26 22:49:00 · 2635 阅读 · 0 评论 -
更弦易张
以前的Blog里面啥乱七八糟的都写上去了。从今天开始自己的Blog主要关注XQuery的相关技术,做到专业化一些。Blog的Title也改掉了。其实,前几天就想改了,可是优快云的Blog老是有问题,改不成。原创 2005-11-04 14:41:00 · 1561 阅读 · 0 评论 -
XQuery简史
现在,原来越多的信息以XML的格式进行存储、传送以及展现,对XML数据的查询也就显得原来越重要。2005年11月3号, W3C发布了关于XML查询的8个备选推荐规范,XSLT and XQuery:XSL Transformations (XSLT) Version 2.0XSLT 2.0 and XQuery 1.0 SerializationXML Synt原创 2005-11-11 14:48:00 · 2009 阅读 · 0 评论 -
全局变量?局部变量?
这两天碰到一个问题。关于XQuery中变量的作用域问题。define function getResult() as node{let $k:=$greturn $k}let $g:=(1,2)rturn getResult()$g在函数getResult中到底是否有效呢?规范上好像也没明确说明。还是我没看明白?[2005年11月29日] The <a href="http://www.w3.or原创 2005-11-21 18:08:00 · 1030 阅读 · 0 评论 -
XQuery与SQL/XML
XQuery与SQL/XML,这两种标准都可以用来查询数据并返回XML。不同的是XQuery以XML为中心,而SQL/XML以SQL为中心。XQuery是W3C为查询XML而制定的语言规范。然而,除了查询XML外(不管XML存在于何处,数据库中,数据库外,中间结果等等),XQuery也可以查询关系型数据、对象数据等。SQL/XML是ANSI/ISO SQL 2003的一部分,是SQL标准为了兼容X原创 2005-11-17 17:55:00 · 1267 阅读 · 0 评论 -
位置变量的使用
每一个绑定于for子句的变量都有一个相关联的位置变量绑定于for子句。位置变量的名字位于关键字at之前,它的类型是xs:integer。当变量在绑定序列中迭代时,位置变量从1开始每次增1。比如下面的例子for $i at $pos in document("xquery/bib.xml")/bib/vendor/bookreturn {$i}在这里,我们用at $pos定义了一个原创 2005-11-29 11:31:00 · 1330 阅读 · 0 评论 -
直接构造器(Direct Constructor)和计算构造器(Computed Constructor)
XQuery提供了构造器用于在查询中创建XML结构。构造器可以用来构造XML中除了文档节点之外所有其他类型节点,包括元素节点(element node),属性节点(attribute node),名称空间节点(namespace node),文本节点(text node),处理指令节点(processing-instruction node),注释节点(comment node)。XQuery中的原创 2005-12-08 14:06:00 · 1331 阅读 · 0 评论 -
在XQuery中使用Module
从本质上说,module是在一个特定的namespace下的函数集合有点类似于库文件一样.module具有两层含义,首先module定义了一个namespace.第二它由一个或多个函数组成,每个函数都从属与这个namespace.下面看一个例子:1. 创建一个URI为http://www.xquery.com/training 的module2. declare namespace tra原创 2005-12-19 17:52:00 · 1144 阅读 · 0 评论 -
Top Ten Reasons Why XQuery 2005 Will Change Your Life
From the home office in Bedford, Massachusetts — the XQuery capital of the world — the Stylus Studio® Team proudly presents the top 10 XQuery trends to look for in 2005 (based on a healthy mixture of转载 2005-12-30 15:37:00 · 1235 阅读 · 0 评论 -
XQuery performance问题
这两个星期一直在研究客户报的XQuery的性能问题。客户的XQuery语句有好几百行,包括了很多自定义函数,还引用了两个XQuery module,在以前的版本上1秒钟左右就出结果了,现在的版本需要3~4分钟。首先分析执行计划,NND,在以前的版本上取执行执行计划的时候居然报错,改了代码之后才好了。比较一看,执行计划一样,该用的索引都用到了。这可麻烦了?问题在哪儿呢?接着使用profile工具,看原创 2006-01-25 11:25:00 · 1072 阅读 · 0 评论 -
XQuery表达式之路径表达式(Path Expression)
[如需转载,请注明出处]路径表达式其实就是XPath在XQuery中的应用。如果熟悉了XPath,那么对XQuery中的路径表达式也就了解了。一个路径表达式由一个或多个Step组成,Step由“/“或"//"区分。表示每一个Step都会在前一个Step产生的序列的基础上进一步筛选。Step又分为轴Step和过滤表达式。下面分别讨论这两种Step1。轴表达式轴表达式由轴、节点测试和谓词构成,它们又通原创 2006-03-10 18:08:00 · 2754 阅读 · 0 评论 -
XQuery表达式之序列表达式(Sequence Expression)
首先我们需要明白XQuery中序列的构成,XQuery中序列由一系列的项(Item)构成,项可以是XML的节点(node),也可以是原子类型(包括整型,浮点型,字符串等)数据。下面的例子中基本上采用的是原子数据类型。节点做为项或节点和原子数据类型同时做为序列的项基本雷同。序列表达式主要就是指对序列操作的表达式,主要分为三类:1。构造序列构造序列可以通过枚举的方式,如下例(10, 1, 2, 3,原创 2006-03-15 09:40:00 · 2803 阅读 · 0 评论 -
Java5中为XPath添加扩展函数
Java5中增加了XPath API,并且可以通过Java添加XPath的扩展函数。下面是个例子://函数用来计算打折信息public class DiscountFunction implements XPathFunction { public Object evaluate(List args) throws XPathFunctionException { if (ar原创 2007-07-13 10:35:00 · 2642 阅读 · 0 评论