绝对路径的XSLT相对路径



如何提取给定文件的根文件夹的路径?

我有表达式

path/to/one/of/my/file.xml

我必须得到

../../../../../

使用XSLT/XPATH?

因为 fn:tokenize是xpath 2.0函数,您必须使用递归模板:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text" />
  <xsl:template match="/">
    <!-- initial call with path to tokenize -->
    <xsl:call-template name="tokenize">
      <xsl:with-param name="str" select="'path/to/one/of/my/file.xml'" />
    </xsl:call-template>    
  </xsl:template>
  <!-- recursive named template -->      
  <xsl:template name="tokenize">
    <xsl:param name="str" />
    <xsl:param name="result" select="''" />
    <xsl:choose>
      <xsl:when test="substring-after($str,'/')">
        <xsl:call-template name="tokenize">
          <xsl:with-param name="str" select="substring-after($str,'/')" />
          <xsl:with-param name="result" select="concat($result,'../')" />
        </xsl:call-template>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$result" />
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
</xsl:stylesheet>

输出:

../../../../../

相关内容

  • 没有找到相关文章