sdx-users
[Top][All Lists]
Advanced

[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 (&Eacute; 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






reply via email to

[Prev in Thread] Current Thread [Next in Thread]