7

MarkLogic 有没有办法不必为每个fn:函数都加上该前缀?我在 Internet 上看到很多代码表明我不需要它。

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

想法?

谢谢!

4

1 回答 1

9

和你一样,我不喜欢fn:在我所有的 fn:functions 前面输入。

在普通的 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-ml:

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:前缀。(就个人而言,我认为这更清洁。)

于 2013-10-22T23:35:39.123 回答