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

XML/XSL et SOAP Discussion :

Comment fabriquer un doc.txt avec un doc.xml et un


Sujet :

XML/XSL et SOAP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12
    Points : 7
    Points
    7
    Par défaut [RESOLU] Comment fabriquer un doc.txt avec un doc.xml et un
    Bonjour,
    J'ai beau lire les différentes docs, j'ai bien du mal à mettre en pratique et à comprendre !

    Voila, j'ai un fichier.xml qui n'a pas d'entête.
    Il est présenté sous la forme : (pour faire simple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <catalogue>
    <produit>
    <marque></marque>
    <quantite></quantite>
    </produit>
    </catalogue>
    Il n'y a pas d'entête de fichier.

    Moi, je veux prendre tous les produits de ce fichier.xml, et avec un fichier xsl, fabriquer un troisième fichier produits.txt, qui aurait la forme :
    marque, quantite
    marque, quantite
    ...


    J'ai donc écrit un fichier xsl dont voici le début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version="1.0">
    <xsl:output encoding="ISO-8859-1"/>
     
     
     <xsl:template match="/">
       <xsl:apply-templates select="CATALOG" />
     </xsl:template>

    Et pour associer les 2 fichiers, j'utilise un script php que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     <?php
       //Tableau des paramètres
       $array_params = array(
                     'param.1' => 'hello world',
                     'param.2' => 'bonjour le monde');
       // Ouverture d'un gestionnaire XSLT
       $xh = xslt_create(); 
       // Tranformation des documents
       $res = xslt_process($xh, 'fichier.xml', 'doc.xsl',NULL,array(),$array_params);
       // Fermeture du gestionnairexslt_free($xh);
       //Affichage
       echo $res;?>
    Or à l'execution, j'obtiens ceci :
    Warning: Sablotron error on line none: cannot open file 'c:/program files/easyphp1-8/apache/doc3.xsl' in c:\program files\easyphp1-8\www\dossier\metro.php on line 41[/code]

    Merci d'avance à ceux qui pourront m'aider

  2. #2
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    tout ce que je peux te dire c est que dans ton xsl tu devrais faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="/">
       <xsl:apply-templates select="catalogue" />
     </xsl:template>

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Merci tiscars, en fait dnas mon script, c'est bien écrit comme il faut, c'est dans mon message sur ce forum que j'ai écrit une erreur.

  4. #4
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    si par pas d'entete tu veux dire qu'ils n'ont pas la balise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="a_voir_ selon_tes_besoin"?>
    C'est un probleme

    Autrement n'importe quel erreur qui pourrait rendre ton fichier xslt non conforme xml (balise mal fermé, etc...) pourrait être cause je pense

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Merci Erwy, il s'agit bien de cette balise, qui est absente dans le fichier.
    Alors je l'ajoute moi même, mais ça ne fonctionne pas.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Bon ça y est, j'ai recopié un exemple de fichier xml et xsl qui me permettent d'afficher le fivhier xml de départ dans mon navigateur, avec une mise en forme.

    Maintenant, ce que je souhaiterai faire, c'est générer un troisième document, qui s'appelerait fichier.txt et qui comporterait el contenu de ce que j'affiche à l'écran.

    Voici les entêtes de mes documents actuels :

    fichier.xml :
    <?xml version="1.0" encoding="ISO-8859-1"?>

    fichier.xsl :
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlnssl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" media-type="text/html; charset=ISO-8859-1"/>

    Voici le contenu de mon fichier php :
    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
     
    <?php
      $fxml="fichier.xml";
      $fxsl="fichier.xsl";
      $id_xml=fopen($fxml,"rb");
      $id_xsl=fopen($fxsl,"rb");
     
      $xml.=fread($id_xml,filesize($fxml));
      $xsl=fread($id_xsl,filesize($fxsl));
     
     
      $param=array("valeur"=>"XML");
      $arg=array('/_xml'=>$xml,'/_xsl'=>$xsl);
     
      $analyseur_xslt=xslt_create();
      $resultat=xslt_process($analyseur_xslt,
      'arg:/_xml','arg:/_xsl',NULL,$arg,$param);
      if($resultat!=false)
      {
        print($resultat);
      }
      else
      {
      echo "<u>une erreur est survenue :</u>"
      ."Code : ".xslt_errno($analyseur_xslt)
      ."Message : ".xslt_error($analyseur_xslt);
      }
       xslt_free($analyseur_xslt);
     
    ?>
    Ce que je ne sais pas faire et que je ne trouve pas sur internet, c'est donner l'odre de création du 3ième fichier.
    A quel endroit est comment, est ce qu'on "programme" le fait que l'execution de la feuille de style va provoquer la création d'un nouveau fichier ?

    J'ai lu plein de trucs sur xalan, sablotron, xmlns...
    Je suis paumée.

    En l'état actuel des choses y a t'il une commande qui permette de fabriquer un nouveau fichier ou bien dois-je installer quelque chose sur mon poste avant de pouvoir executer cette commande mystère ?

    Merci par avance pour vos réponses.

  7. #7
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    je travaille en asp donc je peux te donner l'approche mais pas la syntaxe

    je charge le XML (tu fais)
    je charge le XSLT (tu fais)
    J'initie la transformation (tufais)
    1)
    • a)je recupere dans une variable
      b) j'ouvre fichier
      c)je rcopie dedans
      d)Je sauvegarde le fichier

    ou (mais c'est pour un format XML de sortie)
    2)
    • a) je recupere dans un objet DOM
      b)j'utilise une des methode de l'objet pour sauvegarder

    Tu ne peux pas faire en XSLT en tout cas, il faut que tu regarde la gestion des fichirs de ton langage.
    Pour toi, ici, c'est la solution 1, je pense

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup Erwy !

    C'est la méthode 1 que tu proposes, que je viens d'appliquer et ça a marché du premier coup.

    Encore mille mercis !

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

Discussions similaires

  1. comment traiter un fichier.txt avec "replace" ?
    Par pasrico dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 11/04/2011, 23h06
  2. comment remplir un doc word avec un formulaire
    Par enretard dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/07/2008, 10h12
  3. Réponses: 5
    Dernier message: 19/10/2006, 14h05
  4. Réponses: 1
    Dernier message: 05/09/2006, 17h20
  5. [VB6] Exploiter un doc PowerPoint avec VB
    Par Tranber dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 04/09/2002, 16h22

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