Bonjour.
J'ai un code pour générer du XML à partir de requetes en base de données.
Le but est de généraliser les routines d'affichages grâce à XML. Les nodes XML sont groupés afin de garder les liens d'origine (plusieurs lignes dans la base peuvent être regroupées dans un seul node XML de niveau supérieur).
Par exemple
<ROOTDATA>MY DATA
<CHAMP1>123456-8
<CHAMP2>123456
<CHAMP3>TEST1
<CHAMP4>TOTO
<CHAMP5>ESSAI1
<CHAMP6>.0000000599309420182615</CHAMP6>
<CHAMP7>1.03727596766392</CHAMP7>
<CHAMP8>.0000000732489291334307</CHAMP8>
</CHAMP5>
</CHAMP4>
</CHAMP3>
</CHAMP2>
</CHAMP1>
<CHAMP1>123456-80
<CHAMP2>123456
<CHAMP3>TEST1
<CHAMP4>TOTO
<CHAMP5>ESSAI1
<CHAMP6>.0000000599309420182615</CHAMP6>
<CHAMP7>1.03727596766392</CHAMP7>
<CHAMP8>.0000000732489291334307</CHAMP8>
</CHAMP5>
<CHAMP5>ESSAI2
<CHAMP6>.0000000463912801174008</CHAMP6>
<CHAMP7>.863908887410566</CHAMP7>
<CHAMP8>.0000000567004534768232</CHAMP8>
</CHAMP5>
</CHAMP4>
</CHAMP3>
</CHAMP2>
</CHAMP1>
</ROOTDATA>
Ensuite, j'ai essayé d'ecrire un XSLT pour passer de ce XML vers un truc en HTML (joli si possible) et c'est là que les choses se compliquent.
Quand j'essaie de boucler sur mes noeuds, et d'afficher les valeurs, je n'arrive pas à les isoler. Si j'affiche le contenu de CHAMP4, je vais obtenir toute les données inférieures (c'est à dire ESSAI1, les valeurs numériques, puis ESSAI2, etc...).
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlnssl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>Reference Data</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th align="left">1</th>
</tr>
<xsl:for-each select="ROOTDATA/CHAMP1">
<tr>
<td><xsl:value-of select="CHAMP2"/></td>
<xsl:for-each select="CHAMP2">
<table border="5">
<tr>
<td><xsl:value-of select="CHAMP3"/></td>
<xsl:for-each select="CHAMP3">
<td><xsl:value-of select="CHAMP4"/></td>
<td>
<xsl:for-each select="CHAMP4/CHAMP5">
<table border="5">
<tr>
<td><xsl:value-of select="CHAMP5"/></td>
<td><xsl:value-of select="CHAMP6"/></td>
<td><xsl:value-of select="CHAMP7"/></td>
<td><xsl:value-of select="CHAMP8"/></td>
</tr>
</table>
</xsl:for-each>
</td>
</tr>
</table>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Comment puis-je indiquer au moteur de transformation que je ne veux pas tout le contenu mais juste le niveau courant ???
D'avance merci
Fabien
Partager