WebHarvest 中的 Xquery 错误
我正在使用 WebHarvest 来解析一些 html。我在 WebHarvest 的 ide 中的以下函数中收到以下错误,我不明白出了什么问题。我正在尝试创建一个修剪字符串的函数。
错误:
执行 XQuery 表达式时出错 (Xquery=[声明变量$xqsource 外部的;让$结果:= 归一化空间($xqsource) 返回 $结果])!
Edit2:日志报告以下 SAX 错误:
[...] 原因: org.xml.sax.SAXParseException:内容 序言中不允许
我不明白这在这种情况下意味着什么。
函数的参数: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
"
I'm using WebHarvest to parse some html. I get the following error in WebHarvest's ide on the function that follows, and I don't understand what's wrong. I'm trying to create a function that trims a string.
Error:
Error executing XQuery expression
(Xquery=[declare variable $xqsource
external; let $result :=
normalize-space($xqsource) return
$result])!
Edit2: The log reports the following SAX Error:
[...] Caused by:
org.xml.sax.SAXParseException: Content
is not allowed in prolog
I don't understand what this means in this case.
Function's parameters: sourceString, the string to trim
<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>
Edit: sourceString is a string composed of alphanumeric chars, new lines and spaces, like
" blabla - bla2
"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
xq-param 的默认类型是
node()
(参见 manual )。因此,WebHarvest 尝试将您的变量内容解析为 XML(SAXParseException 是 XML 解析错误,而不是特定的 XQuery 错误)。您应该在参数中添加
string
类型声明:这有帮助吗?
the default type of xq-param is
node()
(cf manual). Therefore, WebHarvest tries to parse your variable content as XML (SAXParseException is an XML parsing error, not a particular XQuery error).You should add a
string
type declaration to your param:Does that help?