J'aimerais appliquer un modèle avec des paramètres différents en fonction du résultat d'une condition. Quelque chose comme ceci:XSLT: Appliquer des modèles avec des paramètres conditionnels?
<xsl:choose>
<xsl:when test="@attribute1">
<xsl:apply-templates select='.' mode='custom_template'>
<xsl:with-param name="attribute_name" tunnel="yes">Attribute no. 1</xsl:with-param>
<xsl:with-param name="attribute_value" tunnel="yes"><xsl:value-of select="@attribute1"/></xsl:with-param>
</xsl:apply-templates>
</xsl:when>
<xsl:when test="@attribute2">
<xsl:apply-templates select='.' mode='custom_template'>
<xsl:with-param name="attribute_name" tunnel="yes">Attribute no. 2</xsl:with-param>
<xsl:with-param name="attribute_value" tunnel="yes"><xsl:value-of select="@attribute1"/></xsl:with-param>
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select='.' mode='custom_template'>
<xsl:with-param name="attribute_name" tunnel="yes">Error</xsl:with-param>
<xsl:with-param name="attribute_value" tunnel="yes">No matching attribute </xsl:with-param>
</xsl:apply-templates>
</xsl:otherwise>
</xsl:choose>
Tout d'abord, je soupçonne que cela pourrait être résolu d'une manière beaucoup, beaucoup mieux. (Je suis entièrement nouveau à XSLT, alors s'il vous plaît suggérer des améliorations et pardonner le code boursouflé.)
Maintenant pour la question: comment aurais-je pu définir les paramètres basés sur ce conditionnel, et les utilisait toujours dans un xsl:apply-templates
? J'ai essayé d'envelopper l'ensemble xsl:choose
avec un xsl:apply-templates
de démarrage/balise de fin, mais c'est apparemment pas légal. Des indices?
+1. Battez-moi. ;-) Merci – Tomalak
, Tim C! Cela semble mieux. – conciliator