Xquery arg1不是xs:anyAtomicType类型

Xquery arg1不是xs:anyAtomicType类型,xquery,marklogic,Xquery,Marklogic,我正在尝试上面的代码,但它在fn:concat行中给了我错误。有人能帮忙吗?fn:concat()函数接受任意数量的单个字符串,而不是序列 函数的作用是连接序列 因此,一种解决方案是在传递给string-join()的序列中包含for循环,如下所示: 希望这能有所帮助,我是否需要在for循环之前或之后编写return语句?因为它给了我一个错误——很抱歉,这是一个错误的原始代码片段。修正了。删除fn:concat,只需使用fn:string连接。。 return fn:co

我正在尝试上面的代码,但它在fn:concat行中给了我错误。有人能帮忙吗?

fn:concat()函数接受任意数量的单个字符串,而不是序列

函数的作用是连接序列

因此,一种解决方案是在传递给string-join()的序列中包含for循环,如下所示:


希望这能有所帮助,

我是否需要在for循环之前或之后编写return语句?因为它给了我一个错误——很抱歉,这是一个错误的原始代码片段。修正了。删除fn:concat,只需使用fn:string连接。。
return
            fn:concat (fn:string-join ((
              "somevalue.1.",
              "somevalue.2.",
              "some val 3",
              "some val4",
              $somevariable), " "), 
 for $i in $loopvar    
              if ((fn:exists($loopvar)) and (fn:count($loopvar) > 1)) then
              " where ( "  || $loopvar[i] || " and "
              else if(fn:exists($loopvar) and (fn:count($loopvar) > 0)) then
              " where " || $loopvar[i]
              else() )
 fn:concat(fn:string-join((
     "somevalue.1.",
     "somevalue.2.",
     "some val 3",
     "some val4",
     $somevariable, 
     for $i in $loopvar
     return 
          if ((fn:exists($loopvar)) and (fn:count($loopvar) > 1)) then
          "where ( "  || $loopvar[i] || " and "
          else if(fn:exists($loopvar) and (fn:count($loopvar) > 0)) then
          "where " || $loopvar[i]
          else() )
     ), " ")