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 :

[XSLT] Extraction de fichiers XML pour traduction XSLT


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut [XSLT] Extraction de fichiers XML pour traduction XSLT
    Bonjour,

    Dans le cadre d'un petit projet je dois pouvoir lire certains fichiers xml contenus dans une archive zip et sur lesquelles je dois effectuer une transformation XSLT. Une première idée serait de simplement décompresser les fichiers dont j'ai besoin pour effectuer la transformation... mais en même temps ce serait un peu trop simple

    Voilà, je me demandais si il était possible de mettre à l'intérieur d'une feuille de style XSL, une référence vers des flux fichiers contenues dans une archive ZIP, ou si le processeur XSLT va se vautrer lamentablement.
    En pratique, je pensais peut-être utiliser une expression XPath de ce genre-là:
    select="document(zip://tmp/test.zip#test.xml)"

    J'ai essayé d'effectuer le test par moi même, mais (pour je ne sais quelle raison) je n'arrive pas à accéder à un flux ZIP à partir d'une URL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reader->open('zip://hello.zip', 'r');
    Retourne cette erreur (on notera la clareté du message):
    Warning: XMLReader::open(zip://hello.zip) [function.XMLReader-open]: failed to open stream: Succès in /opt/lampp/htdocs/fileupload.php on line 37
    Alors que l'utilisation de la méthode getStream de ZipArchive marche sans encombre.

    D'après-vous, il y a une chance que j'arrive à mes fins avec les flux, ou il faut que je me résigne à extraire les 3 fichiers en une fois?
    Indépendemment de cela, le fait que je n'arrive pas à ouvrire les flux via URL, cela peut-être un problème avec mon installation?

    Merci!
    M. H.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Citation Envoyé par mhz42
    Voilà, je me demandais si il était possible de mettre à l'intérieur d'une feuille de style XSL, une référence vers des flux fichiers contenues dans une archive ZIP, ou si le processeur XSLT va se vautrer lamentablement.
    En pratique, je pensais peut-être utiliser une expression XPath de ce genre-là:
    select="document(zip://tmp/test.zip#test.xml)"
    Je ne pense pas non, que le processeur XSLT en soit capable.

    Citation Envoyé par mhz42
    J'ai essayé d'effectuer le test par moi même, mais (pour je ne sais quelle raison) je n'arrive pas à accéder à un flux ZIP à partir d'une URL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reader->open('zip://hello.zip', 'r');
    Il manque surtout l'ancre ici, pour spécifier le fichier à lire parmi l'archive : ce qui pourrait expliquer le message d'erreur.

    Mais si zip fait partie des flux PHP enregistrés et que allow_url_fopen est à On toute fonction capable de lire un fichier devrait ainsi pouvoir lire un fichier de l'archive.

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci pour cette réponse rapide

    Citation Envoyé par julp Voir le message
    Je ne pense pas non, que le processeur XSLT en soit capable.
    Dommage...
    Citation Envoyé par julp Voir le message
    Mais si zip fait partie des flux PHP enregistrés et que allow_url_fopen est à On toute fonction capable de lire un fichier devrait ainsi pouvoir lire un fichier de l'archive.
    En effet, c'est une erreur de ma part, je n'ai pas regardé la bonne version du script, néamoins un problème persiste même en spécifiant l'ancre:
    Warning: XMLReader::open(zip://hello.zip#hello) [function.XMLReader-open]: failed to open stream: Aucun fichier ou répertoire de ce type in /opt/lampp/htdocs/fileupload.php on line 37
    'allow_url_fopen' est bien à On... Peut-être que 'zip://' n'est effectivement pas enregistré... Ce serait quand même suprenant...

    Dans tout les cas je dois pouvoir m'en passer...

    Merci beaucoup
    M. H.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Autre chose que j'avais besoin de réexpérimenter : le chemin dans l'URI de l'archive doit être absolu sinon il est incapable, semble-t-il, de la trouver

Discussions similaires

  1. [XSLT] Appliquer un traitement xslt sur un fichier XML distant
    Par mabig dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 14/03/2006, 09h38
  2. [XSLT] Création de fichier XML dynamique avec PHP
    Par daninho dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 02/02/2006, 11h18
  3. [xslt] Parser 2 fichiers XML
    Par malekms dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 30/12/2005, 12h22
  4. [XSLT] Diviser un fichiers xml en plusieurs pages html
    Par thibaut06 dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/04/2005, 16h56
  5. [XSLT] Fusion de fichier XML ???
    Par webtheque dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 04/03/2005, 20h13

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