[xml]Les bases pour inclure un fichier xml dans du xhtml/ + php now :)

Les bases pour inclure un fichier xml dans du xhtml/ + php now :) [xml] - XML/XSL - Programmation

Marsh Posté le 24-11-2003 à 15:39:53    

Hello tout le monde.
Hmm, je commence sérieusement à m'interresser au xml aujourd'hui. Alors je me suis dit que je pourrais commencé par faire ma page de liens...
le fichier xml devrait ressembler à ca...


<? echo '<?xml version="1.0" encoding="ISO8859-1" ?>';  
echo '<?xml-stylesheet type="text/css" href="cd_catalog.css"?>';?>
<links>
 <element rubrique="3D">
  <lien1>
   <adresse url="http://www.3dvf.com">3dvf.com</adresse>
   <description>Site de news,...</description>
  </lien1>
  </element>
 <element rubrique="Autres">
  <lien1>
   <adresse url="http://www.google.ch">google.ch</adresse>
   <description>Le meilleur moteur de recherche</description>
  </lien1>
  <lien2>
   <adresse url="http://www.lesjoyeuxdrilles.com/">Les Joyeux Drilles.com</adresse>
   <description>Site d'humour</description>
  </lien2>
 </element>
</links>


 
maintenant le prob c'est pour l'inclure dans mon site...
avant c'était un bête <?include "links.php"?> au milieu de mon fichier xhtml... :D
 
comment s'y prendre pour que de se fichier xml il en ressorte qqch du genre:
 


<h2>3D</h2>
<a href="http://3dvf.com">3dvf.com</a>
<p>Site de news,...</p>


 
J'ai pas mal chercher, mais je me perd trop et j'ai pas trouvé de bons tutoriaux... :o
Des liens, tutoriaux???
Merci d'avances [:dd_005]


Message édité par dd_005 le 27-11-2003 à 11:03:04

---------------
http://blog.numerisound.com
Reply

Marsh Posté le 24-11-2003 à 15:39:53   

Reply

Marsh Posté le 24-11-2003 à 15:53:01    

je crois que j'ai trouvé une piste ... :o
http://forum.hardware.fr/forum2.ph [...] 121&cat=10


---------------
http://blog.numerisound.com
Reply

Marsh Posté le 24-11-2003 à 15:59:07    

bon, a première vue il faut que je crée un fichier xsl...
mais après?, pour l'inclure dans mon fichier xhtml dans un div... c'est possible?
Quelle solution?
 :jap:


---------------
http://blog.numerisound.com
Reply

Marsh Posté le 24-11-2003 à 16:34:33    

aucune reponse mais je suis interessé [:drapo]


---------------
IVG en france
Reply

Marsh Posté le 24-11-2003 à 16:56:09    

Génère ton fichier XHTML via PHP (parsing XSL côté serveur).

Reply

Marsh Posté le 24-11-2003 à 17:20:42    

fastclemmy a écrit :

Génère ton fichier XHTML via PHP (parsing XSL côté serveur).


:jap:
tu pourrais m'en dire plus???
un petit exemple :??:
donc en faite la chose ce présenterais comme ca:
index.php avec include"links.php" -> ce links.php génére un xsl d'après le xml...
je suis pas sûre d'avoir bien compris le truc là...


---------------
http://blog.numerisound.com
Reply

Marsh Posté le 24-11-2003 à 17:34:37    

Ton fichier links.php doit recevoir des arguments (ici un exemple avec parsing via domXML) :

Code :
  1. <?php
  2. # Parametres
  3. $array_params = array('cat' => $cat,
  4.  'debut' => $debut,
  5.  'fin' => $fin,);
  6. # Chargement de la feuille de style
  7. $xslt = domxml_xslt_stylesheet_file('liens_liloli2.xsl');
  8. # Chargement du fichier XML
  9. $xml = domxml_open_file('liens_liloli.xml');
  10. # Transformation
  11. $html = $xslt->process($xml,$array_params);
  12. # Affichage
  13. echo $html->html_dump_mem();
  14. ?>


 
Dans ton fichier xsl tu peux les récupérer en déclarant au début :

