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

Bibliothèques et frameworks PHP Discussion :

[XSL] Parser fichier xml : erreurs + incompréhensions


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 4
    Points : 5
    Points
    5
    Par défaut [XSL] Parser fichier xml : erreurs + incompréhensions
    Bonjour à tous

    Je voulais faire d'un fichier xml un fichier html avec un passage par un fichier xsl.

    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
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <?xml-stylesheet type="text/xsl" href="essais.xslt"?>
    <recette>
     
    	<entete>
    		<auteur id="1">Casimir</auteur>
    		<titre>Recette du Gloubi-Boulga</titre>
    		<remarque>Pour une personne</remarque>
    	</entete>
     
    	<procedure>
    		Remplir un saladier <BOLD>avec de la confiture de fraises</BOLD>, du chocolat râpé,
    		des bananes écrasées, de la moutarde forte, des saucisses de Toulouse
    		écrasées tièdes mais crues. Mélanger vigoureusement jusqu'à obtenir une
    		bouillie marron-clair. Il est normal qu'il y ait des grumeaux. Les
    		proportions sont environ égales pour tous les ingrédients, mais il est
    		possible de varier selon les goûts de chacun. 	
    	</procedure>
     
    </recette>
    Grâce à Virgul je sais maintenant que cela n'est pas suffisant, car IE interprète directement le xml. Je me suis dirigé alors vers l'aide php au rayon expat et fonctionnalités xml pour php où j'ai trouvé ce fichier exemple pour formuler une structure de document xml.

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <?php
    $file = "donnees.xml";
    $depth = array();
     
    function debutElement($parser, $name, $attrs) 
    {
        global $depth;
        for ($i = 0; $i < $depth[$parser]; $i++) {
            echo "  ";
        }
        echo "$name\n";
        $depth[$parser]++;
    }
     
    function finElement($parser, $name) 
    {
        global $depth;
        $depth[$parser]--;
    }
     
    $xml_parser = xml_parser_create();
    xml_set_element_handler($xml_parser, "debutElement", "finElement");
    if (!($fp = fopen($file, "r"))) {
        die("Impossible d'ouvrir le fichier XML");
    }
     
    while ($data = fread($fp, 4096)) {
        if (!xml_parse($xml_parser, $data, feof($fp))) {
            die(sprintf("erreur XML : %s à la ligne %d",
                        xml_error_string(xml_get_error_code($xml_parser)),
                        xml_get_current_line_number($xml_parser)));
        }
    }
    xml_parser_free($xml_parser);
    ?>
    MAIS : il semble que quelque chose ne plait pas qui m'affiche cette erreur :
    "Notice: Undefined offset: 2 in c:\program files\easyphp1-8\www\edition\debut.php on line 12" et le même pour la ligne 18


    Je pense qu'il n'arrive pas à trouver une valeur qque part. j'ai essayé d'initialiser les variables des fonctions sans résultat.

    Question 1 : qui peut me dire de quoi vient cett p...... d'erreur ???

    Puis j'ai essayé d'ajouter le code juste après l'écho du $name croyant qu'il allait afficher le nom de l'attribut d'une des balises xml ?!
    A la place dans le résultat j'ai "Array" qui s'affiche suite à tous les noms de balises.

    Question 2 : Comment il sait que $name c'est le nom de la balise et qu'il ne sait pas que $attrs est le nom de l'attribut. Ou alors j'ai tout faux quand je crois que $attrs = attribut. Ou alors le code manque d'arguments ???

    Merci de votre aide....

  2. #2
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Re-bonjour à tous,

    Pour ce qui est de l'erreur "Undefined offset: 2 " c'était le tableau "$depth" qui n'était pas instancié donc en ajoutant une conditionnelle et une valeur à l'indexe "$parser" tel que ci dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    global $depth;
    if(empty($depth[$parser])) $depth[$parser]=0;
    for ($i = 0; $i < $depth[$parser]; $i++) {
    on évite d'avoir le premier "tour" de boucle sans valeur.

    Pour ce qui est de la question deux, après avoir bien lu, ce sont des valeurs propres à la méthode "xml_set_element_handler".

    Merci et bonne journée, Toto...

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

Discussions similaires

  1. XML Erreur incompréhensible..
    Par _onWakeUp dans le forum Flash
    Réponses: 4
    Dernier message: 25/05/2007, 10h15
  2. [AJAX] requête sur fichier.xml => erreur 405 sous IE !
    Par jeje13009 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 26/03/2007, 21h42
  3. [glib] parser fichier xml
    Par .:dev:. dans le forum C
    Réponses: 10
    Dernier message: 18/07/2006, 00h00
  4. [DOM] Erreur parser fichier xml avec caractère spéciaux
    Par turcotm dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 19/06/2006, 09h01
  5. [XML] [EXPAT] Parser fichier XML
    Par Ben42 dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 17/02/2006, 14h08

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