與XSL

2009-09-29 58 views
0

修剪網址我有一個頁面上的一些XSL用的URL:與XSL

 
site.domain.com/dir/dir/dir/dir 

同樣的XSL也是頁面上將顯示的URL:

 
site.domain.com/dir/dir/dir 

我需要從這些鏈接兩個頁面指向:

 
site.domain.com/dir/dir/site 

所以我需要兩個網頁:site.domain.com/dir/dir作爲HREF屬性的一部分。

任何人都可以想到我怎麼可以在XSL中做到這一點?

+0

您是否正在討論處理指令(PI)中的僞'href'屬性?你在問關於樣式表文檔的URI嗎?然後,在相對URI中啓動'/'意味着「domains root」,因此'/ dir/dir'將從任何子文件夾解析爲'domain.com/dir/dir'。 – 2011-01-04 23:50:58

回答

1

步驟一步字符串處理由遞歸:

<xsl:template name="trim-url"> 
    <xsl:param name="url" select="''" /> 
    <xsl:param name="lvl" select="0" /> 

    <xsl:if test="$lvl &gt; 0"> 
    <xsl:variable name="tmp" select="concat($url, '/')" /> 

    <xsl:value-of select="substring-before($tmp, '/')" /> 
    <xsl:value-of select="'/'" /> 

    <xsl:call-template name="trim-url"> 
     <xsl:with-param name="url" select="substring-after($tmp, '/')" /> 
     <xsl:with-param name="lvl" select="$lvl - 1" /> 
    </xsl:call-template> 
    </xsl:if> 
</xsl:template> 

稱爲如下:

<xsl:variable name="trimmed-url"> 
    <xsl:call-template name="trim-url"> 
    <xsl:with-param name="url" select="$url" /> 
    <xsl:with-param name="lvl" select="3" /> 
    </xsl:call-template> 
    <xsl:value-of select="'site'" /> 
</xsl:variable> 

$url'site.domain.com/dir/dir/dir/dir',然後$trimmed-url'site.domain.com/dir/dir/site'