exerr:ERROR错误:XPST0003:找到EOF或零长度字符串,其中预期有效的XPath表达式

时间:2016-02-27 09:22:49

标签: xml xpath xquery

我是XQuery的初学者。我正在尝试为项目编写函数,但是我收到此错误消息:

  

exerr:错误错误:XPST0003:在预期有效的XPath表达式的位置找到EOF或零长度字符串。

这是我的XQuery:

xquery version "3.0";

declare function local:trovaMatricola($str as xs:string?){
 let $liv := doc("/db/apps/prova/data/utenti.xml")/utenti/utente[matricola=$str]/livello
 let $val := local:valore($liv)
 return $val
};

declare function local:valore($liv as xs:string?){
 let $val := doc("/db/apps/prova/data/fiaba.xml")/text/$liv
 return $val
};

2 个答案:

答案 0 :(得分:1)

如果您不编写XQuery模块,则需要提供实际查询。原来,你只声明了XQuery版本和两个函数,但没有什么可以实际执行。

这也解释了错误消息:

  

exerr:错误错误:XPST0003:在预期有效的XPath表达式的位置找到EOF或零长度字符串。

XQuery引擎解析了这些函数,但仍在寻找要执行的语句。对" XPath表达式的限制"似乎有点误导。

答案 1 :(得分:0)

@JensErat给了你答案,但是要添加它,这里有一个提示:有很多XQuery引擎,如果你被其中一个的错误信息弄糊涂了,它可能是一个好主意,看看不同的XQuery引擎告诉你什么。他们都不会完全正确地得到所有的诊断,但这是撒克逊告诉你的这个问题:

Syntax error on line 12 at column 4 of file:/Users/mike/Desktop/temp/test.xq near {...ml")/text/$liv return $val ...} 
  XPST0003: The main module must contain a query expression after any declarations in the prolog
Syntax error on line 12 at column 4 of file:/Users/mike/Desktop/temp/test.xq near {...ml")/text/$liv return $val ...} 
  XPST0003: Unexpected token "<eof>" in path expression
Static error(s) in query

我不能说我对此非常满意:第二条消息是多余的,并且引用了一个&#34;路径表达式&#34;相当奇怪;也有些用户可能不知道<eof>表示&#34;文件结尾&#34;或者词法分析者经常将文件结束视为伪令牌;但是第一条消息是现场发生的,并且本来不需要你在这里发布解释。