XSLT:提取文件名,不带扩展名

时间:2019-01-18 19:48:11

标签: xslt

我想从URL中提取不带扩展名的文件名:

<XML>
 <ITEM>
   <IMGURL>https://imgurl.com/1240000101.jpeg</IMGURL>
 </ITEM> 
 <ITEM>
   <IMGURL>https://imgurl.com/1255500101.jpeg</IMGURL>
 </ITEM> 
</XML>

我进行了搜索,但仅找到用于提取扩展名为“ 1240000101.jpeg”的文件名的方法。我只想输出文件名,不带任何扩展名。

示例输出:

1240000101
1255500101

我已经尝试编写此XSLT:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  
<xsl:output method="text" omit-xml-declaration="yes" />

<xsl:template match="XML">
        <xsl:for-each select="ITEM">
        <xsl:value-of select="IMGURL" />
       <xsl:text>&#xa;</xsl:text>
      </xsl:for-each>
</xsl:template>

</xsl:stylesheet>

这将提取整个URL。我发现一个有效的正则表达式仅捕获文件名:([^\/]+)(?=\.\w+$),这很好,但是我不知道如何与上面的代码结合使用。你能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:2)

怎么样:

XSLT 2.0

<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  
<xsl:output method="text"  />

<xsl:template match="/XML">
    <xsl:for-each select="ITEM">
        <xsl:value-of select="tokenize(IMGURL, '\.|/')[last() - 1]" />
        <xsl:text>&#xa;</xsl:text>
    </xsl:for-each>
</xsl:template>

</xsl:stylesheet>

演示http://xsltransform.hikmatu.com/94hvTyS