我从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中的错误,还是使用其他语法?
答案 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