2013-02-05 47 views
0

在我MULE服務器3.3.0 configuration.xml中我通過MULE_REMOTE_CLIENT_ADDRESS到.xslt文件,下面我複製我的代碼:如果.xslt文件-else條件MULE

<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" /> 

現在我想檢查$ remoteClientAddress在.xslt文件中,如果它等於特定的ip_address,那麼我可以在我的XML(WSDL)文件中進行更改,如果不相等,則在我的XML(WSDL)文件中不會發生任何事情。

我該怎麼辦?

回答

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不等於指定的地址。

+0

謝謝,我的$ remoteClientAddress格式是這樣的:/127.0.0.1:53154我怎麼能省略它的額外部分?並使其就像這樣:127.0.0.1 – brelian

+1

更新了我的答案。 – JLRishe