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 中,声明了一个参数变量

<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 回答