XSLT en PHP ? + Comment intégrer apache + cocoon ?

XSLT en PHP ? + Comment intégrer apache + cocoon ? - XML/XSL - Programmation

Marsh Posté le 03-06-2004 à 23:05:47    

Salut à tous !
 
Je suis en train d'apprendre le xml-xsl en classe, on a un cours super intéressant. On travaille pour le moment en local avec un cocoon qui tourne sur nos machines windows, avec xml-xsl-sitemap, ça roxx c'est géant. Bon je débute donc je pousse pas du tout les transformations mais je vois déjà bien la puissance de la bête !  
La question que je me pose c'est : Comment faire des transformations xslt sans cocoon ? Mon hébergeur ne propose bien évidemment pas cocoon mais par contre php. Existe t'il qqch de pas mal en php pour faire les transformations xslt ? Si oui, vous connaissez un bon tutorial ?
 
Ma 2ème question est comment intégrer apache et cocoon ? En effet, je me rends pas tellement compte comment faire tourner les 2 en mêmes temps sur une machine (en l'occurence une machine linux locale, tourant sous fedora core 2). C'est juste pour essayer mais je ne sais pas trop comment m'y prendre. Existe t'il un module apache qui permet de rediriger certaines url sur cocoon pour les transformations ? Comment dois-je m'y prendre pour faire fonctionner apache et cocoon pour ne pas avoir d'interference entre les deux ? Est-ce que qqn peut bien m'expliquer ? Serait-il possible d'intéger mysql à cocoon pour se passer totalement d'apache ? Je n'ai pas besoin d'un serveur super robuste c'est juste pour un petit site genre homepage de demonstration  sur un ordi local. Est-ce que se serait plus facile que d'utiliser un éventuel composant php qui remplacerait cocoon ?  
 
Merci de vos réponses et n'hésitez pas à me demander des compléments d'informations, mais je vous avise d'avance que je suis débutant mais motivé !

Reply

Marsh Posté le 03-06-2004 à 23:05:47   

Reply

Marsh Posté le 03-06-2004 à 23:16:15    

Pour les transformations sans cocoon, je pense que tu peux le faire en php directement. Maitenant je ne sais pas du tout comment. Sans doute qu'il existe des classes php toutes faites qui te permettent de le faire. Sinon, tu peux créer un parseur toi meme en php ;)
 
Sinon, pour intégrer cocoon à apache, regardes sur le site de Apache, il y a de la doc là dessus.. J'ai pas eu le temps de vraiment zieuter, mais je crois qu'Apache fait une sorte de proxy entre Cocoon et les requettes, de sorte qu'il soit totalement intégré.
Pour le reste, je ne sais pas encore vraiment. Dès que j'en sais plus, je viendrai le poster, à moins que cela soit toi qui nous devance tous et dans ce cas, postes tes commentaires ici... :)

Reply

Marsh Posté le 08-06-2004 à 13:24:02    

Pour ce qui est des transformation avec PHP 4 ça doit être possible, et avec PHP 5 le traitement des fichiers XML devrait être beaucoup plus poussé mais je n'ai testé ni PHP4 ni PHP5 pour les transfo XSLT donc je ne m'avancerai pas.
 
Pour ce qui est de l'intégration de cocoon dans apache je comprend pas trop ce que tu veux faire. Cocoon est un servlet java qui nécessite donc un moteur de servlets pour fonctionner comme Apache TomCat par exemple. Ensuite tu peux utiliser en plus de ça Apache HTTPD (le serveur web) pour rediriger tes requêtes grâce à ApacheModProxy http://wiki.cocoondev.org/Wiki.jsp?page=ApacheModProxy mais ça non plus j'ai jamais utilisé.  
 
Si tu veux simplement faire tourner Cocoon sur ta machine, tu compiles cocoon et tu le lances avec "cocoon.sh servlet". Il sera autonome et tu pourra t'adresser à lui sur le port 8888 si mes souvenirs sont bons car Cocoon est livré en standard avec une version light de Jetty qui est un moteur de servlets.
 
Voioàl je sais pas si j'ai répondu à tes questions. Demande moi si j'ai pas été clair.

Reply

Marsh Posté le 08-06-2004 à 14:31:36    

Avec PHP, tu peux faire des transformations avec Sablotron :
http://www.php.net/manual/fr/ref.xslt.php
 
Exemple tiré d'un projet :
- message() est une fonction de notre projet, n'en tiens pas compte. Je l'ai laissé dans le code pour qu'il soit plus lisible.  

Code :
  1. <?php
  2. //                                                       Transformation XSLT                                                             //
  3. /* x_trans() transforme un object DOM_XML ou une chaîne XML et un fichier xslt et retourne le résultat sous forme de chaîne ou FALSE
  4. En Entrée :
  5. $xml : String ou Objet DOM_XML
  6. $xsl : nom du fichier xsl
  7. En sortie :
  8. $res : Résultat de la transformation ou false si il y a eu un problème.
  9. */
  10. function x_trans( $xml, $xsl )
  11. {
  12. // En fonction du type de $xml :
  13. switch( gettype( $xml ) )
  14. {
  15.  case "object":
  16.   if( get_class( $xml ) == "domdocument" )
  17.   {
  18.    $xml_data = $xml->dump_mem();
  19.    break;
  20.   }
  21.   else
  22.   {
  23.    message( "ERR_CLASS_DATA_XML", array( 'class' => get_class( $xml ) ) );
  24.    return false;
  25.   }
  26.  case "string":
  27.   $xml_data = $xml;
  28.   break;
  29.  default:
  30.   message( "ERR_TYPE_DATA_XML", array( 'type' => gettype( $xml ) ) );
  31.   return false;
  32. }
  33. // Chargement d'un objet DOM avec le fichier xsl
  34. if( ! file_exists( $xsl ) )
  35. {
  36.  message( "ERR_FILEXML", array( 'file' => $xsl ) );
  37.  return false;
  38. }
  39. $xsl_doc = domxml_open_mem( join( '', file( $xsl ) ) );
  40. $xsl_root = $xsl_doc->document_element();
  41. // Création d'un analyseur XSLT
  42. $xh = xslt_create();
  43. // Tableau des arguments
  44. $args = array( 'xml' => $xml_data, 'xsl' => $xsl_doc->dump_mem() );
  45. // Appel du process XSTL
  46. $res = @xslt_process( $xh, "arg:xml", "arg:xsl", NULL, $args );
  47. if( trim( $res ) == "" )
  48. {
  49.  $res = false;
  50.  message( "ERR_XSLT", $args );
  51. }
  52. // Libération de l'analyseur.
  53. xslt_free( $xh );
  54. return $res;
  55. }
  56. ?>


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 18-09-2004 à 20:15:23    

en un mot pour la transformation XSL depuis php : domXML :) ya tout ce qui faut et c'est très puissant

Reply

Marsh Posté le 18-09-2004 à 20:27:40    

c de la merde domXML
 
perso pour le XSLT en PHP, un bon vieux system et xsltproc rulez :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed