在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)文件中。
我该怎么做?
答案 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
不等于指定的地址时,才会包含操作。