放弃" fn:"在MarkLogic中的功能?

时间:2013-10-22 23:07:15

标签: xquery marklogic

MarkLogic是否有办法不必为每个fn:函数添加前缀?我在互联网上看到很多代码,告诉我我不需要它。

事情可能变得相当冗长,你知道吗? fn:not(fn:contains(...))代替not(contains(...))

思想?

谢谢!

1 个答案:

答案 0 :(得分:9)

和你一样,我不想在我所有的fn:函数前面输入fn:

在普通的XQuery主模块中,您不需要fn:前缀,因为它是默认函数名称空间,并且用于所有未加前缀的函数。您执行但是在库模块中需要fn:,因为它们将默认函数名称空间更改为库模块名称空间。这意味着库函数可以相互调用而无需任何前缀。

但你可以改回来!这是切换回的标题代码。

xquery version "1.0-ml";
module namespace util = "http://markmail.org/util";
declare default function namespace "http://www.w3.org/2005/xpath-functions";

或者,如果您使用的是旧版0.9毫升:

xquery version "0.9-ml"
module "http://markmail.org/util"
declare namespace util = "http://markmail.org/util"
default function namespace = "http://www.w3.org/2003/05/xpath-functions"

它将模块放在给定的命名空间中,将util分配给该命名空间,然后将默认值分配给普通的fn:

此切换后,没有前缀的函数调用和定义将默认为fn:前缀;这意味着util库中的所有函数都应明确使用util:前缀。 (就个人而言,无论如何,我认为那更干净。)