Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2730 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  xslt et php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

xslt et php

n°1840193
manu0000
Posté le 19-01-2009 à 20:08:11  profilanswer
 

bjr,
 
j'utilise php5 et j'ai un souci avec xsl.  
J'ai un fichier xml assez gros de plusieurs mega et je veux faire une requete dessus et afficher via XSLT.  
La nouvelle lib XSL de PHP5 ne prend en entrée que des DOMXML et plus des fichiers. Donc je suis obligé de faire un  
$doc->load('monfichier.xml')
qui est très long. Et je dois le faire à chaque fois que la page s'ouvre puisqu'on ne peut pas passer un DOM dans les variables de sessions.
 
Je voulais utiliser la lib xslt de php4 qui permet de faire la requete sur des fichiers xml et non des domxml mais c'est plus dispo en php5 et j'arrive pas à l'installer. On m'a dit que c'est parce que php5 ne supporte plus sablotron...
 
Une idée pour m'aider?
merci !!!

mood
Publicité
Posté le 19-01-2009 à 20:08:11  profilanswer
 

n°1840244
esox_ch
Posté le 19-01-2009 à 22:34:33  profilanswer
 

Tu peux stocker un objet DOM dans tes sessions, suffi de le sérialiser ... Question : Pourquoi reloader ton fichier .xml à chaque page pour après le transformer avec XSL ?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1840280
FlorentG
Unité de Masse
Posté le 20-01-2009 à 08:42:01  profilanswer
 

manu0000 a écrit :

Je voulais utiliser la lib xslt de php4 qui permet de faire la requete sur des fichiers xml et non des domxml


Nan, le fichier sera quand-même parsé. C'est juste la syntaxe qui était un peu plus légère. Mais qui dis transfo XSLT dit parsing obligatoire, ça ne change rien.
 
C'est un des inconvénients de DOM & XSL, ça n'est pas super-adapté pour les gros fichiers, surtout dans un environnement web où les pages doivent être débitées rapidement. Pour du desktop pas de probs, on mettera une barre de progression...
 
Donc comme l'a proposé esox, est-ce que le résultat change à chaque requête ? Si ce n'est pas le cas, autant mettre en cache (en session, ou sur le disque) pour ne calculer qu'une seul fois...

n°1842236
manu0000
Posté le 23-01-2009 à 18:20:23  profilanswer
 

merci pour vos reponses
@esox_ch : on peut pas stocker des ressources dans les variables de session or le dom est une ressource php
@florentG : ok merci, c'est bien ce qui me semblait, c tout pourri pour les gros fichiers
par contre :  
    - oui le resultat change à chaque fois parce que c'est le resultat d'une requete (la chaine xslt est reconstruite à chaque fois et est differente à chaque fois que la page est loadée à priori)
    - ce que je veux mettre en cache n'est pas le resultat mais la bdd xml
 
du coup, je cherche une extension xquery  
ai trouvé zorba mais pas les bin pour win32...
a+

Message cité 1 fois
Message édité par manu0000 le 23-01-2009 à 18:24:58
n°1842237
manu0000
Posté le 23-01-2009 à 18:26:37  profilanswer
 

ou sinon, je vais tout passer en mysql
...

n°1842239
Profil sup​primé
Posté le 23-01-2009 à 18:34:52  answer
 

manu0000 a écrit :

merci pour vos reponses
@esox_ch : on peut pas stocker des ressources dans les variables de session or le dom est une ressource php


non, ce n'est pas une ressource mais un objet, et on peut parfaitement passer un objet dans une variable de session.
 

n°1842249
omega2
Posté le 23-01-2009 à 18:55:12  profilanswer
 


Correction : l'équivalent sérialisé de l'objet.
 
On ne peut pas mettre l'objet en lui même dans la session.

n°1842253
Profil sup​primé
Posté le 23-01-2009 à 18:59:09  answer
 

:o

