Я хотел бы узнать, можно ли отправить <xsl:template>
в XSLT (2.0) на основе значения атрибута. Давайте предположим, что следующий пример XML:Отправка шаблона в XSLT на основе значения атрибута
<root>
<field code="a">Content A</field>
<field code="b">Content B</field>
</root>
Я хочу написать селектор XPath для <xsl:template>
match
атрибута, который будет разослать обработку шаблонов, определенных для каждого значения данного атрибута. На ï ве подход может сравнить значение атрибута в каждом шаблоне:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:template match="/root">
<xsl:apply-templates select="field"/>
</xsl:template>
<xsl:template match="field[@code = 'a']">
Code A processing...
</xsl:template>
<xsl:template match="field[@code = 'b']">
Code B processing...
</xsl:template>
</xsl:stylesheet>
Кроме того, можно было бы использовать <xsl:choose>
и <xsl:when>
для каждого возможного значения кода, в котором можно было бы использовать <xsl:call-template/>
, вызов, посвященный имени шаблона.
Есть ли лучшее решение для отправки шаблонов на основе значения атрибута?
Избегайте '' в пользу соответствия шаблонов, если вы можете (иногда вы не можете, например, при тестировании на переменные или значения параметров). –
Tomalak
Точно. Мой предпочтительный способ, безусловно, с помощью сопоставления с шаблонами. –