HTML et entités nommées


Nous avons vu dans l'exemple précédent comment générer du HTML. Pour éviter les problèmes de codage de caractères non ascii, il est d'usage d'utiliser en HTML des entités nommées. Par exemple, le caractère è s'écrit è, é s'écrit é, s'écrit €...
Cependant, si l'on écrit le template suivant :
<xsl:template match="/">
    <html>
        <body>
            Ils &eacute;taient tous assis autour du feu...
        </body>
    </html>
</xsl:template>
le processeur XSLT signale l'erreur suivante : the entity "eacute" was referenced but not declared.
En XML, seules les entités &amp;, &lt; et &gt; sont connues. Ainsi, pour générer la sortie "&eacute;", on peut écrire :
<xsl:template match="/">
    <html>
        <body>
            Ils &amp;eacute;taient tous assis autour du feu...
        </body>
    </html>
</xsl:template>
   la sortie générée est :
    <html>
        <body>
            Ils &eacute;taient tous assis autour du feu...
        </body>
    </html>
   un navigateur affichera :
Ils étaient tous assis autour du feu...

Une autre solution est de déclarer des entités nommées (les nombres suivant &# sont les codes ascii-étendu des caractères correspondant) :
<!DOCTYPE xsl:stylesheet [
    <!ENTITY eacute "&#233;">
    <!ENTITY egrave "&#232;">
    ...
]>

<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
    <xsl:template match="/">
        <html>
            <body>
                Ils &eacute;taient tous assis autour du feu...
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

Liens

Précédent... ] Sommaire... ] Suivant... ]