У меня есть этот XML:Как заменить строку в XSLT?
<path>/en/products/bike</path>
Есть ли функция XSLT, которая будет возвращать
/products/bike
?
Спасибо за любую помощь.
У меня есть этот XML:Как заменить строку в XSLT?
<path>/en/products/bike</path>
Есть ли функция XSLT, которая будет возвращать
/products/bike
?
Спасибо за любую помощь.
Вы можете использовать функцию 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
Это работает, спасибо за вашу помощь! – Tintin81
С 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>
Каковы критерии, по которым вы хотите согласовать? Вы хотите, чтобы подстрока начиналась с четвертого символа, подстрока, следующая за '/ en', после второй косой черты, косой чертой и т. Д.? Существует много способов извлечь эту конкретную подстроку, но некоторые из них, вероятно, будут более полезны для вас, чем другие. –