IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[XSLT] Parsage XML via XSLT, comment être valide W3C ?


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 186
    Points : 80
    Points
    80
    Par défaut [XSLT] Parsage XML via XSLT, comment être valide W3C ?
    Bonjour,
    Voilà ce qui m'amène aujourd'hui : J'ai simplifié les bases de mon code pour faire un test
    dont la page principale (qui se trouve ici) contient le code suivant:

    Code php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
       $xslDoc = new DOMDocument();
       $xslDoc->load("Test_doctype.xsl");
     
       $xmlDoc = new DOMDocument();
       $xmlDoc->load("ENREGISTREMENTS_XML_ESSAI.xml");
     
       $proc = new XSLTProcessor();
       $proc->importStylesheet($xslDoc);
       echo $proc->transformToXML($xmlDoc);
    ?>
    Ce code appelle le fichier suivant (code sans importance, car non utilisé dans le cas de ce test):

    Fichier XML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="UTF-8"?>
     
    <enregistrements>	
    	<auteur>
    		<ressource titre="Un titre super important">
    			<regroupement sous_titre="Titre du regroupement">
    				<ligne>Mon 1er texte
    					<plus>Bonjour !</plus>
    				</ligne>
    			</regroupement>
    		</ressource>
    	</auteur>	
    </enregistrements>
    pour le parser à l'aide du code XSLT suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" 
    encoding="utf-8" 
    doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" 
    doctype-system="http://www.w3.org/TR/html4/loose.dtd"/>
     
    <xsl:template match="/">
    	<html>
    	<head>
    	<title>Test</title>
     
    	</head>
    	<body>
    	<p>Image sympatique: 
    		<img style="position:absolute; width:125px; height:94px" src="http://souffle56.ovh.org/Site/Tests/Interactivite_et_height/Image_js_css/m-Dauphins.jpg" alt="Dauphins"/>
    	</p>
    	</body>
    	</html>
    </xsl:template>
     
    </xsl:stylesheet>
    Le Doctype utilisé ici pour le fichier XSLT est de type HTML 4.01;
    Or, si j'ai bien compris, pour qu'un navigateur puisse lire correctement un fichier de type HTML, les balises <img> étant auto-fermantes, elles doivent être écrites sans </img> et sans "/" à la fin de <img ...>
    Dans le cas de mon programme, ça donnerait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img style="position:absolute; width:125px; height:94px" src="http://souffle56.ovh.org/Site/Tests/Interactivite_et_height/Image_js_css/m-Dauphins.jpg" alt="Dauphins">
    Or, si je l'écris ainsi dans le fichier XSLT, à l'arrivée, coté navigateur, celui-ci n'arrive pas à l'afficher correctement: série de messages d'erreur de type
    ...Opening and ending tag mismatch: img line 16...
    Par contre, si je rajoute le fameux "/" évoqué à la fin de la balise <img>, comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img style="position:absolute; width:125px; height:94px" src="http://souffle56.ovh.org/Site/Tests/Interactivite_et_height/Image_js_css/m-Dauphins.jpg" alt="Dauphins"/>
    -> là, le navigateur affiche bien la page correctement...
    D'ailleurs, le code source de la page navigateur affiche (pour la balise <img>):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img style="position:absolute; width:125px; height:94px" src="http://souffle56.ovh.org/Site/Tests/Interactivite_et_height/Image_js_css/m-Dauphins.jpg" alt="Dauphins">
    -> il y a bien une balise <img> sans "/"
    Et si on utilise le validateur officiel, voilà ce qu'il affiche: "This document was successfully checked as HTML 4.01 Transitional!"

    Autrement dit, il semblerait que le fichier PHP utilisé ici pour parser le fichier XML via le fichier XSLT joue bien son rôle de parseur, et que le fichier généré est bien reçu par le navigateur comme "valide HTML4.01" (-> avec la balise <img ...> sans "/")...
    mais seulement si, dans le fichier XSLT, la balise image est de la forme <img .../> (-> à l'inverse des spécifications W3C pour le HTML !)
    Y aurait-il quelque chose à revoir dans mon code ou dans mon approche pour parser le fichier XML ? Qu'en pensez-vous

  2. #2
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 371
    Points
    2 371
    Par défaut
    Bonjour,

    c'est pas compliquer, en XML, on écrit <img/> ou <img></img> et en html <img>.
    Article : Installation de Cocoon
    Je ne réponds pas aux MP à caractère technique.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 186
    Points : 80
    Points
    80
    Par défaut
    Merci polymorphisme,
    Pour la simplicité et la pertinence de ta réponse... Au moins, à présent me voilà au clair et... rassuré !
    Autrement dit aussi: "Affaire classée !"

    A une prochaine !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Supprimer des balises d'un fichier XML via XSLT
    Par LaBastoss dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 17/12/2012, 21h44
  2. Réponses: 4
    Dernier message: 30/08/2011, 15h56
  3. [XSLT] Xml validé XSD puis transformé via XSLT
    Par cash3000 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 16/06/2006, 13h09
  4. probleme de transformation d'un XML via XSLT
    Par nayron_1 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 08/11/2005, 15h19
  5. transformation xml via xslt
    Par ronnie dans le forum XSL/XSLT/XPATH
    Réponses: 17
    Dernier message: 10/05/2005, 11h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo