Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2734 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  [XML/XSL] Convertir un stylesheet HTML en XHTML...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[XML/XSL] Convertir un stylesheet HTML en XHTML...

n°233132
avander
Posté le 23-10-2002 à 17:08:54  profilanswer
 

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)
mood
Publicité
Posté le 23-10-2002 à 17:08:54  profilanswer
 

n°233140
Profil sup​primé
Posté le 23-10-2002 à 17:14:01  answer
 

:crazy:

n°233161
avander
Posté le 23-10-2002 à 17:39:18  profilanswer
 

Pourquoi cette tête, c'était pas clair???


---------------
A thing of beauty is a joy forever (John Keats)
n°233722
avander
Posté le 24-10-2002 à 12:23:01  profilanswer
 

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


Message édité par avander le 24-10-2002 à 12:24:00

---------------
A thing of beauty is a joy forever (John Keats)
n°233723
Profil sup​primé
Posté le 24-10-2002 à 12:24:35  answer
 

<xml...>
<!doctype...>
<html xmlns... xml:lang...>
 
et ca suffit

n°233726
gm_superst​ar
Appelez-moi Super
Posté le 24-10-2002 à 12:26:53  profilanswer
 

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...


Message édité par gm_superstar le 24-10-2002 à 12:27:49

---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
n°235739
avander
Posté le 28-10-2002 à 10:15:12  profilanswer
 

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


---------------
A thing of beauty is a joy forever (John Keats)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  [XML/XSL] Convertir un stylesheet HTML en XHTML...

 

Sujets relatifs
[HTML] comment on met un espace entre des images sur une page html ?[HTML] Je tente le standard... c'est parti pour des questions ;)
VB et, Form HTML[HTML, JS] Bug IE6 et background-color en CSS ?
Gros prob de décalage dans tableau HTML[XHTML 1.1] Problème de validation
[HTML] Kaistion Basique sur un formulaire.[HTML] marge d'un seul côté d'une cellule
Génération de pages html - templatesconvertir mon site html en php
Plus de sujets relatifs à : [XML/XSL] Convertir un stylesheet HTML en XHTML...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR