2013-09-08 3 views
1

У меня есть этот XML:Как заменить строку в XSLT?

<path>/en/products/bike</path> 

Есть ли функция XSLT, которая будет возвращать

/products/bike 

?

Спасибо за любую помощь.

+4

Каковы критерии, по которым вы хотите согласовать? Вы хотите, чтобы подстрока начиналась с четвертого символа, подстрока, следующая за '/ en', после второй косой черты, косой чертой и т. Д.? Существует много способов извлечь эту конкретную подстроку, но некоторые из них, вероятно, будут более полезны для вас, чем другие. –

ответ

3

Вы можете использовать функцию substring-after.

Так, например, следующие таблицы стилей XSLT:

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

    <xsl:template match="path"> 
    <xsl:value-of select="substring-after(., '/en')"/> 
    </xsl:template> 
</xsl:stylesheet> 

применительно к вашему XML:

<path>/en/products/bike</path> 

даст:

/products/bike 
+0

Это работает, спасибо за вашу помощь! – Tintin81

0

С XSLT 2.0 вы также можете используйте функцию replace(), которая принимает regex pattern как второй параметр и необязательный 4-й параметр для флагов регулярных выражений.

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="text" /> 
    <xsl:template match="path"> 
     <xsl:sequence select="replace(., '^/en','')"/> 
    </xsl:template> 
</xsl:stylesheet>