xquery - 预期返回发现let

时间:2010-11-15 14:30:58

标签: xquery

我从Saxon那里得到了这个错误,

引擎名称:Saxon-PE XQuery 9.2.1.2 严重程度:致命 说明:#...(:return :)中的XQuery语法错误让$#:期望“返回”,找到“让” 开始地点:776:0

关于此功能

declare function local:set-internet-type($req1 as element(ns0:req), $cate as element()) as xs:string {
  if(count(   for $itm in $req/*:cust/*:inter/*:itm
      where $789/*:product/*:030/*:specs/*:name/text()= data($11/INTERNET)
      and $22/*:action/text()="CHANGE"
      return $33)>0) then
  (
  for $44 in $55
      where $tt/*:name/text()= data($t/INTERNET)
   and $u/*:action/text()="CHANGE"
   (:return <fake/>:)

    let $z:= $a/*:product/*:c/*:e[1]

        return concat($x,'>',$y)
  ) else ("")
};

我是xquery的新手,我在没有得到解决方案的情况下花了很多时间来处理这个错误。故意掩盖了Vars,但是从错误消息看来似乎与功能流有关。

感谢任何帮助。

提前致谢 的Alessandro

1 个答案:

答案 0 :(得分:1)

Saxon只宣称“部分支持XQuery 1.1”。因此,我猜,它支持旧的FLWOR格式,在let之后您无法使用where。试着交换这些条款:

for $44 in $55
let $z:= $a/*:product/*:c/*:e[1]
where $tt/*:name/text()= data($t/INTERNET)
   and $u/*:action/text()="CHANGE"
return concat($x,'>',$y)