PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 24-04-2011 11:11:56

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

SQL => XML => XSLT & PHP => HTML

Bonjour,

Jusqu'à présent, lorsque je voulais afficher du contenu, je faisais la requète sur ma page puis je traitais directement les résultats dans une boucle while.

Voulant jouer avec le XML, j'extrais désormais les données de ma boucle while dans un fichier XML puis muni d'un fichier XSL je génère le HTML.

Je voulais savoir si c'est un bonne méthode ? Commentaire et critique !

Merci !

PS :

Pour la gestion du XML, j'utilise DomDocument et XSLTProcessor.

Je me pose aussi une autre question (mais ce sera peut-être un autre sujet), le XSL propose de pouvoir trier les données. Jusqu'à présent je faisais des requètes très complètes de façon à obtenir exactement la sortie que je voulais, ce que je compte garder. Du coup, j'utilise le XSL pour la mise en page des données.

Dernière modification par moijhd (24-04-2011 11:16:35)

Hors ligne

#2 24-04-2011 11:37:29

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : SQL => XML => XSLT & PHP => HTML

Saluton,
Extraire les données d'une base de données pour les "écrire" dans un fichier XML c'est tout sauf performant.
D'autre part, je milite plutôt pour des SGBD épais, donc pour les tris (filtrage WHERE ou HAVING) et les classements (ORDER BY), je confie cela à SQL qui avec ces index est outillé pour.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 24-04-2011 12:56:26

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Re : SQL => XML => XSLT & PHP => HTML

Après quelques recherches :

Que pensez-vous des systèmes de template à partir de XML & XSLT ?

Dernière modification par moijhd (25-04-2011 08:24:23)

Hors ligne

#4 25-04-2011 13:35:52

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : SQL => XML => XSLT & PHP => HTML

Bonjour,

Dans les grandes lignes sache que je partage l'avis de MK concernant cette technologie.
Ensuite il faut prendre en compte le contexte de production et le contexte d'utilisation qui lui est associé. Par exemple, pour un site léger voire moyen et pour une utilisation d'affichage de news (afficher les 5 dernières news postées dans un contexte template) la technologie peut répondre à bon nombre de cahier des charges sans être pénalisant (niveau acceptable) aux temps de réponse du site. C'est cependant très technique et demande du savoir faire. Pour les sites plus gros, il faut éviter les hébergements mutualisés car la solution technique nécessite d'importantes ressources de calcul/mémoire pour impacter le moins possible les performances d'un tel site.

Ensuite je pense malgré tout que c'est une technologie qu'il faut savoir maîtriser sur le marché du travail et qui offre des possibilités techniques intéressantes dans certains cas. Puis les machines évoluent ainsi que leur performances et il n'est pas impossible qu'une telle technologie devienne un standard incontournable.

Jc


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#5 25-04-2011 19:46:13

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Re : SQL => XML => XSLT & PHP => HTML

Bon et bien je pense que je vais tenter ^^ Je vais bien voir ce que cela me donne sur des choses simples !
Je vais avoir un stage avec lequel je vais devoir travailler du XML, c'est l'occasion (et aussi la raison) !

Je prendrais tout autre avis s'il y en a qui suivent !

Merci !

Hors ligne

#6 25-04-2011 20:49:18

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : SQL => XML => XSLT & PHP => HTML

Bonjour,

Puisque tu es interressé, voici quelques infos techniques pour bien commencer.

1) Il est possible de transformer des données XML reçues par l'intermédiaire qu'une requête AJAX en un format que les fonctions JavaScript de la page savent traiter.
2) La technologie peut également être mise en oeuvre afin de modifier la structure de l'arbre DOM de la page et ainsi modifier l'aspect de cette dernière
3) Les bibliothèques Javascript telles que Dojo intègrent la prise en compte de ces spécificités dans leurs supports du DOM et de XML. D'autres, telles que Sarissa ou xmljs, sont dédiées à la mise en oeuvre de XML et XSLT.
4) Liste des contrôles ActiveX non threadés relatifs au DOM est (+récent au +ancien): Msxml2.FreeThreadedDOMDocument.5.0, MSXML2.FreeThreadedDOMDocument.4.0, MSXML2LFreeThreadedDOMDocument.3.0.
5) Liste des contrôles ActiveX permettant de charger des feuilles de style XSL est (+récent au +ancien): Msxml2.XSLTemplate.5.0, Msxml2.XSLTemplate.4.0, MSXML2.XSLTemplate.3.0

Bonne continuation smile

Dernière modification par Jc (25-04-2011 20:50:01)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#7 25-04-2011 20:51:50

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Re : SQL => XML => XSLT & PHP => HTML

Okay ! Je vais regarder tout ça !

Merci !

Hors ligne

#8 08-08-2011 22:02:18

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Re : SQL => XML => XSLT & PHP => HTML

Hey !

Je reprends et relance le sujet pour un détail sur lequel je suis tombé et que j'ai du mal à gérer !

