|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||||
|
Nouveau Membre du Club
![]() Inscription : août 2007 Messages : 129 ![]() |
Bonjour, dur dur dur de se mettre à niveau!
J'ai un document Xml que j'interroge avec php et la "méthode" xpath. Mon doc XML: Code :
Code :
Il faut donc transcrire le résultat de la requête xpath sous la forme d'un tableau. Mais voilà, je n'y arrive pas! La consultation des sujets du forum et de la FAQ ne m'en apprend pas plus donc je m'en remets à vous, encore une fois lol! |
||||
|
|
00
|
|
|
#2 | ||
|
Nouveau Membre du Club
![]() Inscription : août 2007 Messages : 129 ![]() |
ThomasR aborde le concept dans une réponse à ce sujet: http://www.developpez.net/forums/d10...tion-attribut/
Code :
|
||
|
|
00
|
|
|
#3 | ||
|
Nouveau Membre du Club
![]() Inscription : août 2007 Messages : 129 ![]() |
Code :
Le Xpath doit aller un cran plus haut (facile) mais j'ai toujours un problème dans la restitution du résultat: comment construire un tableau multidimensionnel à 4 colonnes qui récupère les nodevalues? |
||
|
|
00
|
|
|
#4 |
|
Nouveau Membre du Club
![]() Inscription : août 2007 Messages : 129 ![]() |
Sans réponse de votre part, et bien, disons le, je me pose des questions.
Je reste bloqué sur la récupération des nodevalues dans un tableau multi dimensionnel... La méthode que j'emploie est-elle mauvaise? Je ferai mieux de passer par un import xml vers une base mysql puis de faire tranquillement l'extraction avec php? Merci. |
|
|
00
|
|
|
#5 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Hello
S'il s'agit de récupérer des nodes pour les transformer et les afficher en HTML, il vaut mieux passer par une transformation XSLT, c'est plus rapide et plus souple: http://php.net/manual/en/class.xsltprocessor.php
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
00
|
|
|
#6 |
|
Nouveau Membre du Club
![]() Inscription : août 2007 Messages : 129 ![]() |
Ok ça semble être l'outil approprié. Y a plus qu'à!
Merci beaucoup! |
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : août 2007 Messages : 129 ![]() |
Si je comprends bien, avec beaucoup de chance
le fichier xsl est le schéma du fichier xml. On interroge (car xsl est aussi un langage) avec la fonction value of select= xpath What else? Non, un peu plus sérieusement... c'est plutôt balèse pour un non-informatico-addicte ça non? |
|
|
00
|
|
|
#8 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
C'est vrai que c'est pas super simple à comprendre au départ.
Pour commencer, XSLT n'est pas un langage, c'est du XML, il n'y a donc pas de notion de fonction à proprement parler. Ce n'est pas non plus le schéma de ton XML, ça c'est la DTD (Document Type Defintion) dont l'objet est de décrire comment un document XML doit être formé dans un cas bien spécifique (XHTML par exemple dispose d'une DTD disponible sur le site du W3C). XSLT nous sert donc à transformer notre XML dans un autre XML, dans ton cas, transformer un flux XML en XHTML. Je pense qu'un bon point de départ pour te faire les dents sur cette techno est le tuto de w3school: http://www.w3schools.com/xsl/ Si tu as des soucis pour comprendre, le forum est là pour ça
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
00
|
|
|
#9 | ||||
|
Nouveau Membre du Club
![]() Inscription : août 2007 Messages : 129 ![]() |
Re bonjour forum!
C'est pas faute de pas chercher mais là...je bloque encore! Avec ce code (différent de celui que tu me conseillas), j'obtiens la liste de tous mes jeux : "Elixir, 0371, Asmodée", "Jungle Speed, 0372, Asmodée". Resterait donc plus qu'à dire sélectionne moi ce jeu à partir d'une variable $_POST combinée à un xpath? Code :
Code :
|
||||
|
|
00
|
|
|
#10 | ||||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Ce que tu dois faire:
1 - Pour le listing On dispose d'une liste de jeux sous forme d'arbre XML. On va simplement appliquer une XSLT pour le transformer en XHMLT. 2 - Pour la recherche L'utilisateur veut voir les détails d'un jeu. On va rechercher dans l'arbre les nodes correspondants à sa requête avec XPath et on va mettre ces nodes dans un nouveau document XML sur lequel on va appliquer notre XSLT pour le transformer en XHTML. Voici ce à quoi ça peut ressembler: 1 - Listing Code :
Code :
On clone ces nodes et on les importe dans le nouveau document ($out) avant de remplacer le $dom à afficher par ce dernier. Le reste est identique.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||||
|
00
|
|
|
#11 |
|
Nouveau Membre du Club
![]() Inscription : août 2007 Messages : 129 ![]() |
Salut!
En testant de manière classique (enfin comme je connais) ton code (un fichier xml et un xsl) l'affichage fonctionne. En revanche en regroupant les codes dans un fichier php, l'erreur souvent relatée sur le web apparaît: Fatal error: Class 'XSLTProcessor' not found in ... Alors bien sûr on n'abandonne pas et on cherche, on cherche... Dans Wamp, je dé-commente dans le fichier php.ini la ligne extension=php_xsl.dll et redémarre serveur et machine mais pas de changement... Et je ne trouve rien de plus sur le web. Je sollicite (pourtant j'aurai voulu m'en dépatouiller seul!!!) encore un efois ta précieuse aide... |
|
|
00
|
|
|
#12 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Dans wamp: clic gauche sur l'icone > PHP > Extension > php_xsl
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
00
|
|
|
#13 | ||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Pendant que je suis là, voici un code permettant d'afficher un descriptif détaillé lors qu'on séléctionne un jeu:
Code :
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||
|
00
|
|
|
#14 |
|
Nouveau Membre du Club
![]() Inscription : août 2007 Messages : 129 ![]() |
Génial!
J'assimile, j'adapte et je vote compte triple pour benji! |
|
|
00
|
|
|
#15 | ||||
|
Nouveau Membre du Club
![]() Inscription : août 2007 Messages : 129 ![]() |
En adaptant ainsi:
Code :
"Jungle speed 0872 Asmodee Je n'ai plus ton jeu en stock, reapprovisionnement le mois prochain! " Et c'est pas mal! Le hic, c'est la mise en forme xsl:le noeud FLD possède plusieurs attributs NAME et je ne vois pas comment xsl peut les distinguer. Pire, chaque nom d'attribut possède des espaces : NAME= "Nom du jeu" Depuis le début, le problème vient de cette structure xmlique : Code :
|
||||
|
|
00
|
|
|
#16 | ||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Peut être en changeant la XSLT de cette façon:
Code :
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||
|
00
|
|
|
#17 |
|
Nouveau Membre du Club
![]() Inscription : août 2007 Messages : 129 ![]() |
Super, c'est exactement ça!
Dernière mini-petite chose : l'encodage... J'ai rajouté Code :
<?xml version="1.0" encoding="ISO-8859-1"?> Par contre, l'extraction ne fonctionne pas pour php, notamment cette ligne: Code :
$query = "REC/FLD[@NAME='Réf'][. = '{$_POST['RECHERCHE']}']/..";
J'ai testé : Code :
$query = "REC/FLD[@NAME='utf8_encode(Réf)'][. = '{$_POST['RECHERCHE']}']/.."; |
|
|
00
|
|
|
#18 |
|
Nouveau Membre du Club
![]() Inscription : août 2007 Messages : 129 ![]() |
En encodant également le document :
Code :
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> |
|
|
00
|
|
|
#19 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Te casse pas la tête et mets de l'utf8 partout.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
00
|
|
|
#20 | ||
|
Nouveau Membre du Club
![]() Inscription : août 2007 Messages : 129 ![]() |
ça ne change rien...
Code :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com