0

MULEサーバー3.3.0のconfiguration.xmlで、MULE_REMOTE_CLIENT_ADDRESSを.xsltファイルに渡します。以下のコードをコピーしました。

<logger 
  message="#[message.inboundProperties['MULE_REMOTE_CLIENT_ADDRESS']]" 
  level="INFO" doc:name="Logger"/>

IPアドレスをXSLTに渡すには、それを変数に格納して渡します。

<set-variable 
  variableName="remoteClientAddress" 
  value = "#[message.inboundProperties['MULE_REMOTE_CLIENT_ADDRESS']]"/>

次のようにXSLTに渡します。

<xm:xslt-transformer xsl-file="xsltFileName.xslt">
  <xm:context-property 
    key="remoteClientAddress" 
    value="#[remoteClientAddress]"/>
</xm:xslt-transformer>

私のXSLTで、param変数を宣言しました

<xsl:param  name="remoteClientAddress" />

次に、この変数を次のように使用します

<xsl:value-of select="$remoteClientAddress" />

ここで、.xsltファイルの$ remoteClientAddressを確認します。これが、特定のip_addressと等しい場合は、XML(WSDL)ファイルを変更でき、等しくない場合は、XML(WSDL)ファイルで何も起こりません。

どうすればいいですか?

4

1 に答える 1

2

あなたが行った以前の投稿に基づいて、この一致が真である場合、入力XMLの特定の部分を省略したいというのが私の理解です。その場合、次のことがそれを達成できるはずです(既存のXSLTに追加した場合)。

<xsl:template match="wsdl:operation[@name = 'GetISD']">
   <xsl:variable name="rcaTrimmed" 
          select="substring-before(substring-after($remoteClientAddress, '/'), ':')" />
   <xsl:if test="$rcaTrimmed != '123.12.12.123'">
      <xsl:copy>
         <xsl:apply-templates select="@* | node()" />
      </xsl:copy>
   </xsl:if>
</xsl:template>

これには、が指定されたアドレスと等しくない場合にのみ操作が含まれます。$remoteClientAddress

于 2013-02-05T08:52:02.070 に答える