Saxon HE和XQuery:意外的标记“<eof>”

时间:2015-04-30 12:50:21

标签: xquery eof saxon

我从http://www.w3schools.com/xquery/xquery_functions.asp复制粘贴此示例(虽然我添加了名称空间声明):

declare namespace local="local";
declare function local:minPrice($p as xs:decimal?,$d as xs:decimal?) as
xs:decimal? {
    let $disc := ($p * $d) div 100
    return ($p - $disc)
};

但是当我尝试运行它时,SAXON输出是:

Error on line 6 column 1 of newq.xq:
XPST0003 XQuery syntax error near #...v 100 return ($p - $disc) };#:
Unexpected token "<eof>" in path expression
Static error(s) in query

有人有想法吗? SAXON中的错误,还是使用其他语法?

1 个答案:

答案 0 :(得分:3)

绝对不是撒克逊人的虫子。出错的原因是XQuery中唯一的东西是函数声明;没有表达。如果您将其声明为模块,则只允许您这样做。

否则你实际上必须在XQuery中做点什么......

declare namespace local="local";

declare function local:minPrice($p as xs:decimal?, $d as xs:decimal?) as xs:decimal? {
    let $disc := ($p * $d) div 100
    return ($p - $disc)
};

(:Do something...:)
local:minPrice(10,10)

运行此XQuery的结果(使用Saxon 9):

9