与XSL

2009-09-29 59 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'