2012-05-16 24 views
1

我的XSL變量的值,如下其中有一個URL XSL正則表達式變量

<xsl:variable name="url"> 
     <xsl:value-of select="'http://1.2.34.4:70/Anything/uri'"/> 
     </xsl:variable> 

我需要更換IP地址和端口組合部分與一個名字 - abcd.com,然後將其存儲在另一個變量。因此該變量將具有值'http://abcd.com/Anything/uri'。我怎樣才能做到這一點。我必須使用正則表達式嗎?變量url也可以以https開頭,加上uri可以有任何數字的斜線。即代替/任何/ URI它可以具有/ URI或/任何/其他/ URI以及

+0

你使用XSLT 2.0嗎? XSLT 1.0沒有正則表達式支持。還要注意你的代碼可以縮短爲''。 –

+0

不,我只有xslt1.0 :( – Suresh

回答

1

這XSLT 1.0轉化:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text"/> 

<xsl:variable name="vReplacement" select="'abcd.com'"/> 

<xsl:template match="/"> 
    <xsl:variable name="vUrl" select="'http://1.2.34.4:70/Anything/uri'"/> 

    <xsl:variable name="vReplaced"> 
     <xsl:value-of select="concat(substring-before($vUrl,'//'), '//')"/> 
     <xsl:value-of select="concat($vReplacement, '/')"/> 
     <xsl:value-of select="substring-after(substring-after($vUrl,'//'),'/')"/> 
    </xsl:variable> 

    "<xsl:copy-of select="$vReplaced"/>" 
</xsl:template> 
</xsl:stylesheet> 

當在任何XML文檔應用(未使用) ,將變量$vReplaced到想要的,正確的值並複製其內容輸出

"http://abcd.com/Anything/uri" 

說明:正確使用substring-before(),substring-after()concat()