xslt メディエーターを使用して wso2 esb で xslt 変換を実行したい xslt を作成し、ブラウザーで試してみましたが、正常に動作しましたが、wso2 esb の xslt メディエーターで xslt を呼び出すことができません
質問する
2090 次
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 に答える