PB affichage XML a partir d'un XSL

coubi -  
s.spark Messages postés 2528 Statut Contributeur -
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
A voir également:

7 réponses

coubi
 
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 2528 Statut Contributeur 618
 
Salut,

Peut tu nous donner le fichier xml et le fichier xls ?
0
coubi
 
<?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
coubi
 
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 2528 Statut Contributeur 618
 
Je ne comprend pas bien ce que tu veux, 1 cellules/heure ce n'est pas bien ?
0
coubi
 
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 2528 Statut Contributeur 618
 
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