J'ai un nœud récursif que j'essaye de configurer pour jquery-checktree. Les nœuds ressemblentListe récursive des listes dans XSL
foo/bar/ID
/NAME
/CHECKED
bar/ID
/NAME
/CHECKED
/bar/ID
/NAME
/bar/ID
/NAME
/bar/ID
/NAME
/CHECKED
/bar/ID
/NAME
/CHECKED
Lorsqu'une barre peut ou ne peut pas avoir un ou plusieurs noeuds de barre ci-dessous, mais une barre aura ID et le nom et pourraient avoir un BAGAGES.
et je veux le transformer en
<ul>
<li><input type="checkbox" name="..." value="..." checked="checked"></input>
<label for="...">...</label>
<ul>
<li><input type="checkbox" name="..." value="..." checked="checked"></input>
<label for="...">...</label>
</li>
</ul>
<li>....</li>
</ul>
je peux obtenir le premier niveau en faisant:
<ul class="tree">
<xsl:for-each select="/foo/bar/">
<li><input type="checkbox" name="{ID}" value="{ID}">
<xsl:if test="CHECKED = 'Y'"><xsl:attribute name="checked">checked</xsl:attribute></xsl:if>
</input><label for="{ID}"><xsl:value-of select="NAME"/></label>
</li>
</xsl:for-each>
</ul>
Mais je ne sais pas comment récursion jusqu'à l'embarqué « bar » dans la "barre", jusqu'à de nombreux niveaux, il pourrait y avoir.
@Paul: Résistez à l'envie d'utiliser ''. Il constitue la plupart du temps une solution élégante. Essayez de faire les choses avec '' à la place, non seulement cela réduit la complexité d'imbrication de votre feuille de style, mais cela vous permet également de produire une transformation basée sur le contenu plutôt que itérative/impérative. –
Tomalak
@Tomalak: Je suis plutôt d'accord - si vous le pouvez, la mise en correspondance des modèles offre le design le plus clair. Mais je trouve que je ne peux pas toujours utiliser le match d'une manière directe pour résoudre mes propres problèmes. Mais dans ce cas, je suis tout à fait d'accord, la correspondance est meilleure que pour chaque + appel –