Java WebHarvest中的Xquery错误

Java WebHarvest中的Xquery错误,java,screen-scraping,xquery,webharvest,Java,Screen Scraping,Xquery,Webharvest,我用它来解析一些html。在WebHarvest的ide中,我在下面的函数中遇到了以下错误,我不明白是什么错了。我试图创建一个修剪字符串的函数 错误: 执行XQuery表达式时出错 (Xquery=[声明变量$xqsource 外部;让$result:= 规范化空间($xqsource)返回 $result]) Edit2:日志报告以下SAX错误: […]由以下原因引起: org.xml.sax.SAXParseException:内容 在序言中不允许使用 我不明白在这种情况下这意味着什么 函数

我用它来解析一些html。在WebHarvest的ide中,我在下面的函数中遇到了以下错误,我不明白是什么错了。我试图创建一个修剪字符串的函数

错误

执行XQuery表达式时出错 (Xquery=[声明变量$xqsource 外部;让$result:= 规范化空间($xqsource)返回 $result])

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是由字母数字字符、新行和空格组成的字符串,如

“等等,等等

"


xq参数的默认类型是
节点()
(cf)。因此,WebHarvest尝试将变量内容解析为XML(SAXParseException是一个XML解析错误,而不是特定的XQuery错误)

您应该在参数中添加
字符串
类型声明:

<xq-param name="xqsource" type="string">
  <var name="sourceString" />
</xq-param>


这有帮助吗?

我可以重现使用Saxon测试XQuery表达式时出现的错误。
sourceString
值是多少?@Alejandro:你认为xquery代码正确吗?无论如何,传递的字符串都是包含新行、字母数字字符和空格的字符串!!我错过了那个参数类型,因为示例使用了默认的xml变量!!!非常感谢,现在它工作了!