Bonjour,

Je cherche à faire un truc simple en xslt et j'utilise jDom.
Dans mon XML, je spécifie une ancre comme ceci :

<ancre> toto</ancre>

Et je souhaite obtenir la sortie html suivante :

<a name="toto></a>

Le problème, c'est que j'obtiens le code suivant, et ça perturbe le rendu de la page :
<a name="toto" />

Voici mon bout de code xsl :

<xsl:template match="ancre">
<a>
<xsl:attribute name="name"><xsl:value-of select="."/></xsl:attribute>
</a>
</xsl:template>

Je suis certain qu'il existe une solution simple, mais quelle est-elle ?
N'étant pas un pro du XML/XSL Smiley confused

Merci de votre aide !!
y(oYo)
Bonjour,

lioledingue a écrit :
Je suis certain qu'il existe une solution simple, mais quelle est-elle ?
Raté, ce n'est pas un long fleuve tranquille. Smiley cligne

Le comportement que tu indiques est lié à la "méthode de sortie". Ce paramètre est défini par l'attribut method de l'élément <xsl:output .../>. La valeur par défaut est XML, et c'est plutôt HTML qui convient pour toi (un troisième choix possible est TEXT). Malheureusement la méthode de sortie HTML a quelques travers qui pourront peut être gêner (par exemple les éléments vides (hr, br, img ...) ne sont pas fermés).

Donc le plus simple serait selon moi de mettre un contenu à ta balise a, même si celui-ci ne doit pas être visible.

Sinon, en dernier recours, mais je ne le conseille vraiment pas, il faut générer ce que tu souhaites comme s'il s'agissait de texte plutôt que comme un fragment d'arbre résultat (ta balise a ne doit plus être un élément, mais du texte du point de vue de la feuille XSLT).
Il est de toutes manières préférable, maintenant que les navigateurs supportent ce type de navigation interne, d'abandonner les <a name="..."></a> au profit des identifiants. Place un <ul id="toto">, ou bien sur n'importe quel élément, et tu pourras sans problème faire un lien sous la forme <a href="(...)#toto"...></a>.