1

サードパーティ ベンダーから次の XML メッセージを受け取りました。着信メッセージを制御することはできません。エラーを生成しながら、最も単純な形式に切り詰めました。XML メッセージ:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header/>
    <soap:Body/>
</soap:Envelope>

私が使用しているxslファイルは次のとおりです。

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:import-schema
        namespace="http://schemas.xmlsoap.org/soap/envelope/"
        schema-location="http://schemas.xmlsoap.org/soap/envelope/" />

    <xsl:template match="/">
        <xsl:text>Help</xsl:text>
    </xsl:template>

</xsl:stylesheet>

「検証を有効にする」ボックスをチェックして XSLT 2.0 用の IBM プロセッサーを使用して Eclipse 内で変換を実行しようとすると、xml 検証中に次のエラーが発生します。

cvc-elt.1.a: Cannot find the declaration of element 'soap:Envelope'

着信メッセージを制御できない場合でも、このパスの検証を行う方法はありますか? 着信メッセージを制御できる場合は、次のようにすると、うまく機能します。

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/
                            http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header/>
    <soap:Body/>
</soap:Envelope>
4

1 に答える 1

1

IBM XSLT 2.0 プロセッサの詳細はわかりませんが、ソース ドキュメントの検証フェーズが、スタイルシートで xsl:import-schema を使用して宣言されたスキーマにアクセスできないことは、症状から明らかなようです。適切なスキーマを見つける場所を検証プロセスに伝える他の方法については、ドキュメントを参照する必要があります。

于 2013-03-14T10:12:11.383 に答える