0

我正在使用WebHarvest来解析一些 html。我在 WebHarvest 的 ide 中的以下函数中收到以下错误,我不明白出了什么问题。我正在尝试创建一个修剪字符串的函数。

错误

执行 XQuery 表达式时出错(Xquery=[declare variable $xqsource external; let $result := normalize-space($xqsource) return $result])!

Edit2:日志报告以下 SAX 错误:

[...]原因:org.xml.sax.SAXParseException: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

"

4

1 回答 1

1

xq-param 的默认类型是node()(cf manual )。因此,WebHarvest 尝试将您的变量内容解析为 XML(SAXParseException 是 XML 解析错误,而不是特定的 XQuery 错误)。

您应该string在参数中添加类型声明:

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

这有帮助吗?

于 2010-12-12T15:03:14.797 回答