Выделяем расширение файла из пути средствами XSL
6 ноября 2012;
Рубрики:
XML/XSLT;
Получение расширения файла средствами XSL – это частный случай. В более широком смысле, небольшой пример работы со строками в XSL.
<?xml version="1.0" encoding="UTF-8"?>
<root>
<files>
<filename>path/to/filename.txt</filename>
<filename>path/to/filename.gif</filename>
<filename>path/to/filename.png</filename>
</files>
</root>
И два шаблона, один из которых использует условие. Это не обязательно, но дает возможность дальнейшей удобной обработки полученной подстроки.
<xsl:template match="//files/">
<xsl:variable name="file_ext">
<xsl:call-template name="get_file_extension">
<xsl:with-param name="file_name" select="."/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$file_ext" />
</xsl:template>
<xsl:template name="get_file_extension">
<xsl:param name="file_name"/>
<xsl:choose>
<xsl:when test="contains($file_name, '.')">
<xsl:call-template name="get_file_extension">
<xsl:with-param name="file_name" select="substring-after($file_name, '.')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$file_name"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>