WebHarvest 中的 Xquery 错误

发布于 2024-10-07 01:21:20 字数 1205 浏览 4 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓝礼 2024-10-14 01:21:20

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

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

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

这有帮助吗?

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:

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

Does that help?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文