删除MarkLogic函数中的"fn:"?

Mr *_*kél 7 xquery marklogic

有没有一种方法可以让MarkLogic不必为每个fn:具有该前缀的函数添加前缀?我在网上看到很多代码告诉我我不需要它.

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

思考?

谢谢!

hun*_*ker 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";
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用的是旧版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"
Run Code Online (Sandbox Code Playgroud)

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

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