[XSLT] Page ne validant pas apres transform

Fermé
esox_ch Messages postés 769 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 14 mars 2007 - 8 janv. 2006 à 13:56
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 - 10 janv. 2006 à 09:39
Bonjour,

J'ai un petit probleme avec le ficher xsl suivant.
Je ne comprend pas pourquoi, apres qu'il ait ete parse avec un fichier XML, le output html ait le probleme suivant :

Le <link href='/css/main.css' rel='stylesheet' type='text/css' /> de mon xsl est transforme en <link href='/css/main.css' rel='stylesheet' type='text/css' > </link>.
Je vous laisse mon fichier xsl pour que vous puissiez y voir un peu plus clair.
Merci d'avance
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/xhtml1/strict">
    <xsl:output method="html" media-type="text/html; charset=UTF-8" encoding="UTF-8" ident="yes"/>
     
    <xsl:template match="/">
     <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
     <head>
       <title> Site alternatif de la section EL </title>
       <link href='/css/main.css' rel='stylesheet' type='text/css' />
     </head>
     <body>
     <xsl:apply-templates/>
     </body>
     </html>
    </xsl:template>
     
    <xsl:template match="historique">
     <table border="1">
       <xsl:for-each select="./message">
       <tr>
         <th><xsl:value-of select="@date"/></th>
         <th><xsl:value-of select="@auteur"/></th>
       </tr>
       <tr>
         <td colspan="2"><xsl:value-of select="."/></td>
       </tr>
       </xsl:for-each>
     </table>
    </xsl:template>
     
    <xsl:template match="link">
     <xsl:element name="a">
       <xsl:attribute name="class"><xsl:value-of select="@align"/></xsl:attribute>
       <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute>
       <xsl:value-of select="current()"/>
     </xsl:element>
    </xsl:template>
     
    <xsl:template match="message">
     <xsl:element name="p">
       <xsl:attribute name="class"><xsl:value-of select="@align"/></xsl:attribute>
       <xsl:value-of select="current()"/>
     </xsl:element>
    </xsl:template>
     
    </xsl:stylesheet> 


A voir également:

2 réponses

Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
9 janv. 2006 à 13:10
je pense que c'est du au :

<xsl:output method="html" media-type="text/html; charset=UTF-8" encoding="UTF-8" ident="yes"/>


Qui considère la sortie en tant qu'html et détecte peut etre un espace après ta balise <link>, ou bien le saut de ligne entre <link> et <head> est considéré comme un caractère compris en tre 2 balises et donc il le traduit et te sort une balise de fermeture de link pour l'englober...

Voilà, ca c'est juste mon avis, je ne suis aps sur à 100% que ca soit du qu'a cause de ca.

Zep3k!GnO
0
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 506
9 janv. 2006 à 17:41
Salut,
Y a une erreur vis à vis de la déclaration xsl:output, le xhtml c'est une DTD xml :
<xsl:output method="xml" encoding="UTF-8"
  doctype-system="http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-stric
t.dtd"
    doctype-pubilc="-//W3C//DTD XHTML 1.0 Strict//EN"/>

A+, crabs
0
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
10 janv. 2006 à 09:39
arf le salo, j'en étais sur que tu saurais :D

Zep3k!GnO
0