Convertir un stylesheet HTML en XHTML... [XML/XSL] - Divers - Programmation
Marsh Posté le 23-10-2002 à 17:39:18
Pourquoi cette tête, c'était pas clair???
Marsh Posté le 24-10-2002 à 12:23:01
Entretemps j'ai trouvé un moyen pour contourner mon problème comme suit:
Si je remplace la deuxième étappe par :
avant: <xsl:template match="/">
<HTML> ...
après: <xsl:template match="/">
<html> ...
Pourquoi faire compliqué si on peut faire simple? ;-)
Ainsi mon stylesheet ne génère plus les xmlns="" intempestif mentionné dans mon premier post... et en plus le validateur est super content et me dit que je suis XHTML 1.0 complaint!!
Il me semblait pourtant qu'il faut un attribut xmlns="..." dans l'élément html pour être à la norme non? Quid des attributs xml:lang et lang??
Avander
Marsh Posté le 24-10-2002 à 12:24:35
<xml...>
<!doctype...>
<html xmlns... xml:lang...>
et ca suffit
Marsh Posté le 24-10-2002 à 12:26:53
Avander a écrit a écrit : Entretemps j'ai trouvé un moyen pour contourner mon problème comme suit: Si je remplace la deuxième étappe par : avant: <xsl:template match="/"> <HTML> ... après: <xsl:template match="/"> <html> ... Pourquoi faire compliqué si on peut faire simple? ;-) Ainsi mon stylesheet ne génère plus les xmlns="" intempestif mentionné dans mon premier post... et en plus le validateur est super content et me dit que je suis XHTML 1.0 complaint!! Il me semblait pourtant qu'il faut un attribut xmlns="..." dans l'élément html pour être à la norme non? Quid des attributs xml:lang et lang?? Avander |
Si si il faut mettre le xmlns : http://www.w3.org/TR/xhtml1/#strict
Par contre je ne vois pas pourquoi ta règle
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{$pLang}" lang="{$pLang}">
te mettait des xmlns dans d'autres tags...
Marsh Posté le 28-10-2002 à 10:15:12
A force de creuser on finit par trouver...
En fait mon stylesheet faisait appel à un autre stylesheet qui comprend des templates qui sont communs à toutes les pages HTML que je génére, histoire qu'elles aient toutes un air de famille ( entête, système de navigation, pied de page, copyright, etc...). Ce stylesheet est importé dans le stylesheet principal
par <xsl:import>.
Ce qui m'a mis sur la voie c'est que les xmlns="" se trouvaient toujours dans du code généré par le stylesheet commun. En cherchant dans cette direction j'ai finalement trouvé une explication dans le XSLT Programmer's Reference - 2nd Edition de Michael Kay - p227 :
"An imported stylesheet module does not inherit namespace declarations from the module that imports it." Voilà qui est clair, net et précis!
Comme il n'y avait pas de définition de namespace par défaut dans le stylesheet commun le système insérait un attribut xmlns="" pour me faire part du problème. Une fois le même namespace par défaut inclus dans le stylesheet commun tout est rentré dans l'ordre!
Bonne transformation à tous! Avander
Marsh Posté le 23-10-2002 à 17:08:54
Bonjour,
J'utilise XML/XSL pour générer des pages HTML en batch à l'aide de msXSL.exe.
Ayant lu la faq XHTML/CSS je me suis lancé dans la conversion de mes stylesheets HTML pour générer du XHTML au lieu du HTML.
1) Pour inclure la XML declaration et la DOCTYPE declaration j'ai modifié l'élément <xsl:output>:
avant: <xsl:output method="html" version="4.0"
encoding="ISO-8859-1" indent="yes"/>
après: <xsl:output method="xml" omit-xml-declaration="no"
indent="yes" encoding="ISO-8859-1"
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
2) J'ai adapté la génération de la balise html pour répondre au normes xhtml ($pLang est un paramètre qui contient le code langue iso):
avant: <xsl:template match="/">
<HTML>
après: <xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{$pLang}" lang="{$pLang}">
3) J'ai mis toutes les balises HTML en minuscules, les attributs sont déjà compatible vu que le stylesheet c'est du xml.
4) Je regénére ma page en XHTML et je la passe au validateur du w3c, ce qui me donne :
Line 4, column 12:
<head xmlns="">
^
Error: there is no attribute "xmlns" for this element (in this HTML version)
Line 13, column 29:
... <p class="pageHeading" xmlns="">DOCUMENTATIE van de DIGIVOTE ...
^
Error: there is no attribute "xmlns" for this element (in this HTML version)
Line 16, column 23:
<tr valign="top" xmlns="">
^
Error: there is no attribute "xmlns" for this element (in this HTML version)
Line 483, column 10:
<br xmlns="" />
^
Error: there is no attribute "xmlns" for this element (in this HTML version)
Line 484, column 35:
... cellspacing="0" width="100%" xmlns="">
^
Error: there is no attribute "xmlns" for this element (in this HTML version)
Mon problème : d'où vient cet attribut xmlns="" intempestif que je retrouve effectivement dans mon fichier généré...
Merci pour vos réponses. Avander
Désolé pour les smilies dans le texte (j'ai pas ça dans la 'vue rapide de la discussion' quand j'édite ce message, bizarre...).
Message édité par avander le 23-10-2002 à 17:17:20
---------------
A thing of beauty is a joy forever (John Keats)