[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE : [sdx-users] inserer la valeur d'une variable à l'interieur de balis
From: |
Frédéric Glorieux |
Subject: |
RE : [sdx-users] inserer la valeur d'une variable à l'interieur de balises |
Date: |
Fri, 25 Apr 2003 12:31:24 +0200 |
Guillaume
Il y aurait certainement plus d'informations sur une liste XSL, et il y
a l'excellent livre de Michael Kay, mais bon, ici c'est en français.
Pour définir une valeur d'attribut, plusieurs choses.
La méthode proposée par Malo est en effet la plus générique.
XSL propose aussi des syntaxes en attribut du genre
<a href="{interprété comme une expression xPath}"/>
Syntaxe en éléments
> <xsl:attribute name="href"><!-- ici le saut
> de ligne --> #<xsl:value-of select="."/>
> </xsl:attribute>
Pour ce cas il faut bien comprendre que la valeur de l'attribut
commencera par un saut de ligne. En effet, par défaut un processeur XSL
interprète les caractères flottants avec les espaces attenants. Pour
l'éviter, il suffit d'écrire
<xsl:attribute name="test"><!-- ces espaces
ne seront pas dans la valeur de l'attribut
tant qu'il n'y aura pas d'autres caractères -->
<xsl:text>#</xsl:text>
Ensuite, dans le nœud aussi il peut y avoir des espaces, il existe une
fonction xpath pour ça
<xsl:value-of select="normalize-space(.)"/>
(faire la même chose dans la déclaration de l'identifiant en <a
name=""/> ou <tag id=""/>, je vous conseille à cet effet d'utiliser un
même template pour générer l'identifiant et la référence)
Par ailleurs, l'encodage des entités caractères (É et consort)
est un comportement normal d'un processeur XSL quand il est en mode
html.
<xsl:output encoding="iso-8859-1" method="xml" indent="yes"/>
L'instruction suivante en tête de votre XSL indique que l'on veut une
sortie xml (ne voulez-vous pas du xhtml ?):
- les balises sont correctement fermées, à la différence de SGML/HTML
- l'encodage par défaut est utf-8, qui supporte tous les caractères
accentués et bien d'autres, donc pas besoin d'entités
J'ai ajouté une autre déclaration d'encodage "iso-8859-1", utile lorsque
le fichier "xml" est destiné à des navigateurs web qui ne supporte pas
toujours très bien l'unicode.
Un détail cependant, cette sortie xml peut avoir des comportements
surprenants dans un navigateur avec des éléments vides. Exemple
<textarea/>
le navigateur est rarement XML conforme est croira
que ce texte est toute la suite du document
est dans le textarea...
Le contournement, c'est de ne jamais générer un élément vide, avec par
exemple une déclaration xsl du genre
<a href="go"><xsl:comment> vide </xsl:comment></a>
Il ne faut pas que ce texte soit souligné bleu comme si un lien
était ouvert sans jamais être refermé
Il reste un dernier point que vous risquez de toucher, mais vous en
savez certainement assez pour trouver la réponse sur le web. Votre
attribut @href doit être une URL n'est-ce pas ? En théorie (enfin sur
certains navigateurs), il faudrait que les caractères non ASCII soit en
encodage URL (%20 ...).
Frédéric Glorieux