我想从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>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
这将提取整个URL。我发现一个有效的正则表达式仅捕获文件名:([^\/]+)(?=\.\w+$)
,这很好,但是我不知道如何与上面的代码结合使用。你能指出我正确的方向吗?
答案 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>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>