n°1842262
manu0000
Posté le 23-01-2009 à 19:12:12  profilanswer
 

ben c'est listé comme ressource
http://www.php.net/manual/fr/resource.php
et moi j'arrive pas à le recuperer via var de session

n°1842263
manu0000
Posté le 23-01-2009 à 19:12:35  profilanswer
 

je parle de domxml

mood
Publicité
Posté le 23-01-2009 à 19:12:35  profilanswer
 

n°1842265
Profil sup​primé
Posté le 23-01-2009 à 19:17:08  answer
 

je pense qu'il s'agit de la version procédurale de domxml qui elle utilise les ressources, mais si tu as PHP 5 je doute que tu utilises cette version, mais si c'est le cas, passe à la version objet.

n°1842267
manu0000
Posté le 23-01-2009 à 19:25:15  profilanswer
 

c'est la version objet

n°1842272
manu0000
Posté le 23-01-2009 à 19:29:47  profilanswer
 

en fait c'est dom et pas domxml, sorry !
neanmois j'arrive bien à passer des scalaires mais pas des dom via les var de sessions
y a t-il une manip speciale à faire svp?
merci !


Message édité par manu0000 le 23-01-2009 à 19:30:13
n°1842274
Profil sup​primé
Posté le 23-01-2009 à 19:29:55  answer
 

alors çà passe sans problème avec les sessions
 
EDIT :  [:grilled]  
Est ce que tu sérialises ?

Code :
  1. $_SESSION['dom'] = serialize($dom);
  2. //recup de l'objet...
  3. $dom = unserialize($_SESSION['dom']);


Message édité par Profil supprimé le 23-01-2009 à 19:31:48
n°1842276
manu0000
Posté le 23-01-2009 à 19:33:02  profilanswer
 
n°1842277
manu0000
Posté le 23-01-2009 à 19:33:52  profilanswer
 

non je serialise pas, je pensais que php 5 faisait ça tout seul
je vais essayer

n°1842282
manu0000
Posté le 23-01-2009 à 19:45:49  profilanswer
 

j'ai essayé mais marche pas,  
c'est expliqué là
http://bugs.php.net/bug.php?id=30321

n°1842285
Profil sup​primé
Posté le 23-01-2009 à 19:48:27  answer
 

ah dommage [:sadnoir]
Petite question : pourquoi dois-tu manipuler un XML de plusieurs Mo ?

n°1842287
manu0000
Posté le 23-01-2009 à 19:50:20  profilanswer
 

et la solution là
http://osdir.com/answers/php/4506- [...] bject.html
(il faut utiliser saveXML et loadXML)
merci à tous !!

n°1842289
manu0000
Posté le 23-01-2009 à 19:51:29  profilanswer
 

parce que je recupere ma base de donnée au format xml (de pls mo), et j'avais envie de faire des requetes dessus via xslt sans passer par mysql

n°1842290
Profil sup​primé
Posté le 23-01-2009 à 19:52:13  answer
 

tu peux aussi utiliser SAX qui possède un mode de lecture séquentiel, plus performant sur les gros fichiers ;) Ca peut être intéressant ;)


Message édité par Profil supprimé le 23-01-2009 à 19:52:21
n°1842303
manu0000
Posté le 23-01-2009 à 20:01:48  profilanswer
 

ok merci
je connais pas, je vais me renseigner sur SAX

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  xslt et php

 

Sujets relatifs
XSLT pour chaque fois ou le champ est differentProblème lecture des noeuds dans xslt
XSLT a partir de javascriptxslt
XHTML (Dublin Core) + XSLT -> RDF[Résolu][XSLT] Utilisation de la librairie redirect
[Résolu] XSLT : grouper et sommer Transformation XSLT en Javascript
[XSLT] Position d'un élément (élément non courant)[Résolu] XSLT 2.0 dans PHP avec Saxon
Plus de sujets relatifs à : xslt et php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR