[Résolu] XML+XSL vers XHTML

XML+XSL vers XHTML [Résolu] - XML/XSL - Programmation

Marsh Posté le 19-11-2008 à 10:56:25    

Bonjour,
apres recherche et de nombreux tests je ne trouve pas ce qui ne va pas !
j'ai vu que certains d'entre vous avez eu un pb similaire. j'ai une page xml avec sa feuille xsl que je veux afficher en xhtml 1.0 dans mon navigateur. Ca marche tres bien dans IE6 mais je n'ai que les textes dans FF3 sans aucun formatage, si je sauvegarde la page, tout est est bon !
j'ai essaye de changer les type mime sur mon serveur de test (lighttpd) mais rien n'y fais.
voila le xml:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="album.xsl" ?>
<root>
    <pics id="1" a="0" d="1">
        <rub>r</rub>
        <subrub>s</subrub>
        <name>n</name>
    </pics>
    <pics id="2" a="1" d="1">
        <rub>a</rub>
        <subrub>z</subrub>
        <name>e</name>
    </pics>
    <pics id="3" a="1" d="2">
        <rub>j</rub>
        <subrub>k</subrub>
        <name>l</name>
    </pics>
</root>
 
et le xsl:
<?xml version="1.0" encoding="UTF-8"?>
 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
 
    <xsl:output
        method="xml"
        doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
        doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
        indent="yes"
        omit-xml-declaration="yes"
    />
    <xsl:template match="/">
        <html>
            <head>
                <title>album.xsl</title>
            </head>
            <body>
                <xsl:apply-templates />
            </body>
        </html>
    </xsl:template>
 
    <xsl:template match="pics">
        <p><button>
            <xsl:attribute name="type">button</xsl:attribute>
            <xsl:attribute name="class">a<xsl:value-of select="@a" /></xsl:attribute>
            <xsl:value-of select="@id" />
        </button></p>
    </xsl:template>
 
</xsl:stylesheet>
 
merci pour votre aide


Message édité par dave_sab le 19-11-2008 à 11:44:47
Reply

Marsh Posté le 19-11-2008 à 10:56:25   

Reply

Marsh Posté le 19-11-2008 à 11:15:29    

Regarde au niveau des entêtes HTTP, peut-être que tes fichiers sont transmis en text/plain ?

Reply

Marsh Posté le 19-11-2008 à 11:30:51    

FlorentG a écrit :

Regarde au niveau des entêtes HTTP, peut-être que tes fichiers sont transmis en text/plain ?


 
merci pour la reponse,
au niveau des headers, j'ai:
application/xml pour le fichier xml
text/xml pour le xsl
 
pour faire un test, j'ai modifie le xsl:
<?xml version="1.0" encoding="UTF-8"?>
 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
 
    <xsl:output
        method="xml"
        doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
        doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
        indent="yes"
        omit-xml-declaration="yes"
    />
 
    <xsl:template match="/">
        <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
                <title>album.xsl</title>
            </head>
            <body>
                <xsl:apply-templates />
            </body>
        </html>
    </xsl:template>
 
    <xsl:template match="pics">
        <p>
            <button>
                <xsl:attribute name="type">button</xsl:attribute>
                <xsl:attribute name="class">a<xsl:value-of select="@a" /></xsl:attribute>
                <xsl:value-of select="@id" />
            </button>
        </p>
    </xsl:template>
 
</xsl:stylesheet>
 
ca fonctionne un peu mieux (le titre est bien reconnu) mais j'ai un attribu "xmlns" qui apparait dans mes balises <p>  :pt1cable:

Reply

Marsh Posté le 19-11-2008 à 11:34:04    

dave_sab a écrit :

ca fonctionne un peu mieux (le titre est bien reconnu) mais j'ai un attribu "xmlns" qui apparait dans mes balises <p>  :pt1cable:


Ouais, il faut namespacer normallement toutes les balises. ['tain ça fait trop longtemps que j'ai pas fais d'XSL] Et si tu rajoutes l'xmlns XHTML en namespace par défaut ? :

Code :
  1. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">

Reply

Marsh Posté le 19-11-2008 à 11:37:23    

[:dave_sab]  
j'ai trouve !
 
en fait il faut passer le xmlns="http://www.w3.org/1999/xhtml" dans le xsl:stylesheet et non html.
maintenant, l'affichage est correct et le source est valide !  :D  
 
merci a vous

Reply

Marsh Posté le 19-11-2008 à 11:38:20    

FlorentG a écrit :


Ouais, il faut namespacer normallement toutes les balises. ['tain ça fait trop longtemps que j'ai pas fais d'XSL] Et si tu rajoutes l'xmlns XHTML en namespace par défaut ? :

Code :
  1. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">



 
j'etais d'ecrire ma trouvaille quand tu as repondu; merci c'etait ca

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed