如果在MULE中的.xslt文件中有-else条件

时间:2013-02-05 08:17:46

标签: xml xslt xsd wsdl mule

在MULE服务器3.3.0的配置文件中,我将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)文件中。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

根据您之前发布的帖子,我的理解是,如果此匹配为true,您希望省略输入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不等于指定的地址时,才会包含操作。