2010-11-15 1 views
1

я получаю эту ошибку от Saxon,XQuery - ожидаемый доход нашел пусть

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

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

Заранее спасибо Алессандро

ответ

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) 
Смежные вопросы