PB affichage XML a partir d'un XSL

Fermé
coubi - 19 juin 2007 à 15:20
s.spark Messages postés 2485 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 - 19 juin 2007 à 18:59
PB Affichage XML grace à une feuille de style XSL

Voila j'ai un tableau et je voudrais que mon tableau se mette à la forme de mes donnée.
J'ai un cours qui dure 1h et donc qui prenne 2 cellules de mon tableau.

...
<td>8h00</td>
<xsl:for-each select="edt/cours"><xsl:if test="when/jour = 'lundi'"><xsl:choose><xsl:when test="when/heure_debut = '08h00'"><xsl:variable name="dur" select="when/duree"/></xsl:when></xsl:choose></xsl:if></xsl:for-each>
<td rowspan="{$dur}">...</td>


merci

7 réponses

C'est bon j'ai trouvé la solution, en fait le truc c'est qu'il fallait que je mette tout mon code contenu dans le <td> dans ma boucle <xsl:for-each> juste apres ma variable.

<td>8h00</td>
	  <xsl:for-each select="edt/cours">
	    <xsl:if test="jour = 'lundi'">
		  <xsl:choose>
		    <xsl:when test="heure_debut = '08h00'">
			  <xsl:variable name="heurefin"><xsl:value-of select="heure_fin"/></xsl:variable>
			  <xsl:variable name="fin" select="substring($heurefin,1,2)"/>
			  <xsl:variable name="int" select="number($fin)"/>
			  <xsl:variable name="dur" select="number((($int)-08)*2)"/>
			  <td rowspan="{$dur}">
			  <table>
			    <tr>
				  <td id="cours">
				    <xsl:value-of select="type_cours"/> - <xsl:value-of select="matiere"/>
				  </td>
				</tr>
				<tr>
				  <td id="qui">
				    <xsl:value-of select="enseignants"/>
				  </td>
				</tr>
				<tr>
				  <td id="ou">
				    <xsl:value-of select="lieu"/>
				  </td>
				</tr>
			  </table>
		      </td>
			</xsl:when>
			<xsl:otherwise><td></td></xsl:otherwise>
		  </xsl:choose>
		</xsl:if>
	  </xsl:for-each>


merci quand meme !!!!
1
s.spark Messages postés 2485 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 618
19 juin 2007 à 15:59
Salut,

Peut tu nous donner le fichier xml et le fichier xls ?
0
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet href="./style.xsl" type="text/xsl"?>
<!DOCTYPE edt SYSTEM 'groupes.dtd'>
<edt>
<cours>
<when>
<periode_debut>25/01/2007</periode_debut>
<periode_fin>22/03/2007</periode_fin>
<jour>lundi</jour>
<heure_debut>08h00</heure_debut>
<heure_fin>10h00</heure_fin>
<duree>2</duree>
</when>
<where>
<lieu>D001-003,I224(X)</lieu>
</where>
<what>
<matiere>Gestion</matiere>
<type_cours>TP</type_cours>
</what>
<who>
<participants>311</participants>
<enseignants>CARNOHAN Elisabeth</enseignants>
</who>
<others>
<description></description>
</others>
</cours>
<cours>
<when>
<periode_debut>25/01/2007</periode_debut>
<periode_fin>22/03/2007</periode_fin>
<jour>lundi</jour>
<heure_debut>14h00</heure_debut>
<heure_fin>15h00</heure_fin>
<duree>2</duree>
</when>
<where>
<lieu>D001-003,I224(X)</lieu>
</where>
<what>
<matiere>JAVA</matiere>
<type_cours>TP</type_cours>
</what>
<who>
<participants>311</participants>
<enseignants>FOURNIER JP</enseignants>
</who>
<others>
<description></description>
</others>
</cours>
</edt>




---------------------------------------------------------------------------------------

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2004/xpath-functions"
xmlns:xdt="http://www.w3.org/2004/07/xpath-datatypes">
<xsl:output method="xml" version="1.0" encoding="iso-8859-1" indent="yes"/>
<xsl:template match="/">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>Agenda</title>
<style type="text/css">
td{text-align:center;}
#table_cours{background:#FF9966; font-family:Verdana, Arial, Helvetica, sans-serif; font:bold;}
#cours{font-family:Arial, Helvetica, sans-serif; font-size:16px; font:large; color:#000099}
#qui{font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#999999}
#ou{font-family:Georgia, "Times New Roman", Times, serif; font-size:10px; font:oblique;}
</style>
</head>

<body>
<div align="center">
<h1>Agenda du groupe <xsl:value-of select="edt/cours/who/participants"/></h1>
</div>

<div align="center">

<table id="table_cours" border="2">
<tr>
<td></td>
<td><h1>Lundi</h1></td>
<td><h1>Mardi</h1></td>
<td><h1>Mercredi</h1></td>
<td><h1>Jeudi</h1></td>
<td><h1>Vendredi</h1></td>
<td><h1>Samedi</h1></td>
<td><h1>Dimanche</h1></td>
</tr>
<tr>
<td>8h00</td>
<xsl:for-each select="edt/cours">
<xsl:if test="when/jour = 'lundi'">
<xsl:choose>
<xsl:when test="when/heure_debut = '08h00'">
<xsl:variable name="dur" select="when/duree"/>
</xsl:when>
</xsl:choose>
</xsl:if>
</xsl:for-each>
<td>
<xsl:for-each select="edt/cours">
<xsl:if test="when/jour = 'lundi'">
<xsl:choose>
<xsl:when test="when/heure_debut = '08h00'">
<table>
<tr>
<td id="cours"><xsl:value-of select="what/type_cours"/> - <xsl:value-of select="what/matiere"/></td>
</tr>
<tr>
<td id="qui"><xsl:value-of select="who/enseignants"/></td>
</tr>
<tr>
<td id="ou"><xsl:value-of select="where/lieu"/></td>
</tr>
</table>
</xsl:when>
</xsl:choose>
</xsl:if>
</xsl:for-each>
</td>

