[XSLT] Page ne validant pas apres transform

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> 


--
Eternel Questionneur. Seul et Unique membre de la : SPdLM
=> Société Protectrice des Langages Maltraités

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. 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