Bonjour à tous
j'aurais besoin d'un dernier coup de main
J'ai creer une xslt que voici :
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:key name="elements" match="*" use="name()"/>
<xsl:template match="/">
<html>
<body>
<table border="1">
<tr>
<xsl:apply-templates select="*" mode="entete"/>
</tr>
<tr>
<xsl:apply-templates select="*" mode="donnees"/>
</tr>
</table>
</body>
</html>
</xsl:template>
<!-- 1ere passe construction des entetes de colonnes-->
<xsl:template match="*" mode="entete">
<xsl:for-each
select="//*[generate-id(.)=generate-id(key('elements',name())[1])]">
<xsl:for-each select="key('elements', name())">
<xsl:if test="position()=1">
<xsl:if test="not(*)">
<td>
<xsl:value-of select="name()"/>
</td>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
<!-- 2nd passe construction des donnees-->
<xsl:template match="*" mode="donnees">
<xsl:for-each
select="//*[generate-id(.)=generate-id(key('elements',name())[1])]">
<tr>
<xsl:for-each select="key('elements', name())">
<xsl:if test="not(*)">
<td>
<xsl:value-of select="."/>
</td>
</xsl:if>
</xsl:for-each>
</tr>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
La création des entêtes fonctionnenent trés bien, me reste un problème
pour générer les données .
Avec le XML suivant :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<voitures>
<voiture>
<modele>luxe</modele>
<siege>
<assise>siege cuir AD</assise>
<appuietete>reglable</appuietete>
</siege>
<siege>
<assise>siege cuir AG</assise>
<appuietete>Pas reglable</appuietete>
</siege>
</voiture>
<voiture>
<modele>sport</modele>
<siege>
<assise>siege baquet AD</assise>
<appuietete></appuietete>
</siege>
<siege>
<assise>siege baquet AG</assise>
<appuietete>reglable</appuietete>
</siege>
<siege>
<assise>siege cuir RD</assise>
<appuietete>reglable</appuietete>
</siege>
<siege>
<assise>siege cuir RG</assise>
<appuietete>pas reglable</appuietete>
</siege>
<option>peinture metallisee</option>
</voiture>
</voitures>
J'obtient un tableau de ce style :
<tr><td>modele</td><td>assise</td><td>appuietete</td><td>option</td></tr>
<tr>
<tr></tr>
<tr></tr>
<tr><td>luxe</td><td>sport</td></tr>
<tr></tr>
<tr><td>siege cuir AD</td><td>siege cuir AG</td><td>siege baquet AD</td><td>siege baquet AG</td><td>siege cuir RD</td><td>siege cuir RG</td></tr>
<tr><td>reglable</td><td>Pas reglable</td><td></td><td>reglable</td><td>reglable</td><td>pas reglable</td></tr>
<tr><td>peinture metallisee</td></tr>
</tr>
ou plus lisible
|modele|assise|appuietete|option|
|luxe|sport|
|siege cuir AD|siege cuir AG|siege baquet AD|siege baquet AG|siege cuir RD|siege cuir RG|
|reglable|reglable|reglable|reglable|pas reglable|
|peinture metallisee|
| representant les <TD>
Alors que je voudrais obtenir
|modele|assise|appuietete|option|
|luxe|siege cuirAD|reglable||
|luxe|siege cuirAG|reglable||
|sport|siege baquet AD||peinture metallisee|
|sport|siege baquet AG|reglable|peinture metallisee|
...
| representant les <TD>
Merci à
PENNEC Vincent
et autres si vous pouvais m'aider ;>
Lasserre Lionel a écrit :
>Ben en fait cet exemple donnerais dans un cas idéal :
>
>|modele|assise|appuietete|option|
>|luxe|siege cuir|reglable||
>|sport|siege baquet||peinture metallisee|
>
>| representant les <TD>
>
>Ce qui ne marche pas avec mon XSLT car tous les tags n'exstent pas dans le premier noeud voiture et appuietete pas dans le second.
>
>
>Je vais essayer la solution que vous me proposez.
>
>Le but etant de faire d'un xml de ce type :
><?xml version="1.0" encoding="UTF-8" standalone="yes"?>
><voitures>
> <voiture>
> <modele>luxe</modele>
> <siege>
> <assise>siege cuir AD</assise>
> <appuietete>reglable</appuietete>
> </siege>
> <siege>
> <assise>siege cuir AG</assise>
> <appuietete>Pas reglable</appuietete>
> </siege>
> </voiture>
> <voiture>
> <modele>sport</modele>
> <siege>
> <assise>siege baquet AD</assise>
> <appuietete></appuietete>
> </siege>
> <siege>
> <assise>siege baquet AG</assise>
> <appuietete>reglable</appuietete>
> </siege>
> <siege>
> <assise>siege cuir RD</assise>
> <appuietete>reglable</appuietete>
> </siege>
> <siege>
> <assise>siege cuir RG</assise>
> <appuietete>pas reglable</appuietete>
> </siege>
> <option>peinture metallisee</option>
> </voiture>
></voitures>
>
>un tableau HTML comme suit :
>
>|modele|assise|appuietete|option|
>|luxe|siege cuir AD|reglable||
>|luxe|siege cuir AG|Pasreglable||
>|sport|siege baquet AD||peinture metallisee|
>|sport|siege baquet AG|reglable|peinture metallisee|
>|sport|siege baquet RD|reglable|peinture metallisee|
>|sport|siege baquet RG|reglable|peinture metallisee|
>
>Mais plus j'avance, plus je pense pas que ce soit réalisable génériquement .
>
>Merci encore et bonne soirée .
>
>L.Lasserre
>
>
>
>
>
>
>
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Received on Wed Dec 7 12:07:30 2005