From: Laurent CAPRANI (caprani@multimania.com)
Date: 12/02/2001 - 20:01
Bonjour,
Je rencontre une difficulté inattendue avec MSXML qui s'illustre dans
l'exemple ci-dessous :
- feuille de style -
<!DOCTYPE xsl:stylesheet [ <!ENTITY entité "texte"> ]>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<html><pre> &entité; </pre></html>
</xsl:template>
</xsl:stylesheet>
- feuille de style -
MSXML produit le résultat suivant :
- résultat MSXML -
<html><pre>texte</pre></html>
- résultat MSXML -
D'autres processeurs reproduisent les espaces autour de l'entité :
- résultat XT -
<html><pre> texte </pre></html>
- résultat XT -
- résultat XalanC -
<html>
<pre> texte </pre>
</html>
- résultat XalanC -
Je ne sais pas si c'est Microsoft qui est dans les patates ou si c'est la
norme qui est floue.
Telle que je comprends la norme, un noeud texte est ignoré quand il n'est
constitué que d'espaces.
La norme ne dit cependant pas comment traiter les appels d'entités. MSXML
travaille sur un DOM qui sépare les appels d'entités du texte
environnant(¹). Résultat : le contenu " &entité; " devient 3 noeuds DOM,
dont deux "blancs" qui sont ignorés.
Ce qui me chagrine dans ce constat, c'est que j'en arrive à déconseiller
l'emploi de littéraux textuels dans les feuilles de style. Ce qui fonctionne
avec un processeur ne fonctionnant pas avec un autre(²).
Avez-vous des commentaires à ce sujet ?
- Microsoft est-il dans l'erreur ?
- Doît-on s'abstenir de textes littéraux (d'entités) dans les feuilles de
style ? Peut-on préconiser une règle raisonnable ?
-- Laurent CAPRANI
Montréal
¹ Ce comportement ne me semble pas illégitime, mais j'aimerai bien avoir un
moyen d'obliger MSXML a développer toutes les entités internes.
² Pour ajouter encore à la confusion, sachez qu'une entité câblée _built-in_
comme " ne produit pas le même résultat (chez Microsoft) qu'une
&entité; quelconque.
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:05 UTC
webmaster@xmlfr.org
|