Code :
  1. <xsl:param name="cat"/>
  2. <xsl:param name="debut"/>
  3. <xsl:param name="fin"/>


 
Ensuite dans ton fichier XSL tu peux les exploiter avec $cat exemple :

Code :
  1. <xsl:choose>
  2. <xsl:when test="$cat&gt;=1">
  3.     <h1><xsl:value-of select="liens/categorie[@id=$cat]/intitule"/></h1>
  4. </xsl:when>
  5. </xsl:choose>


 
HTH

Reply

Marsh Posté le 24-11-2003 à 17:46:35    

merci beaucoup  :jap:
là j'ai de quoi m'amuser un peu [:ddr555] [:mad_overclocker]


---------------
http://blog.numerisound.com
Reply

Marsh Posté le 24-11-2003 à 19:55:32    

ptite question:
on est obligé de lui donner des paramètres?
si je veux afficher tout mon xml y'en a pas besoin. non?
 
il me dit qu'il trouve pas mes fichiers... (index.xml et xsl)
ca peut venir d'ou? (a part du nom de fichier parce que ca je sais que je l'ai écrit juste :o)
:jap:


Message édité par dd_005 le 24-11-2003 à 19:55:51

---------------
http://blog.numerisound.com
Reply

Marsh Posté le 24-11-2003 à 20:15:36    

a vrai dire ca fait tout planter mon site [:ddr555]
links.xsl

<?echo '<?xml version="1.0" encoding="ISO-8859-1" ?>';?>
  <xsl:stylesheet
    version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" encoding="ISO-8859-1" indent="yes"/>
   
  <xsl:param name="rubrique"/>
  <xsl:template match="/">
    <h1><xsl:value-of select="$rubrique"/></h1>
    <xsl:for-each select="links/rubrique">
     <xsl:choose>
         <h2><a>
              <xsl:attribute name="href"><xsl:value-of select="lien/url"/></xsl:attribute>
              <xsl:value-of select="lien/adresse"/>
              </a></h2>
     <p><xsl:value-of select="description"/></p>
     </xsl:choose>
    </xsl:for-each>
    </xsl:template>
   
  </xsl:stylesheet>


 
links.php

<?
  # Chargement de la feuille de style
  $xslt = domxml_xslt_stylesheet_file('links.xsl');
   
  # Chargement du fichier XML
  $xml = domxml_open_file('links.xml');
   
  # Transformation
  $html = $xslt->process($xml,$array_params);
   
  # Affichage
  echo $html->html_dump_mem();
  ?>


 
ca doit être la première ligne du links xsl qui fait tout cafouiller :D
je renome le fichier en linksxsl.php??
je change cette ligne?
si je mets dans mon site partout des balises <?php ?> au lieu de <? ?> ca va changer qqch??
...
 
ps:y'a surement d'autres choses louches.. :whistle:


---------------
http://blog.numerisound.com
Reply

Marsh Posté le 24-11-2003 à 20:15:36   

Reply

Marsh Posté le 24-11-2003 à 20:33:01    

ca fait quoi le xml ?


---------------
icite ca shoot : albphoto.fr   //   la ca bricole : albworkshop.fr  //  A VENDRE Canon ST-E2
Reply

Marsh Posté le 25-11-2003 à 09:46:22    

pour mon links.php j'ai essayé ce code:

<?
// Allocate a new XSLT processor
$xh = xslt_create();
 
// Process the document, returning the result into the $result variable
$result = xslt_process($xh, 'links.xml', 'links.xsl');
if ($result) {
    print "SUCCESS, sample.xml was transformed by sample.xsl into the \$result";
    print " variable, the \$result variable has the following contents\n<br>\n";
    print "<pre>\n";
    print $result;
    print "</pre>\n";
}
else {
    print "Sorry, sample.xml could not be transformed by sample.xsl into";
    print "  the \$result variable the reason is that " . xslt_error($xh) .  
    print " and the error code is " . xslt_errno($xh);
}
 
xslt_free($xh);
  ?>


 
