Как использовать переменную внутри оператора выбора XSL?
Я новичок в XSL, и я хотел бы использовать мою переменную $language
внутри моего XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="data">
<xsl:value-of select="concat(//text-, $language)"/>
</xsl:template>
</xsl:stylesheet>
Как это может быть сделано?
Это мой XML:
<data>
<params>
<language>en</language>
</params>
<static>
<entry id="1">
<text-en>Hello</text-en>
</entry>
<entry id="2">
<text-fr>Boujour</text-fr>
</entry>
</static>
</data>
Спасибо за любую помощь!
1 ответ
Решение
Вы должны изменить структуру входного XML и использовать, например, <text xml:lang="en">Hello</text>
если можешь, то можешь написать <xsl:value-of select="//text[lang($language)]"/>
,
Если вы не можете изменить структуру входного XML, используйте <xsl:value-of select="//*[local-name() = concat('text-', $language)]"/>
,