从本质上说,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语句中调用。大大降低代码量,以及维护难度。