<!-- pareil mais pour tous les autres jours de la semaine -->
<!--
<td><xsl:for-each select="edt/cours"><xsl:if test="when/jour = 'mardi'"><xsl:choose><xsl:when test="when/heure_debut = '08h00'"><table><tr><td id="cours"><xsl:value-of select="what/type_cours"/> - <xsl:value-of select="what/matiere"/></td></tr><tr><td id="qui"><xsl:value-of select="who/enseignants"/></td></tr><tr><td id="ou"><xsl:value-of select="where/lieu"/></td></tr></table></xsl:when></xsl:choose></xsl:if></xsl:for-each></td>
<td><xsl:for-each select="edt/cours"><xsl:if test="when/jour = 'mercredi'"><xsl:choose><xsl:when test="when/heure_debut = '08h00'"><table><tr><td id="cours"><xsl:value-of select="what/type_cours"/> - <xsl:value-of select="what/matiere"/></td></tr><tr><td id="qui"><xsl:value-of select="who/enseignants"/></td></tr><tr><td id="ou"><xsl:value-of select="where/lieu"/></td></tr></table></xsl:when></xsl:choose></xsl:if></xsl:for-each></td>
<td><xsl:for-each select="edt/cours"><xsl:if test="when/jour = 'jeudi'"><xsl:choose><xsl:when test="when/heure_debut = '08h00'"><table><tr><td id="cours"><xsl:value-of select="what/type_cours"/> - <xsl:value-of select="what/matiere"/></td></tr><tr><td id="qui"><xsl:value-of select="who/enseignants"/></td></tr><tr><td id="ou"><xsl:value-of select="where/lieu"/></td></tr></table></xsl:when></xsl:choose></xsl:if></xsl:for-each></td>
<td><xsl:for-each
select="edt/cours"><xsl:if test="when/jour = 'vendredi'"><xsl:choose><xsl:when test="when/heure_debut = '08h00'"><table><tr><td id="cours"><xsl:value-of select="what/type_cours"/> - <xsl:value-of select="what/matiere"/></td></tr><tr><td id="qui"><xsl:value-of select="who/enseignants"/></td></tr><tr><td id="ou"><xsl:value-of select="where/lieu"/></td></tr></table></xsl:when></xsl:choose></xsl:if></xsl:for-each></td>
<td><xsl:for-each select="edt/cours"><xsl:if test="when/jour = 'samedi'"><xsl:choose><xsl:when test="when/heure_debut = '08h00'"><table><tr><td id="cours"><xsl:value-of select="what/type_cours"/> - <xsl:value-of select="what/matiere"/></td></tr><tr><td id="qui"><xsl:value-of select="who/enseignants"/></td></tr><tr><td id="ou"><xsl:value-of select="where/lieu"/></td></tr></table></xsl:when></xsl:choose></xsl:if></xsl:for-each></td>
<td><xsl:for-each select="edt/cours"><xsl:if test="when/jour = 'dimanche'"><xsl:choose><xsl:when test="when/heure_debut = '08h00'"><table><tr><td id="cours"><xsl:value-of select="what/type_cours"/> - <xsl:value-of select="what/matiere"/></td></tr><tr><td id="qui"><xsl:value-of select="who/enseignants"/></td></tr><tr><td id="ou"><xsl:value-of select="where/lieu"/></td></tr></table></xsl:when></xsl:choose></xsl:if></xsl:for-each></td>
-->
</tr>
</table>
</div>
</body>
</html>

</xsl:template>
</xsl:stylesheet>





------------------------------------------------

Voila désolé pour le code, je ne l'ai pas indenté correctement, mais je pense que la premiere ligne est visible.
Merci de votre aide
0
désolé j'ai oublié que pour continuer mon developpement, que j'avais retirais la partie embetante qui est :

...
<td>8h00</td>
<xsl:for-each select="edt/cours">
<xsl:if test="when/jour = 'lundi'">
<xsl:choose>
<xsl:when test="when/heure_debut = '08h00'">
<xsl:variable name="dur" select="when/duree"/>
</xsl:when>
</xsl:choose>
</xsl:if>
</xsl:for-each>
<td rowspan="{$dur}">
...

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
s.spark Messages postés 2485 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 618
19 juin 2007 à 16:59
Je ne comprend pas bien ce que tu veux, 1 cellules/heure ce n'est pas bien ?
0
Le probleme c'est que c'est pour gérer l'affichage des cours, et il y a des cours qui ne dure pas que 30min, il faut donc que je prenne en compte la durée afin de pouvoir faire voir à l'utilisateur que le cours dure plus que 30min.
0
s.spark Messages postés 2485 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 618
19 juin 2007 à 18:59
Content que tu es trouvé, perso le code que tu donne n'affiche plus les cours.

Autre chose, je n'aime pas trop tous ces tableaux imbriqués ... tu pourrais faire mieux !
0