MarkLogic 有没有办法不必为每个fn:
函数都加上该前缀?我在 Internet 上看到很多代码表明我不需要它。
事情会变得相当冗长,你知道吗? fn:not(fn:contains(...))
, 代替not(contains(...))
想法?
谢谢!
和你一样,我不喜欢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:
前缀。(就个人而言,我认为这更清洁。)