Cliquez ici.
Accueil
 chercher             Plan du site             Info (English version) 
L'histoire de XML s'écrit en ce moment même. XMLfr vous aide à la suivre et à en dégager les tendances.Les listes de discussions XMLfr sont à votre disposition pour réagir sur nos articles ou simplement poser une question.Si vous ètes passionnée(e) par XML, pourquoi ne pas en faire votre métier ?XMLfr n'est heureusement pas le seul site où l'on parle de XML. Découvrez les autres grâce à XMLfr et à l'ODP.Les partenaires grâce auxquels XMLfr peut se développer.Pour tout savoir sur XMLfr.XMLfr sans fil, c'est possible !Pour ceux qui veulent vraiment en savoir plus sur XML.L'index du site.
 Commentaires et questions non techniques.Commentaires et questions techniques.

 
Cliquez ici.

xml tech : Technologies XML

[xml-tech] Re: XML To HTML

[xml-tech] Re: XML To HTML

Auteur: Lasserre Lionel <llasserre@gfi.fr>
Date: 07/12/2005 - 11:06

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

Archive générée par hypermail 2.1.8 le 01/01/2006 - 21:42 UTC

webmaster@xmlfr.org

 

xml tech

Discussions techniques au sujet de XML.

Cette liste est à votre disposition pour discuter en français de tout sujet technique lié à XML.



Devenez rédacteur <XML>fr et contribuez au développement du xml francophone !
Les documents publiés sur ce site le sont sous licence "Open Content"
Conception graphique
  l.henriot@online.fr  

Conception, réalisation et hébergement