On suppose que je dispose d'un fichier PHP qui retourne des documents XML à la volée suivant une requête. Je recupère en AJAX (avec Prototype) le document XML généré, je le transforme avec une feuille XSL en utilisant un processeur côté client bien sûr. Et je génère par exemple un tableau HTML avec un THEAD et un TBODY et tout ce que je veux bien mettre dedans.

Le problème, c'est que si je veux ajouter une ligne dynamiquement au tableau (par exemple dans le TBODY) que je viens de créer, comment suis-je censé procéder ?
Soit je génère un nouveau document XML avec les données précédentes et les données de la nouvelle ligne puis je mets à jour (données que l'on a dans des variables ou qui seront issues d'une nouvelle requête) ?
Soit je ne génère que la nouvelle ligne puis je l'ajoute aux autres lignes (mais alors il faut que j'ai à la fois le code XML correspondant à cette ligne et la feuille XSL correspondante si je veux garder le même mode de fonctionnement ?)

Le truc c'est que je voudrais générer tout contenu HTML à partir d'une feuille XSL donc à partir de données XML ! La première méthode me parait lourde. La seconde délicate.

Avez-vous de meilleures idées ? Le but étant de garder toute génération de HTML à partir d'un document XSL.
Cela doit être assez confus ! Je préciserais suivant les retours.

Dernière modification par moijhd (08-08-2011 22:07:19)

Hors ligne

#9 08-08-2011 22:14:35

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : SQL => XML => XSLT & PHP => HTML

Bonsoir,

En fait, il faut bien comprendre que si une fois le contenu HTML généré à partir de XSLT et XML, si tu as besoin de rajouter du contenu dynamique au HTML généré c'est que tu as oublié un truc au départ, et il faut dans ce cas mettre à jour ton template XSLT ou ton fichier XML en conséquence. La technologie est utilisée dans ce but : avoir le rendu souhaité sans toucher à rien. (De plus ça te coûte suffisamment de ressources pour le faire ainsi..)
Maintenant si tu as besoin de part ailleurs de toucher dynamiquement au contenu (il y a un souci quelque part^^) pour rester constructif, il ne faut pas oublier que tu es en Javascript = outil de prédilection pour manipuler le DOM. Donc tu as tous les outils en javascript pour faire ce que tu veux.

++

Dernière modification par Jc (08-08-2011 22:16:08)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#10 09-08-2011 08:48:46

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Re : SQL => XML => XSLT & PHP => HTML

Si mon tableau représente des données que je veux modifier, je dois pouvoir ajouter et supprimer des lignes. Je charge donc mon tableau initial puis je le modifie. C'est là que je fais mes modifications "dynamiques" du côte client. Donc il n'y a a priori pas d'erreur.

Il est vrai alors que je possède déjà le template chargé puis que je l'ai utilisé une première fois. Donc, si j'ai besoin de modifier les données mon fameux tableau, étant donnée que j'ai déjà récupéré le fichier XML en Javascript (dans une variable), il me suffit de le modifier avec DOM puis de le transformer à nouveaux avec mon template ?

Hors ligne

#11 09-08-2011 10:23:08

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Re : SQL => XML => XSLT & PHP => HTML

Si je vais plus loin, je n'ai fait que déplacer le problème...Maintenant j'édite un document XML en supposant que je connais sa structure ce que j'esquivais jusqu'à présent en ne faisant du côté client qu'une mise en page le document XML étant généré en PHP. Du coup, il faudrait que je fasse une requête qui me retourne le morceau de XML à ajouter à la feuille XML que j'ai déjà chargé ? De façon là encore à ne pas présupposer la connaissance de la structure du document XML du côté client :s

Dernière modification par moijhd (09-08-2011 10:24:26)

Hors ligne

#12 09-08-2011 13:28:32

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : SQL => XML => XSLT & PHP => HTML

Bonjour,

En fait la technologie utilisée est assez conséquente à charger en terme de ressources, dont si tu as besoin de retravailler le résultat, le jeu n'en vaut pas la chandelle je pense. Il y a d'autres moyens pour faire cela "plus économiquement". Mais bon, ce n'est que mon avis et tu peux continuer à faire ainsi hein^^. Sinon, toujours pour rester constructif, je pense que la meilleure solution c'est de mettre tes données XML en cache pour les retravailler en local à ta guise.

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#13 09-08-2011 16:17:39

moijhd
Membre
Inscription : 13-06-2009
Messages : 167

Re : SQL => XML => XSLT & PHP => HTML

Je ne fais toujours rien ! Je pense à faire smile

J'essaie d'arriver à un modèle théorique à peu près convenable - bien que lourd - et voir ce que cela donne ^^

Merci pour vous indications, je vais encore réfléchir !

Hors ligne

#14 09-08-2011 19:12:14

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : SQL => XML => XSLT & PHP => HTML

En fait c'est un système qui est utilisé par exemple pour de la mise en forme automatisée (news, catalogues produits, ...) dont la partie mise à jour est faite aux niveaux des données en amont seulement. (Je parle de façon générale qu'on soit d'accord).

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#15 29-08-2012 19:06:24

péachepé
Membre
Inscription : 28-02-2011
Messages : 8

Re : SQL => XML => XSLT & PHP => HTML

