MarkLogic是否有办法不必为每个fn:
函数添加前缀?我在互联网上看到很多代码,告诉我我不需要它。
事情可能变得相当冗长,你知道吗? fn:not(fn:contains(...))
代替not(contains(...))
思想?
谢谢!
答案 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:
前缀。 (就个人而言,无论如何,我认为那更干净。)