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

  FORUM HardWare.fr
  Programmation
  XML/XSL

  XML + XSL vers tableau HTML

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

XML + XSL vers tableau HTML

n°1897035
Twiddy
Posté le 19-06-2009 à 16:49:42  profilanswer
 

Bonjour,
 
J'ai beau chercher, je n'ai pas trouvé d'exemple pour résoudre "simplement" mon problème. J'ai un fichier XML avec un nombre indéterminé de noeuds sur 3 niveaux :

Code :
  1. <one text="1">
  2.    <two text="2">
  3.       <three text="3"/>
  4.       <three text="3"/>
  5.    </two>
  6.    <two text="2">
  7.       <three text="3"/>
  8.       <three text="3"/>
  9.    </two>
  10. </one>

Je cherche à afficher un tableau de ce type (avec les rowspan qui vont bien):

Code :
  1. <table> 
  2.   <tr>
  3.      <td rowspan=4>1</td>
  4.      <td rowspan=2>2</td>
  5.      <td>3</td>
  6.   </tr>
  7.   <tr>
  8.       <td>3</td>
  9.   </tr>
  10.   <tr>
  11.      <td rowspan=2>2</td>
  12.      <td>3</td> 
  13.   </tr>
  14.   <tr>
  15.       <td>3</td>
  16.   </tr>
  17. </table>

J'ai essayé avec des for-each  mais j'ai l'impression qu'il n'est pas possible d'ouvrir sans fermer une balise (et inversement) au sein d'un boucle de ce type...
 
Merci d'avance pour votre aide.

mood
Publicité
Posté le 19-06-2009 à 16:49:42  profilanswer
 

n°1897174
Twiddy
Posté le 20-06-2009 à 01:06:46  profilanswer
 

Je me suis trouvé une alternative. Voici le XML qui correspond plus à ma cible :

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <?xml-stylesheet type="text/xsl" href="test.xsl"?>
  3. <catalog>
  4. <name>Mes trucs</name>
  5. <cds>
  6.  <cd>
  7.   <title>Empire</title>
  8.   <artist>Bob</artist>
  9.   <trucs>
  10.    <truc>truc 1</truc>
  11.    <truc>truc 2</truc>
  12.    <truc>truc 3</truc>
  13.   </trucs>
  14.  </cd>
  15.  <cd>
  16.   <title>Hide</title>
  17.   <trucs>
  18.    <truc>truc 5</truc>
  19.    <truc>truc 6</truc>
  20.   </trucs>
  21.  </cd>
  22.  <cd>
  23.   <title>Greatest</title>
  24.   <artist>Dolly</artist>
  25.   <trucs>
  26.    <truc>truc 8</truc>
  27.    <truc>truc 9</truc>
  28.    <truc>truc 10</truc>
  29.    <truc>truc 11</truc>
  30.   </trucs>
  31.  </cd>
  32. </cds>
  33. </catalog>

Je l'ai mis en forme avec le XSL suivant:

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3. <xsl:template match="/">
  4. <html>
  5. <body>
  6. <table frame="border" cellspacing="0" cellpading ="0" >
  7. <xsl:for-each select="catalog/cds/cd">
  8.  <tr>
  9.   <xsl:variable name="rows" select="count(trucs/truc)" />
  10.   <td rowspan ="{$rows}"><xsl:value-of select="title"/></td>
  11.   <td rowspan ="{$rows}"><xsl:value-of select="artist"/></td>
  12.   <xsl:for-each select="trucs/truc">
  13.    <xsl:if test="position()=1">
  14.     <td><xsl:value-of select="."/></td>
  15.    </xsl:if>
  16.    <xsl:if test="position()!=1">
  17.      <tr><td><xsl:value-of select="."/></td></tr>
  18.    </xsl:if>
  19.   </xsl:for-each>
  20.  </tr>
  21. </xsl:for-each>
  22. </table>
  23. </body>
  24. </html>
  25. </xsl:template>
  26. </xsl:stylesheet>

Et ça focntionne plutôt bien mais j'ai 2 petites choses qui me gênent :
 - La balise <tr> ligne 9 n'est pas fermée avant l'ouverture de la balise <tr> de la ligne 19, pourtant je ne vois pas comment la fermer proprement...
 - Je suis obligé de traiter le premier élément comme un cas spécial <xsl:if test="position()=1">, n'y a t'il pas une solution pour éviter ça ?


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

  XML + XSL vers tableau HTML

 

Sujets relatifs
[RESOLU] - [XML] Librairie Java <-> XmlExport Excel vers Access à l'aide de VBA
Objet cliquable tableauFormulaire dans un tableau ?
(Novice) Frameset et incompatibilité IE toutes versionsRécupérer valeur entre balise XML
[Résolu sans trop savoir comment] Ma page s'affiche très bastableau avec 3 colonnes dont celle du milieu toujours centrée
[HTML] creer un message d'erreur[ Language C ] Copie du contenu d'un fichier dans un tableau.
Plus de sujets relatifs à : XML + XSL vers tableau HTML


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