Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > XSL & XSLT
XSL & XSLT Forum d'entraide pour les extensions XSL et XSLT permettant de manipuler vos documents XML à l'aide de feuilles de style et de transformations avec PHP. Avant de poster -> tutoriels XSL et XSLT
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/11/2007, 10h38   #1
Invité de passage
 
Inscription : novembre 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 4
Points : 0
Points : 0
Par défaut 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 :
$reader->open('zip://hello.zip', 'r');
Retourne cette erreur (on notera la clareté du message):
Citation:
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.
mhz42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2007, 11h46   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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 :
$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.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2007, 13h47   #3
Invité de passage
 
Inscription : novembre 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 4
Points : 0
Points : 0
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:
Citation:
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.
mhz42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2007, 14h03   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h34.


 
 
 
 
Partenaires

Hébergement Web