xquery - ожидаемый возврат найден - PullRequest
1 голос
/ 15 ноября 2010

Я получаю эту ошибку от Саксонии,

Название двигателя: Saxon-PE XQuery 9.2.1.2 Серьезность: смертельный Описание: Синтаксическая ошибка XQuery в # ... (: return :) let $ #: ожидаемое «return», найдено «let» Начальное местоположение: 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 и много потратил на эту ошибку, не получив решения. Вары были замаскированы намеренно, но из сообщения об ошибке, похоже, связано что-то с потоком функций.

Любая помощь приветствуется.

Спасибо заранее Alessandro

1 Ответ

1 голос
/ 15 ноября 2010

Саксон заявляет только о «частичной поддержке 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)
...