là l'erreure est clairement sur la 1ère ligne de mon links.xml mais ca fait plus tout planter :)
il doit y avoir ca qui fait foirer (le echo c'était pour essayer mais ca à pas l'aire très concluant sur un fichier.xml... je peux changer le suffixe du fichier sans prob?? fichierxml.php par exemple...:??:)

<? echo '<?xml version="1.0" encoding="ISO8859-1" ?>';  
echo '<?xml-stylesheet type="text/css" href="css.css"?>';?>


 
et ca:

<?xml version="1.0" encoding="ISO-8859-1" ?>


 
:sweat:


---------------
http://blog.numerisound.com
Reply

Marsh Posté le 25-11-2003 à 09:49:18    

C'est quoi le message d'erreur ?

Reply

Marsh Posté le 25-11-2003 à 09:54:46    

Warning: Sablotron error on line 1: XML parser error 5: unclosed token in /home/.sites/23/site165/web/e-portfolio/2/links.php on line 23
Sorry, sample.xml could not be transformed by sample.xsl into and the error code is 2 the $result variable the reason is that XML parser error 5: unclosed token1
 
:o


---------------
http://blog.numerisound.com
Reply

Marsh Posté le 25-11-2003 à 09:56:36    

Forcément... Le code que je t'ai filé c'est pour parser avec DomXML, pas Sablotron...
 
La bonne syntaxe :

Code :
  1. <?php
  2. # Tableau des paramètres
  3. $array_params = array(
  4.               'param.1' => 'hello world',
  5.               'param.2' => 'bonjour le monde');
  6. # Ouverture d'un gestionnaire XSLT
  7. $xh = xslt_create();
  8. # Tranformation des documents
  9. $res = xslt_process($xh, 'test.xml', 'test.xsl',NULL,array(),$array_params);
  10. # Fermeture du gestionnaire
  11. xslt_free($xh);
  12. # Affichage
  13. echo $res;
  14. ?>


 
