imbriquée <xsl:si> & <xsl:when>
Pouvez-vous nest xsl:si dans imbriqués xsl:lorsque, par exemple:
<xsl:choose>
<xsl:when test="param/@id = '1' " >
<xsl:if test="param/value = 'XML' ">
<xsl:when test="param/@id = '2' ">
<xsl:if test="param/value = 'HTTP' ">
<xsl:when test="param/@id = '3' ">
<xsl:if test="param/value = 'Y' ">
<xsl:call-template name="buildPayload"/>
</xsl:if>
</xsl:when>
</xsl:if>
</xsl:when>
</xsl:if>
</xsl:when>
</xsl:choose>
Cela peut-il être utilisé, ou est-il loin de rationaliser ce dans un code plus compact?
- À l'aide de xsl complexes logiques...sera généralement conduire à des problèmes. 🙂
- Comment voulez-vous que cela fonctionne? Si
param/@id = '1'
est vrai, alorsparam/@id = '2'
... sera false;
Vous devez vous connecter pour publier un commentaire.
Sans l'essayer: je pense que
<xsl:when>
ne peut pas être un nœud enfant de<xsl:if>
sans autre<xsl:choose>
entre les deux. Mais, qu'essayez-vous de faire? Si je vois ce droit, vous souhaitez exécuter<call-template>
si et seulement si(param/@id='1' and param/value='XML') or (param/@id='2' and param/value='HTTP') or (param/@id='3' and param/value='Y')
... essayez, comme la valeur du test:Oui cela ressemble à cela ne fonctionnera pas. Vous pouvez ajouter des "et"et "ou"dans les test pour le moment.
Vous pouvez lire sur XPath. Vous devriez être capable d'utiliser des Expressions XPath et le Nœud de Sélection de la syntaxe à l'aide de cette sélection.
Vous pouvez également essayer d'utiliser un visuel XSLT concepteur, tels que la fabrication de l'outillage dans Visual Studio. Visual Studio, par exemple, donnera IntelliSense et de validation de XSLT.