Bonjour,

Dans la même famille, intéressé par XML et RDF, j'utilise DOMXML dans du PHP pour générer un arbre en RDF-XML pour décrire... les données d'un timbre. Ca, j'ai réussi. Mon problème, c'est que je souhaite rajouter une ligne pour déclarer le lien entre ma XSL stylesheet et mon arbre XML ; pour ça aussi je passe par DOMXML mais ça ne marche pas. J'ignore pourquoi.

Ce dont je m'aperçois, c'est qu'ayant utilisé la fonction createElement(), j'ouvre mes cotes et entre le nom de l'élément : ?xml-stylesheet ... ? et PHP me retourne une erreur... un problème avec les points d'interrogation ? Placés dans des cotes, ne devraient-ils pas s'afficher sagement comme n'importe quel caractère entre cotes ?

La fonction DOMDocument() me permet d'y passer les paramètres : 'xml' et '1.0' et cela synthétise dans l'arbre le prologue XML, n'y a t-il pas une fonction qui permette de faire de même avec ma déclaration de feuille de style XSL ?

<?php  
$dom=new DOMDocument('1.0','UTF-8');

//Définition des espaces de noms ------------------

$ele1=$dom->createElement('rdf:RDF');
$att1=$dom->createAttribute('xmlns:dc');
$att1->value='http://purl.org/dc/elements/1.1/';
$ele1->appendChild($att1);
$att2=$dom->createAttribute('xmlns:foaf');
$att2->value='http://xmlns.com/foaf/0.1/';
$ele1->appendChild($att2);
$att3=$dom->createAttribute('xmlns:image');
$att3->value='http://purl.org/rss/1.0/modules/image/';
$ele1->appendChild($att3);
$att4=$dom->createAttribute('xmlns:rdf');
$att4->value='http://www.w3.org/1999/02/22-rdf-syntax-ns#';
$ele1->appendChild($att4);
$att5=$dom->createAttribute('xmlns:rdfs');
$att5->value='http://www.w3.org/2000/01/rdf-schema#';
$ele1->appendChild($att5);
$att6=$dom->createAttribute('xmlns:geo');
$att6->value='http://www.w3.org/2003/01/geo/wgs84_pos#';
$ele1->appendChild($att6);
$att7=$dom->createAttribute('xmlns:owl');
$att7->value='http://www.w3.org/2002/07/owl#';
$ele1->appendChild($att7);
$att8=$dom->createAttribute('xmlns:xsd');
$att8->value='http://www.w3.org/2001/XMLSchema#';
$ele1->appendChild($att8);
$att9=$dom->createAttribute('xmlns:skos');
$att9->value='http://www.w3.org/2004/02/skos/core#';
$ele1->appendChild($att9);
$dom->appendChild($ele1);

//Déclaration de feuille de style XSLT ---------------------------

$styleele1=$dom->createElement('xml-stylesheet');
$styleatt1=$dom->createAttribute('href');
$styleatt1->value='fichier.xsl';
$styleatt2=$dom->createAttribute('type');
$styleatt2->value='text/xsl';
$styleele1->appendChild($styleatt1);
$styleele1->appendChild($styleatt2);

 

En vous remerciant par avance d'une aide éventuelle !

Hors ligne

#16 06-09-2012 21:05:02

péachepé
Membre
Inscription : 28-02-2011
Messages : 8

Re : SQL => XML => XSLT & PHP => HTML

Salut,

Je m'auto-réponds histoire de dire que j'ai trouvé ma réponse à ma propre question : pour relier mon document XML à ma feuille de style XSLT, j'ai utilisé la fonction DOMDocument::createProcessingInstruction() dans laquelle j'ai spécifié les arguments : 'xml-stylesheet', 'type="text/xsl" href="fichier.xsl"'. Synthétisant ainsi dans l'arbre XML généré par DOM la ligne précisant qu'il était relié à un XSL.


<?php  
$dom=new DOMDocument('1.0','UTF-8');

//Déclaration de feuille de style XSLT ---------------------------

$xslt=$dom->createProcessingInstruction('xml-stylesheet', 'type="text/xsl", href="style fiches.xml"');
$dom->appendChild($xslt);
?>
 

A voir sur : http://php.net/manual/en/domdocument.cr … uction.php, merci PHP Manual !

Hors ligne

#17 19-09-2012 11:36:15

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : SQL => XML => XSLT & PHP => HTML

Bonjour à tous,

Me revoilà wink Il faut bien comprendre qu'idéalement quand on utilise cette techno c'est de ne pas générer du XML à partir de PHP : c'est tout sauf productif dans ce contexte. Il est vrai qu'avec MySQL on a pas encore trop le choix, mais sinon avec d'autres SGBDR (postGreSQL, ...) au lieu de sortir les données en php, on laisse le SGBDR écrire le XML directement sur disque, ensuite on applique les transformations côté serveur tiers et/ou client (selon les cas).
En complément de ce que j'avais dit à moijhd, il vaut mieux utiliser cela lorsque la volumétrie des données considéré est relativement peu importante et que leur mise à jour peu fréquente.

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

Pied de page des forums