我正在使用WebHarvest解析一些html。我在 WebHarvest 的 ide 中的以下函数中收到以下错误,我不明白出了什么问题。我正在尝试创建一个修剪字符串的函数。
错误:
Error executing XQuery expression (Xquery=[declare variable $xqsource external; let $result := normalize-space($xqsource) return $result])!
Edit2:日志报告以下 SAX 错误:
[...] Caused by: org.xml.sax.SAXParseException: Content is not allowed in prolog
我不明白这在这种情况下意味着什么。
函数的参数:sourceString,要修剪的字符串
<function name="trim">
<return>
<xquery>
<xq-param name="xqsource">
<var name="sourceString" />
</xq-param>
<xq-expression><![CDATA[
declare variable $xqsource external;
let $result := normalize-space($xqsource)
return
$result
]]>
</xq-expression>
</xquery>
</return>
</function>
编辑:sourceString 是由字母数字字符、换行符和空格组成的字符串,如
" blabla - bla2
"
最佳答案
xq-param 的默认类型是 node()
(参见 manual )。因此,WebHarvest 尝试将您的变量内容解析为 XML(SAXParseException 是 XML 解析错误,而不是特定的 XQuery 错误)。
您应该在参数中添加一个 string
类型声明:
<xq-param name="xqsource" type="string">
<var name="sourceString" />
</xq-param>
这有帮助吗?
关于java - WebHarvest 中的 Xquery 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4419400/