如何提取给定文件的根文件夹的路径?
我有表达式
path/to/one/of/my/file.xml
我必须得到
../../../../../
使用XSLT / XPath?
答案 0 :(得分:0)
因为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>
<强>输出:强>
../../../../../