使用XSLT 1.0从路径获取文件名(c#.Net Core)

时间:2018-02-17 18:53:06

标签: c# xml xslt

请帮帮我。 如何从这样的字符串中使用XSLT 1.0获取文件名?

<xsl:value-of select="tokenize('$file/@fh:fileRef','.*/(.*?)$')"/>

文件可以具有不同的名称和扩展名。路径可以有不同的深度。

我尝试使用正则表达式和函数tokenize():

document.write("Right");

但我发现.Net Core不支持XSLT 2.0

1 个答案:

答案 0 :(得分:1)

因为您受限于XSLT-1.0,所以必须使用递归模板。因此,一个避免等待微软响应的XSLT-1.0解决方案将是

<xsl:template name="fileName">
  <xsl:param name="str" />
  <xsl:choose>
    <xsl:when test="normalize-space(substring-after($str,'/'))">
      <xsl:call-template name="fileName">
        <xsl:with-param name="str" select="substring-after($str,'/')" />
      </xsl:call-template>  
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="$str" />
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

调用它
<xsl:call-template name="fileName">
  <xsl:with-param name="str" select="yourFileNameString" />   <!-- insert string here -->
</xsl:call-template>    

发出字符串

file.jpg