(tiré de http://www.neokraft.net/docs/xslt/chap4.html)

Reply

Marsh Posté le 25-11-2003 à 09:59:40    

chocoboy reviens !! [:sisicaivrai]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 25-11-2003 à 10:06:15    

:jap:
par contre ca change pas trop le prob d'erreure..
 
Warning: Sablotron error on line 1: XML parser error 5: unclosed token in /home/.sites/23/site165/web/e-portfolio/2/links.php on line 49
 
ligne 49 du links.php

 $res = xslt_process($xh, 'links.xml', 'links.xsl',NULL,array(),$array_params);


---------------
http://blog.numerisound.com
Reply

Marsh Posté le 25-11-2003 à 10:10:34    

fastclemmy > je vais déjà regarder ton lien, il m'a l'air pas trop mal :jap: :jap: :jap: :jap:


---------------
http://blog.numerisound.com
Reply

Marsh Posté le 25-11-2003 à 10:32:06    

bon, j'ai essayé avec leur exemple et ca m'a tout l'aire de fonctionner...
l'erreure provient donc certainement de links.xsl :??:
je vais essayer de transformer petit à petit leur exemple pour arriver à ce que je voudrais...


---------------
http://blog.numerisound.com
Reply

Marsh Posté le 25-11-2003 à 10:42:37    

Oui, commence simple :jap:

Reply

Marsh Posté le 25-11-2003 à 11:16:59    

:sweat: je capte pas pourquoi ca marche pas...
 
mon .xsl

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet
  version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="ISO-8859-1" indent="yes"/>
 
<xsl:template match="/">
 <xsl:for-each select="links/rubrique">
  <h1><xsl:value-of select="links/rubrique/rub"/></h1>
 </xsl:for-each>
 <xsl:apply-templates/>
</xsl:template>
 
</xsl:stylesheet>


 
et ca me donne ca dans la source de ma page...

<h1></h1>
<h1></h1>
 
 3D
   
   
   http://www.3dvf.com
   3dvf.com
   Site de news,...
   
 
 
 Autres
   
   http://www.google.ch
   google.ch
   Le meilleur moteur de recherche
   
   
   http://www.lesjoyeuxdrilles.com
   Les Joyeux Drilles.com
   Site d'humour


---------------
http://blog.numerisound.com
Reply

Marsh Posté le 25-11-2003 à 11:18:34    

mouarf c'est bon :)
je crois que je commence à comprendre.... [:meganne]


---------------
http://blog.numerisound.com
Reply

Marsh Posté le 25-11-2003 à 11:24:04    

bon, en faite je commence à mettre mon texte en forme. le seul hic c'est que j'ai le texte mis en forme+ tout le texte pas mis en forme qui s'affiche...
( http://www.numerisound.com/e-portfolio/2/ section lien)


Message édité par dd_005 le 25-11-2003 à 11:24:17

---------------
http://blog.numerisound.com
Reply

Marsh Posté le 25-11-2003 à 11:37:44    

pour info...
 
..
</xsl:for-each>
<xsl:apply-templates/>
</xsl:template>
...
 
c'était ca qui reprennait tout le texte


---------------
http://blog.numerisound.com
Reply

Marsh Posté le 25-11-2003 à 19:25:29    

DarkLord a écrit :

chocoboy reviens !! [:sisicaivrai]


 
Cocoon 2 bien sur !
ahhhh, quoi ? c'était pas ca la question ?  :D

Reply

Marsh Posté le 25-11-2003 à 19:44:23    

un exemple fait avec cocoon 2 :
 
le cv en HTML : http://81.57.39.164:8080/cocoon/co [...] model.html
 
le XML correspondant :  
http://81.57.39.164:8080/cocoon/co [...] _model.xml
 
le XSL effectuant la transformation XML->HTML :
http://81.57.39.164:8080/cocoon/co [...] agiccv.xsl
 
le XSL effectuant la transformation XML(magiccv)->XML(docbook) :
http://81.57.39.164:8080/cocoon/co [...] ocbook.xsl
 
le XSL:FO généré depuis le XML(docbook) après application des XSL xml2pdf :
http://81.57.39.164:8080/cocoon/co [...] v_model.fo
 
le PDF généré :
http://81.57.39.164:8080/cocoon/co [...] _model.pdf
 
 
... voila un exemple assez sympa et pas trop compliqué en full XML/XSL pour générer un petit CV vers des sorties multiples ...
j'espère que ca te donnera envie de creuser !

Reply

Marsh Posté le 25-11-2003 à 21:03:00    

[:prosterne]

Reply

Marsh Posté le 25-11-2003 à 21:40:08    

merci pour tout ca...
en + j'ai vu un topic sur cocoon 2 et j'avais pas vraiment compris à quoi ca servai [:ddr555]
 
+je découvre xml + je trouve ca intéressant  :)  :jap:  
 
[hs mais pas tant que ca]
En faite je me demandais quand utiliser xml et quand utilisé une base mysql.

  • A première vue je dirais mysql pour des choses complexent/grosses/... (forum, grosse base de donnée,...)
  • xml quand à lui peut très bien convenir pour des choses simples commes news, (petite)bases de liens, gallerie, cv,...

j'aurais aimé avoir votre avis là dessu :)
[/hs]


Message édité par dd_005 le 25-11-2003 à 21:41:30

---------------
http://blog.numerisound.com
Reply

Marsh Posté le 27-11-2003 à 10:56:59    

hmm, une petite question encore...
si j'ai un xml du genre:
<news>
   <ne id=2>
   </ne>
   <ne id=1>
   </ne>
</news>
 
c'est possible de récupèrer l'id de la dernière news via php??
pour faire afficher 3news j'aurais:
$début = 363;
$fin = 360;
 
ca peut fontionner ?
une autre technique??
 
[:ojap]


---------------
http://blog.numerisound.com
Reply

Marsh Posté le 27-11-2003 à 13:28:10    

bon, je crois que pour finir (sauf si quelqu'un a une réponses au question ci-dessu) je vais faire comme ca:
 
<news>
   
</news>
<archives>
   
</archives>
 
mais bon, là j'ai pas vraiment l'impression d'utiliser au max xsl/xml/php... [:pulpipi]


---------------
http://blog.numerisound.com
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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