Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt 用XSL修剪URL_Xslt - Fatal编程技术网

Xslt 用XSL修剪URL

Xslt 用XSL修剪URL,xslt,Xslt,我在一个URL为的页面上有一些XSL: site.domain.com/dir/dir/dir/dir site.domain.com/dir/dir/dir/dir 相同的XSL也出现在URL为的页面上: site.domain.com/dir/dir/dir site.domain.com/dir/dir/dir 我需要这两个页面的链接指向: site.domain.com/dir/dir/site site.domain.com/dir/dir/site 因此,在这两个页面上,我都需要获取

我在一个URL为的页面上有一些XSL:

site.domain.com/dir/dir/dir/dir site.domain.com/dir/dir/dir/dir 相同的XSL也出现在URL为的页面上:

site.domain.com/dir/dir/dir site.domain.com/dir/dir/dir 我需要这两个页面的链接指向:

site.domain.com/dir/dir/site site.domain.com/dir/dir/site 因此,在这两个页面上,我都需要获取:
site.domain.com/dir/dir
,作为HREF属性的一部分


有人能想到我如何在XSL中做到这一点吗?

通过递归逐步处理字符串:

<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'

您是在谈论处理指令(PI)中的伪
href
属性吗?您是在询问样式表文档URI吗?然后,在相对URI中启动
/
意味着“域根”,因此
/dir/dir
将从任何子文件夹解析为
domain.com/dir/dir