Un effet “amusant” découvert il y a peu et qui m’a couté quelques heures de recherche et de tests (avec un cache pour augmenter le “plaisir”) :
Considérons la transformation XSL suivante :
...
<div class="Items">
<div class="Level0">
<xsl:apply-templates select="..."/>
</div>
<div class="Level1">
<xsl:apply-templates select="..."/>
</div>
</div>...
Lorsque les sélections contiennent toutes des éléments dans le flux d’entrée, tout se passe bien mais si la source du premier sélecteur (Level0) ne rencontre aucun candidat : patatras ! Le sous-flux retourné ressemble à :
<div class="Items">
<div class="Level0">
<div class="Level1">
Des éléments...
</div>
</div>
</div>
La balise fermant le div “Level0” n’est injectée dans le flux de sortie qu’à la fin de celui-ci, causant éventuellement un décalage visuel sur un affichage HTML…
Pour revenir à une situation cohérente, il faut ajouter la directive précisant la méthode sortie en tête de flux XSL :
<xsl:stylesheet version="1.0" ...>
<xsl:output method="html"/>
...
Et tout rentre dans l’ordre :
<div class="Items">
<div class="Level0">
</div>
<div class="Level1">
Des éléments...
</div>
</div>
Si l’un d’entre vous a un début d’explication, je prends !
Aucun commentaire:
Enregistrer un commentaire