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

  FORUM HardWare.fr
  Programmation
  XML/XSL

  affichage xml avec xsl

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

affichage xml avec xsl

n°1402964
ty_zen
Posté le 08-07-2006 à 17:29:45  profilanswer
 

bonjour...
suite à la création d'une petit base de données...  
un AUTEUR 'tbl_auteur' qui REALISE 'tbl_réalise' un DOCUMENT 'tbl_document'
j'exécute la requete et génère une page xml comme suit...
<?php
// édition du début du fichier XML
$xml = '<?xml version="1.0" encoding="iso-8859-1"?><rss version="2.0">';
$xml .= '<channel>';  
$xml .= '<title>Essai sur table auteur</title>';
$xml .= '<link>localhost</link>';
$xml .= '<description>Flux RSS des auteurs</description>';
$xml .= '<?xml-stylesheet type="text/xsl" href="flux_rss_rq1.xsl"?>';
 
// connexion a la base
@mysql_connect('localhost','root','') or die("Connexion impossible" );
@mysql_select_db('refdoc') or die("Echec de selection de la base" );
 
// selection
$res=@mysql_query("SELECT distinct
   a.id as ida,  
   a.idlibelle as idliba,
   a.nom as nom,  
   a.prenom as prenom,
   a.mail as email,  
   p.id as idp,  
   p.libelle_prof as libp
   FROM tbl_auteur a  
   left join tbl_prof p on p.id=a.idlibelle
   " );  
   
// extraction des informations et ajout au contenu
while($tab=@mysql_fetch_array($res))
{    
 $nom=$tab[nom];
 $prenom=$tab[prenom];
 $email=$tab[email];
 $libp=$tab[libp];
 $idauteur=$tab[ida];
 
 $xml .= '<item>';
 $xml .= '<auteur>';
 $xml .= '<nom>'.$nom.'</nom>';
 $xml .= '<prenom>'.$prenom.'</prenom>';  
 $xml .= '<email>'.$email.'</email>';
 $xml .= '<libp>'.$libp.'</libp>';
 $xml .= '</auteur>';
 
 $res2=@mysql_query("SELECT
   r.ida as idar,  
   r.idd as iddr,  
   b.id as idb,  
   b.titre as titre,  
   b.fichier_name as fich,  
   b.date_conf as datec,
   b.lieu_conf as lieuc
   FROM tbl_document b
   inner join tbl_realise r on b.id=r.idd
   where r.ida=".$idauteur."
   " );  
   while($tab2=@mysql_fetch_array($res2))
   {  
   $titre=$tab2[titre];
   $fich=$tab2[fich];
   $datec=$tab2[datec];
   $lieuc=$tab2[lieuc];
 
   $xml .= '<document>';
   $xml .= '<titre>'.$titre.'</titre>';
   $xml .= '<fich>'.$fich.'</fich>';
   $xml .= '<datec>'.$datec.'</datec>';
   $xml .= '<lieuc>'.$lieuc.'</lieuc>';
   $xml .= '</document>';
   }
 $xml .= '</item>';
   
}
 
// édition de la fin du fichier XML
$xml .= '</channel>';
$xml .= '</rss>';
 
// écriture dans le fichier
$fp = fopen("flux_rss_rq2.xml", 'w+');
fputs($fp, $xml);
fclose($fp);
@mysql_close();
 
?>
 
jusque là, tout va bien, j'obtiens la page xml suivante... :pt1cable:  
<?xml version="1.0" encoding="iso-8859-1"?><rss version="2.0"><channel><title>Essai sur table auteur</title><link>localhost</link><description>Flux RSS des auteurs</description><?xml-stylesheet type="text/xsl" href="flux_rss_rq1.xsl"?>
<item>
   <auteur>
     <nom>Smith</nom>
     <prenom>Daniel</prenom>
     <email>daniel.smith@army.us</email>
     <libp>M.</libp>
   </auteur>
   <document>
     <titre>Army US</titre>
     <fich>MES_REQUETES.doc</fich>
     <datec>1969</datec>
     <lieuc>Les Deux Tours</lieuc>
  </document>
</item>
<item>
...
</item>
 
</channel></rss>
là tout va bien... l'affichage est bon  :D  
 
par contre mon XSL ne marche pas... :??:  
HELP
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="iso-8859-1" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
 
<xsl:template match="/">
<html>
<head>
 
<title>Auteur</title>
</head>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
 <title>Traitement XSL d'un flux XML</title>
  </head>
   <body>
    <xsl:for-each select="/item">
     <xsl:for-each select="/item/auteur">
     <ul>
     <li>Auteur:
     <xsl:apply-templates select="/item/auteur/libp"/>
     <xsl:apply-templates select="/item/auteur/nom"/>
     <xsl:apply-templates select="/item/auteur/prenom"/>
     <xsl:apply-templates select="/item/auteur/email"/>
     </li>
     </ul>
     <xsl:text>  </xsl:text>
      <xsl:for-each select="/item/document">
      <ul>
      <li>Document:
       <xsl:apply-templates select="/item/document/titre"/>
       <xsl:apply-templates select="/item/document/fich"/>
       <xsl:apply-templates select="/item/document/datec"/>
       <xsl:apply-templates select="/item/document/lieuc"/>
      </li>
      </ul>
      <xsl:text>  </xsl:text>
      </xsl:for-each>
     </xsl:for-each>
    </xsl:for-each>
   </body>
  </html>
 </xsl:template>
</xsl:stylesheet>
 
Alors mon souci est que je dois l'afficher de manière à obtenir les auteurs et en dessous tous leurs documents...
la requete est bonne le XML aussi
mais j'arrive pas à utiliser le XSL
 
sous mozilla... il le met tout à la suite... mais c automatique
sous IE... il met que un XML sans aucun style.............
 
PLEASE HELP ME!!!!!!!!!!

mood
Publicité
Posté le 08-07-2006 à 17:29:45  profilanswer
 

n°1402971
ty_zen
Posté le 08-07-2006 à 17:53:34  profilanswer
 

Recoucou...
bon j'avance tout seul... comme quoi je fais des efforts...
j'ai viré le <rss version="2.0">...<:RSS> qui sert à rien dans mon cas...
mais comme tout roule toujours sur des roulettes... et bien la réponse de mon navigateur est la suivante...
 
 
La page XML ne peut pas être affichée  
Impossible d'afficher l'entrée XML en utilisant la feuille de style XSL. Corrigez l'erreur, puis cliquez sur le bouton Actualiser ou réessayez ultérieurement.  
 
 
--------------------------------------------------------------------------------
 
Balise de fin non attendue à cet emplacement. Erreur de traitement de la ressource http:// ici /flux_rss_rq2.xml. Ligne ...
 
<libp>M.</libp></auteur><document><titre>Intel</titre><fich>Art029AN.pdf</fich&...


Message édité par ty_zen le 08-07-2006 à 17:59:59
n°1402975
ty_zen
Posté le 08-07-2006 à 18:03:00  profilanswer
 

Alors pour info, Mozilla affiche automatiquement ma solution sans prendre en compte mon xsl ... (qui doit être faux)
puisque IE me donne ceci...
 
La page XML ne peut pas être affichée  
Impossible d'afficher l'entrée XML en utilisant la feuille de style XSL. Corrigez l'erreur, puis cliquez sur le bouton Actualiser ou réessayez ultérieurement.  
--------------------------------------------------------------------------------
Balise de fin non attendue à cet emplacement. Erreur de traitement de la ressource http:// ici /flux_rss_rq2.xml. Ligne ...
<libp>M.</libp></auteur><document><titre>Intel</titre><fich>Art029AN.pdf</fich&...
 
Help me...

n°1403138
zapan666
Tout est relatif
Posté le 09-07-2006 à 03:58:30  profilanswer
 

Utilise la balise [ code] (le bouton C/C++ marche aussi, au dessus du texte) sinon c'est illisible
 
 
sinon

Code :
  1. <xsl:apply-templates select="/item/auteur/libp"/>


Il n'y a pas de templace libp...
 

Code :
  1. <?xml version="1.0" encoding="iso-8859-1"?>
  2. <rss version="2.0"><channel><title>Essai sur table auteur</title><link>localhost</link>
  3. <description>Flux RSS des auteurs</description><?xml-stylesheet type="text/xsl" href="flux_rss_rq1.xsl"?>


eeeuuuuhh, tu es sûr de ton coup en mettant la feuille de style ici ? C'est pas avant tout ça, juste après la balise <?xml ?> ?


---------------
my flick r - Just Tab it !
n°1403261
ty_zen
Posté le 09-07-2006 à 16:06:38  profilanswer
 

effectivement, j'ai fait de nombreuses petites erreures...
je reprends après qlq nouveaux tests...
 
le xml

Code :
  1. <?xml version="1.0" encoding="iso-8859-1"?>
  2. <?xml-stylesheet type="text/xsl" href="xslrq.xsl"?>
  3. <!DOCTYPE item1 SYSTEM "xml.dtd">
  4. <item1>
  5.     <item2>
  6.         <auteur>
  7.             <nom>Smith</nom>
  8.             <prenom>Daniel</prenom>
  9.             <email>daniel.smith@army.us</email>
  10.             <libp>M.</libp>
  11.         </auteur>
  12.         <document>
  13.             <titre>Army US</titre>
  14.             <lienf>MES_REQUETES.doc</lienf>
  15.             <datec>1969</datec>
  16.             <lieuc>Les Deux Tours</lieuc>
  17.         </document>
  18.     </item2>
  19.     <item2>
  20.         <auteur>
  21.             <nom>Surry</nom>
  22.             <prenom>Michel</prenom>
  23.             <email>surry.michou@hospital.dead</email>
  24.             <libp>Mme</libp>
  25.         </auteur>
  26.     </item2>
  27.     <item2>
  28.         <auteur><nom>Rabbit</nom>
  29.             <prenom>Roger</prenom>
  30.             <email>roger@lapinou.dream</email>
  31.             <libp>M.</libp>
  32.         </auteur>
  33.         <document>
  34.             <titre>Les Toons font leur spectacle - Tome2</titre>
  35.             <lienf>Art001AC.pdf</lienf>
  36.             <datec>2000</datec>
  37.             <lieuc>Sur terre, juste derrière, à droite</lieuc>
  38.         </document>
  39.         <document>
  40.             <titre>Poème maudit des Toons</titre>
  41.             <lienf>Art001AC.pdf</lienf>
  42.             <datec>2001</datec>
  43.             <lieuc>Paris la capital</lieuc>
  44.         </document>
  45.         <document>
  46.             <titre>Les Toons font leur spectacle - Tome1</titre>
  47.             <lienf></lienf>
  48.             <datec>1999</datec>
  49.             <lieuc>Sur terre, juste derrière, à gauche</lieuc>
  50.         </document>
  51.     </item2>
  52. </item1>


 
voici mon xsl

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3. <!--xsl:output method="html" encoding="iso-8859-1" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" /-->
  4.  <xsl:template match="/">
  5.   <html xmlns="http://www.w3.org/1999/xhtml">
  6.   <head>
  7.    <title>Auteur</title>
  8.    <!--meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"/-->
  9.   </head>
  10.    <body>
  11.     <xsl:for-each select="item1/item2">
  12.      <xsl:for-each select="item1/item2/auteur">
  13.       <ul>
  14.       <li>Auteur:
  15.        <xsl:value-of select="item1/item2/auteur/nom"/>
  16.        <xsl:value-of select="item1/item2/auteur/prenom"/>
  17.        <xsl:value-of select="item1/item2/auteur/email"/>
  18.        <xsl:value-of select="item1/item2/auteur/libp"/>
  19.       </li>
  20.       </ul>
  21.       <xsl:text>  </xsl:text>
  22.       <xsl:for-each select="item1/item2/document">
  23.        <ul>
  24.        <li>Document:
  25.         <xsl:value-of select="item1/item2/document/titre"/>
  26.         <xsl:value-of select="item1/item2/document/lienf"/>
  27.         <xsl:value-of select="item1/item2/document/datec"/>
  28.         <xsl:value-of select="item1/item2/document/lieuc"/>
  29.        </li>
  30.        </ul>
  31.        <xsl:text>  </xsl:text>
  32.        </xsl:for-each>
  33.       </xsl:for-each>
  34.     </xsl:for-each>
  35.    </body>
  36.   </html>
  37.  </xsl:template>
  38. </xsl:stylesheet>


 
et la dtd externe est la suivante xml.dtd

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!ELEMENT item1 (item2*)>
  3. <!ELEMENT item2 (auteur,document*)>
  4. <!ELEMENT auteur (nom,prenom,email,libp)>
  5. <!ELEMENT nom (#PCDATA)>
  6. <!ELEMENT prenom (#PCDATA)>
  7. <!ELEMENT email (#PCDATA)>
  8. <!ELEMENT libp (#PCDATA)>
  9. <!ELEMENT document (titre,lienf,datec,lieuc)>
  10. <!ELEMENT titre (#PCDATA)>
  11. <!ELEMENT lienf (#PCDATA)>
  12. <!ELEMENT datec (#PCDATA)>
  13. <!ELEMENT lieuc (#PCDATA)>


 
c cool, tout est valide... mais rien ne s'affiche!!!!!!!!!!!!!!
vérif sous Oxygen... document valide... association aux schéma xml.dtd OK
 
mais bon, rien de visible sous mozilla!!!


Message édité par ty_zen le 09-07-2006 à 16:28:34
n°1403273
tropicano
Posté le 09-07-2006 à 16:30:56  profilanswer
 

Tu renvoies quoi exactement au navigateur car je vois pas de:

Code :
  1. header( "Content-type: text/xml" );


Tu travailles en local ? sur un serveur ?

n°1403287
ty_zen
Posté le 09-07-2006 à 16:57:08  profilanswer
 

en local...
mais là je t'avoue que je suis perdu...
le:

Code :
  1. header( "Content-type: text/xml" );


tu le place dans quel fichier... le xsl,non?


Message édité par ty_zen le 09-07-2006 à 17:00:20
n°1403296
tropicano
Posté le 09-07-2006 à 17:33:10  profilanswer
 

Zut j'ai pas fait gaffe sur comment tu gérais ton truc:
si j'ai bien compris coté serveur tu crées un ".xml" en retirant des infos d'une base de données et tu ecris ce dernier en dur.
Puis avec ton navigateur tu tentes d'ouvrir directement cet xml. ?
 
Si c'est le cas ce que j'ai dis avant ne sert à rien.
Par contre j'ai fait un petit test avec le xml et le xsl (mais en virant la dtd) que tu as donné 2 messages au dessus et chez moi et ton xsl est bien appliqué mais il ne génere ceci:

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <html xmlns="http://www.w3.org/1999/xhtml"><head><title>Auteur</title></head><body/></html>


C'est à dire rien à afficher. Mais le titre de la page doit changer, si c'est aussi le cas chez toi alors c'est ton xsl qui est bancal .

n°1403297
zapan666
Tout est relatif
Posté le 09-07-2006 à 17:33:15  profilanswer
 


[cpp]
 
     <xsl:for-each select="item1/item2">
      <xsl:for-each select="item1/item2/auteur">
       <ul>
       <li>Auteur:
        <xsl:value-of select="item1/item2/auteur/nom"/>
        <xsl:value-of select="item1/item2/auteur/prenom"/>
        <xsl:value-of select="item1/item2/auteur/email"/>
        <xsl:value-of select="item1/item2/auteur/libp"/>
       </li>
       </ul>
      [/code]
Spa bon ça, si je me trompe pas dans le foreach tu es dans ton element, cad que tu es dans item2, donc le foreach dans item2 ça devrait être

Code :
  1. <xsl:for-each select="auteur">


idem pour les value-of


---------------
my flick r - Just Tab it !
n°1403307
tropicano
Posté le 09-07-2006 à 17:51:45  profilanswer
 

après quelque petit modifs j'ai déjà des résultats plus probants:

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3. <!--xsl:output method="html" encoding="iso-8859-1" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" /-->
  4. <xsl:template match="/">
  5.  <html xmlns="http://www.w3.org/1999/xhtml">
  6.   <head>
  7.    <title>Auteur</title>
  8.    <!--meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"/-->
  9.   </head>
  10.   <body>
  11.    <xsl:for-each select="item1/item2">
  12.     <!-- <xsl:for-each select="item1/item2/auteur"> -->
  13.     <xsl:for-each select="auteur">
  14.      <ul>
  15.       <li>Auteur: <xsl:value-of select="nom"/> 
  16.         <xsl:value-of select="prenom"/>
  17.        <xsl:value-of select="email"/>
  18.        <xsl:value-of select="libp"/>
  19.       </li>
  20.      </ul>
  21.      <!-- <xsl:text>  </xsl:text> -->
  22.      <xsl:for-each select="../document">
  23.       <ul>
  24.        <li>Document: <xsl:value-of select="titre"/>
  25.         <xsl:value-of select="lienf"/>
  26.         <xsl:value-of select="datec"/>
  27.         <xsl:value-of select="lieuc"/>
  28.        </li>
  29.       </ul>
  30.       <!-- <xsl:text>  </xsl:text> -->
  31.      </xsl:for-each>
  32.     </xsl:for-each>
  33.    </xsl:for-each>
  34.   </body>
  35.  </html>
  36. </xsl:template>
  37. </xsl:stylesheet>

mood
Publicité
Posté le 09-07-2006 à 17:51:45  profilanswer
 

n°1403309
ty_zen
Posté le 09-07-2006 à 18:02:00  profilanswer
 

effectivement je génére mon xml avec une page php...
 
par contre, mon collègue me disai que la dtd n'est pas à prendre en compte mais le xsd... (gros souci, je n'arrive pas avec Oxygen à trouver comment le faire)
 
sinon, pour le foreach, merci de l'info, je pouvai toujours courir avec ma solution :)  
 
Question à la con ( encore une )  
 
donc si j'ai mon xml, et mon xsl (modifier comme précédement) je dois pouvoir avoir un petit résultat avec Oxygen...
hélas, j'ai un failed..
en fait le xsl semble mal formé... >Tropicano 's xsl... en fait il donne
"
SystemID: C:\Program Files\EasyPHP\www_refdocs\xslrq.xsl
Description: Failed to parse stylesheet
 
SystemID: C:\Program Files\EasyPHP\www_refdocs\xslrq.xsl
Endroit: 1:0
Description: The processing instruction target matching "[xX][mM][lL]" is not allowed.
"

 
c chelou...non?


Message édité par ty_zen le 09-07-2006 à 18:11:09
n°1403321
ty_zen
Posté le 09-07-2006 à 18:12:45  profilanswer
 

tropicano a écrit :

Zut j'ai pas fait gaffe sur comment tu gérais ton truc:
si j'ai bien compris coté serveur tu crées un ".xml" en retirant des infos d'une base de données et tu ecris ce dernier en dur.
Puis avec ton navigateur tu tentes d'ouvrir directement cet xml. ?
 
Si c'est le cas ce que j'ai dis avant ne sert à rien.
Par contre j'ai fait un petit test avec le xml et le xsl (mais en virant la dtd) que tu as donné 2 messages au dessus et chez moi et ton xsl est bien appliqué mais il ne génere ceci:

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <html xmlns="http://www.w3.org/1999/xhtml"><head><title>Auteur</title></head><body/></html>


C'est à dire rien à afficher. Mais le titre de la page doit changer, si c'est aussi le cas chez toi alors c'est ton xsl qui est bancal .


 
de ce côté là je suis d'accord... j'ai eu aussi ce message...

n°1403339
ty_zen
Posté le 09-07-2006 à 18:37:41  profilanswer
 

rectification!!!!!!!!!!!
 
ça fonctionne...
c'était un souci d'espace!!!
merci beacoup tropicano


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  affichage xml avec xsl

 

Sujets relatifs
[Résolu]Affichage ou non d'un scrollBar[Problème] - Template affichage :??:
Page valide mais problème d'affichage[résolu] affichage sur une requête
Problème d'affichage d'imagesprobleme affichage boucle
JTable : pb affichage cellule ! ne se refresh pas sauf si scroll/clic[PHP/Javascript] PB lors de l'affichage de caractère dans une page
Problème affichage données par extraction MySQL après vérification mdp[SDL] Affichage dans un thread
Plus de sujets relatifs à : affichage xml avec xsl


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