从Marklogic的主模块运行库模块?

时间:2018-01-14 15:34:30

标签: xquery marklogic

更新代码

我的图书馆模块就像这样

   module namespace test="http://try.marklogic.com/test";
declare function test:median(
  $map as map:map*
) as node()*
{
cts:search(fn:doc(),
  cts:and-query((
  cts:element-word-query(
      xs:QName("College"),map:get($map,"College")),
  cts:element-word-query(
      xs:QName("Year"),map:get($map,"Year")),
   cts:element-word-query(
      xs:QName("Dep"),map:get($map,"Dep")),
   cts:element-word-query(
      xs:QName("Grade"),map:get($map,"Grade")),
   cts:element-range-query(xs:QName("Date"), ">",
      map:get($map,"StartDate")),
   cts:element-range-query(xs:QName("Date"), "<",
      map:get($map,"EndDate")))))
};

我的主要模块就像这样

import module namespace test = "http://try.marklogic.com/test" at "/lib1.xqy";

let $map := map:map()
let $College := "UCLA"
let $Year := "2000"
let $StartDate := xs:date("2017-01-06")
let $EndDate := xs:date("2018-01-06")
let $Dep := "CSE"
let $Grade := "A"
let $put := ( map:put($map, "College",$College),
            map:put($map, "Year",$Year),
            map:put($map, "Date",$StartDate),
            map:put($map, "Date",$EndDate),
            map:put($map, "Dep",$Dep),
            map:put($map, "Grade",$Grade) )
return test:median($map)

如何单独传递参数而不是在主模块中指定?

1 个答案:

答案 0 :(得分:2)

摆脱&#34; as cts:search&#34;你图书馆的第4行。

如果你需要定义一个返回类型(你不需要从语言的角度来看),那么使用你实际返回的返回类型。 这将是cts:search()结果,&#34; as node()*&#34;

请参阅:https://docs.marklogic.com/cts:search