XSLT: извлечь имя файла без расширения - PullRequest
0 голосов
/ 18 января 2019

Я хотел бы извлечь имя файла без расширения из 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 голосов
/ 18 января 2019

Как насчет:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...