0

WebHarvestを使用していくつかのhtmlを解析しています。次の関数に関するWebHarvestのideで次のエラーが発生しますが、何が問題なのかわかりません。文字列をトリミングする関数を作成しようとしています。

エラー

XQuery式の実行中にエラーが発生しました(Xquery = [declare variable $ xqsource external; let $ result:= normalize-space($ xqsource)return $ 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は、英数字、新しい行、スペースで構成される文字列です。

"blabla --bla2

「」

4

1 に答える 1

1

xq-paramのデフォルトタイプはnode()manualを参照)です。したがって、WebHarvestは変数コンテンツをXMLとして解析しようとします(SAXParseExceptionはXML解析エラーであり、特定のXQueryエラーではありません)。

stringパラメータに型宣言を追加する必要があります。

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

それは役に立ちますか?

于 2010-12-12T15:03:14.797 に答える