0

xslt メディエーターを使用して wso2 esb で xslt 変換を実行したい xslt を作成し、ブラウザーで試してみましたが、正常に動作しましたが、wso2 esb の xslt メディエーターで xslt を呼び出すことができません

4

2 に答える 2

1

A:私は常にlocal-entryを使用して XSLT を参照しています。

<?xml version="1.0" encoding="UTF-8"?>
<localEntry xmlns="http://ws.apache.org/ns/synapse" key="myXSLTlocalEntry" src="file:repository/resources/my.xslt"/>

B: XSLT ファイルはパス%WSO2_HOME%/repository/resourcesの下にあります。

C:次に、次のコマンドを使用して、シーケンス内で XSLT メディエーターを呼び出します。

<xslt key="myXSLTlocalEntry"/>

XSLT メディエーターに関する詳細なドキュメントは、 WSO2 ESB ドキュメント サイトにあります 。次に、 body 要素に有効なデータが含まれます。

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="ws.wso2.org/dataservice">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

    <xsl:template match="/">
        <xsl:apply-templates select="*"/>
    </xsl:template>

    <xsl:template match="soapenv:Envelope|soapenv:Body">
        <xsl:copy>
            <xsl:apply-templates/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="ds:Entries">
        <!-- DO YOUR TRANFORMATION HERE -->
        <xsl:apply-templates select="*"/>
    </xsl:template>

    <xsl:template match="*|text()|@*">
        <xsl:copy>
            <xsl:apply-templates select="*|text()|@*"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>
于 2012-08-27T11:44:21.027 に答える
0

WSO2 ESB は、基礎となる SOAP エンジンとして AXIS2 を使用します。ここでは、axis2 スコープ内のメッセージ ライフサイクルに存在する SOAP タグを排除しようとしています。メッセージ本文のみを取得する必要がある場合は、カスタム クラス メディエーターを記述して、シナプス メッセージ コンテキストへのアクセスを取得し、次のコード スニペットを使用して、soapbody の子要素を返します。

 messageContext.getEnvelope().getBody().getFirstChildWithName(**)
于 2012-08-27T14:53:56.940 に答える