在XQuery中使用Module

来源:互联网 发布:人工智能有哪些产品 编辑:程序博客网 时间:2024/05/17 04:03
从本质上说,module是在一个特定的namespace下的函数集合有点类似于库文件一样.module具有两层含义,首先module定义了一个namespace.第二它由一个或多个函数组成,每个函数都从属与这个namespace.下面看一个例子:
1. 创建一个URI为http://www.xquery.com/training 的module
2. declare namespace training="http://www.xquery.com/training"
define function training:getName($lname) returns node
{
<result>
{for $i in document("xquery/bib.xml")//lastname
where $i=$lname
return $i
}
</result>
}

在第二部分中通过声明一个与module的URI相同的namespace与之建立联系. 接着,我们就可以xquery的语句中直接使用它:

xquery:

import moudle namespace sample = "http://www.xquery.com/training"

sample:getName("Davie")

在这里第一句话是一种缩略语法,它其实可以写成如下形式:

import moudle "http://www.xquery.com/training"

declare namespace sample = "http://www.xquery.com/training"

首先我们引入的moudle "http://www.xquery.com/training"并声明了一个与之对应的namespace.接着我们就可以直接在xquery中用了.下面是返回的结果:

<result>

<lastname>Davie</lastname>

<lastname>Davie</lastname>

</result>

Ipedo的XIP平台支持module使用,大家可以任务开发属于自己的module。比如可以把自己开发的所有关于时间和日期的函数放在一个module中,然后在其他任意xquery语句中调用。大大降低代码量,以及维护难度。