简体   繁体   中英

if -else condition in .xslt file in MULE

In my configuration.xml in MULE server 3.3.0 I pass MULE_REMOTE_CLIENT_ADDRESS to .xslt file, below I copied my codes :

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

To pass IP address to XSLT, store it in a variable and pass that.

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

Pass it to XSLT as:

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

In my XSLT, declared a param variable

<xsl:param  name="remoteClientAddress" />

and then use this variable as

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

Now I want to check $remoteClientAddress in .xslt file, that if it was equal to specific ip_address, then I could change in my XML(WSDL) file and if it wasn't equal nothing happen in my XML(WSDL) file.

How can I do it?

Based on previous posts you've made, my understanding is that you want to omit a particular part of the input XML if this match is true. In that case, the following should be able to accomplish that (when added to your existing 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>

This will include the operation only if the $remoteClientAddress is not equal to the specified address.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM