Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xquery 从Marklogic中的主模块运行库模块?_Xquery_Marklogic - Fatal编程技术网

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

Xquery 从Marklogic中的主模块运行库模块?,xquery,marklogic,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"

更新代码

我的库模块是这样的

   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")))))
};
如何单独传递参数而不是在主模块中指定?

将库中的“
作为cts:search
”第4行去掉

如果需要定义返回类型(从语言的角度看不需要),那么使用实际返回的返回类型。 这将是
cts:search()
,“
作为节点()*
”的结果


请参阅:

您正在以map:map的形式传入参数。这是故意的吗?如果传入map:map,则需要使用例如map:get($map,'College')获取映射条目。或者,您也可以声明所有参数,并分别传递它们。顺便说一句,JoiningDate上的范围查询可能不会返回结果,因为它们可能是互斥的。一个日期不能小于或大于某个值。。Thanks@grtjn正如你所建议的,我修改了代码,并且工作得很好。正如你所说的
你也可以声明所有的参数,并分别传递它们。
我该怎么做?
声明函数test:median($College,$year,…)
,然后用
调用它,test:median($College,$year,…)
…意味着你说的不是map,而是像
$College,
一样单独使用它们,
$Year,…
对吗?
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)