[Résolu] conformité XSL de copy-of
[Résolu] conformité XSL de copy-of
Bonjour à tous,
je suis en train de monter un site basé sur [xml+xsl->xhtml] et je viens de m'apercevoir que firefox et opera n'implémentent pas la balise xsl:copy-of de la même manière que IE6 et java5.
En effet firefox et opera ne copient que le contenu de l'élement copier, alors que IE6 ou le parser de java5 eux recopient non seulement le contenu mais aussi l'élément lui même.
J'ai regardé sur la définition de la norme du W3C et de ce que je comprend xsl:copy-of devrait recopier toute la balise et pas seulement son contenu.
Ce qui me semble bizard c'est que Opera et Firefox est le même comportement, peut etre y a t-il une raison, en attendant ca me pose un problème car je me retrouve avec des doublons d'ID dans ma source XHTML sous IE6.
Je voulais en parler ici avant d'ouvrir un bug chez Gecko et Opera pour avoir votre avis sur ce problème.
Cdt,
Philippe
liens: http://www.w3.org/TR/xslt#copy-of
Message envoyé avec : Opera/9.26 (Windows NT 5.0; U; en)
je suis en train de monter un site basé sur [xml+xsl->xhtml] et je viens de m'apercevoir que firefox et opera n'implémentent pas la balise xsl:copy-of de la même manière que IE6 et java5.
En effet firefox et opera ne copient que le contenu de l'élement copier, alors que IE6 ou le parser de java5 eux recopient non seulement le contenu mais aussi l'élément lui même.
J'ai regardé sur la définition de la norme du W3C et de ce que je comprend xsl:copy-of devrait recopier toute la balise et pas seulement son contenu.
Ce qui me semble bizard c'est que Opera et Firefox est le même comportement, peut etre y a t-il une raison, en attendant ca me pose un problème car je me retrouve avec des doublons d'ID dans ma source XHTML sous IE6.
Je voulais en parler ici avant d'ouvrir un bug chez Gecko et Opera pour avoir votre avis sur ce problème.
Cdt,
Philippe
liens: http://www.w3.org/TR/xslt#copy-of
Message envoyé avec : Opera/9.26 (Windows NT 5.0; U; en)
Dernière modification par ultrafil le 29 août 2008, 23:16, modifié 1 fois.
Est-ce que tu pourrais donner un lien vers tes fichiers (ou une version réduite démontrant le problème) ?
Ça fait longtemps que je n'ai pas touché à XSL, mais je soupçonne un problème dans la syntaxe du select (par exemple dans la casse des caractères) ou dans les espaces de noms.
Ça fait longtemps que je n'ai pas touché à XSL, mais je soupçonne un problème dans la syntaxe du select (par exemple dans la casse des caractères) ou dans les espaces de noms.
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
Li tens revient, je ne fais riens. ♪
Enregistre c'est deux fichiers en local et ouvre les avec firefox et IE. Si tu enleve la div explanation du xsl il n'y a plus de bordure sous firefox car la balise n'est pas recopiée.
J'aimerais avoir le même comportement sur IE, firefox et Opera.
voici le fichier test.xml réduit:
Et voici le fichier test.xsl réduit:
Cdt,
Philippe
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16
J'aimerais avoir le même comportement sur IE, firefox et Opera.
voici le fichier test.xml réduit:
Code : Tout sélectionner
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<xhtml>
<head>
</head>
<body>
<div id="supportingText">
<div id="explanation">
<h3>Xsltop, l'éditeur XSL libre</h3>
<p>Xsltop est un logiciel libre et opensource sous license GPLv3 qui est entièrement écrit en Java5. Il est destiné aux développeurs XSL et aux étudiants en informatique qui souhaitent tester la famille de technologies XSL. </p>
</div> <!-- end explanation -->
</div> <!-- end supportingText -->
</body>
</xhtml>
Code : Tout sélectionner
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<xsl:output method="xml" media-type="application/xhtml+xml; charset=UTF-8" encoding="UTF-8" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" standalone="yes" indent="no" />
<xsl:template match="/xhtml">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Xsltop, l'éditeur XSL libre</title>
<style>
#explanation {
border: 1px solid black;
margin: 5px;
}
</style>
</head>
<body>
<div id="supportingText">
<div id="explanation">
<xsl:copy-of select="body/div/div[@id='explanation']"/>
</div>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Philippe
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16
OK c'est bien un problème d'espace de noms : les éléments copiés sont dans l'espace de noms nul au lieu de l'espace de noms xhtml. Ça peut se voir avec Firebug ou l'Inspecteur DOM.
Deux solutions sont données dans ce message. Soit il faut explicitement mettre l'attribut xmlns à tes éléments XML, soit utiliser xsl:element avec un template au lieu de xsl:copy-of.
Deux solutions sont données dans ce message. Soit il faut explicitement mettre l'attribut xmlns à tes éléments XML, soit utiliser xsl:element avec un template au lieu de xsl:copy-of.
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
Li tens revient, je ne fais riens. ♪
Super, j'avais pensé à un problème d'espace de noms mais je m'y étais mal pris pour le résoudre.
Je viens de tester la solution avec le template et ca marche super bien, ca m'a résolu un autre problème en passant.
Merci!
Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.16) Gecko/20080715 Ubuntu/7.10 (gutsy) Firefox/2.0.0.16
Je viens de tester la solution avec le template et ca marche super bien, ca m'a résolu un autre problème en passant.
Merci!
Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.16) Gecko/20080715 Ubuntu/7.10 (gutsy) Firefox/2.0.0.16
Qui est en ligne ?
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 4 invités