Xquery导入cts(无法使用其函数)

Xquery导入cts(无法使用其函数),xquery,marklogic,Xquery,Marklogic,我想使用XQuery从文本中查找不同的术语。这是我的代码: declare namespace rec="http://xxx.xxx/xxx"; declare namespace cts="http://marklogic.com/cts"; for $r in /rec:Record return distinctive-terms( $r/rec:text,<options xmlns="cts:distinctive-terms"> <max-terms>

我想使用XQuery从文本中查找不同的术语。这是我的代码:

declare namespace rec="http://xxx.xxx/xxx";
declare namespace cts="http://marklogic.com/cts";

for $r in /rec:Record 
return
distinctive-terms( $r/rec:text,<options xmlns="cts:distinctive-terms">  <max-terms>3</max-terms></options>)
我已更改
声明命名空间cts=”http://marklogic.com/cts
导入模块cts=”http://marklogic.com/cts
,但我需要一个位置来从
导入它“…”
我找不到
cts的位置
有人知道我应该做什么吗???

是一个内置函数,因此不需要导入模块。cts命名空间也是内置的,您不需要声明它。但是,仍然需要使用函数前缀。仅仅声明它并不能改变这一点


所以:
cts:district terms($r/rec:text,…)

关于玛丽所说的,这里有一些有趣的信息:

在MarkLogic中,所有内容都位于xQuery和XML的名称空间中。没有什么是神奇的,然而,有些事情只是默认的-这可能看起来像魔术。。(MarkLogic——“rlko”等同于“魔法”,但这只是巧合:)

就像XML有默认名称空间一样,xQuery也有默认名称空间。在marklogic中,这是映射到所有xPath好东西的fn名称空间

在引擎盖下,这与在模块上定义此相同:

declare default function namespace "http://www.w3.org/2005/xpath-functions";
但同时,它也用名称空间声明:

declare namespace fn = "http://www.w3.org/2005/xpath-functions";

因此,在MarkLogic的xQuery处理器中,只有来自名称空间的函数可以在没有名称空间声明的情况下运行。即使如此,这也是由于默认配置。就我个人而言,我对一切都使用名称空间——包括fn

对于所有其他名称空间,必须使用它们。但是,有20多个是预定义的,您甚至不需要为其导入名称空间,因为这些名称空间已集成到MarkLogic中。可在以下位置找到:


当使用其他便利性和功能库(即使是您自己的或第三方)时,您需要导入它们并参考它们的位置(例如搜索库)。

我将在已经提供的优秀答案中添加另外一点信息:

如果不确定函数是否为内置函数,请查看文档中函数参考页底部的示例。示例显示了正确的用法


如果在函数的示例中没有看到名称空间声明,那么它是一个内置的,您也不需要在代码中声明名称空间或导入模块。当然,您仍然需要在函数调用中使用前缀,正如David Ennis所提到的。

字符串中的所有空格是怎么回事?marklogic文档肯定没有在
中指定空格。”http://marklogic.com/cts“
.btw,StackOverflow”cts“标记属于Android兼容性测试套件,因此它不适用于类似命名的MarkLogic命名空间。在选择标签时,阅读弹出的关于各种标签的简介会很有帮助。
declare namespace fn = "http://www.w3.org/2005/xpath-functions";