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: 05/12/2005 - 17:25

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

PENNEC Vincent a écrit :

>Bon désolé je ne comprends toujours pas ce que vous voulez mettre dans vos entêtes (non je ne fais pas exprès ;) )
>
>Peut-être qu'avec un véritable exemple ?
><voitures>
> <voiture>
> <modele>luxe</modele>
> <siege>
> <assise>siege cuir</assise>
> <appuietete>reglable<appuietete>
> </siege>
> </voiture>
> <voiture>
> <modele>sport</modele>
> <siege>
> <assise>siege baquet</assise>
> </siege>
> <option>peinture metallisee</option>
> </voiture>
></voitures>
>
>Cela donnerait quoi ?
>
>
>Essayez peut-être ceci qui transformera votre structure arbo en une structure "à plat" (2 lignes ; n colonnes)
>
> ..
> <body>
> <table border="1">
> <tr>
> <xsl:apply-templates select="*" mode="entete" />
> </tr>
> <tr>
> <xsl:apply-templates select="*" mode="contenu" />
> </tr>
> </table>
> </body>
> ..
>
>
> <!-- 1ere passe construction des entetes de colonnes-->
> <xsl:template match="*" mode="entete">
> <td><xsl:value-of select="name()" /></td>
> <xsl:apply-templates select="*" mode="entete"/>
> </xsl:template>
>
> <!-- 2eme passe recuperation du contenu -->
> <xsl:template match="*" mode="contenu">
> <td><xsl:value-of select="text()" /></td>
> <xsl:apply-templates select="*" mode="contenu"/>
> </xsl:template>
>
>
>
>-----Message d'origine-----
>De : Lasserre Lionel [mailto:llasserre@gfi.fr]
>Envoyé : lundi 5 décembre 2005 15:17
>À : xml-tech@xmlfr.org
>Objet : [xml-tech] Re: XML To HTML
>
>Merci d'avance pour l'interet ;>
>L'objectif recherché est de faire un tableau HTML comprenant une ligne d'entête (correspondant aux nom des noeuds XML) suivi de plusieurs lignes de données.
>
>Dans le cas suivant :
>XML :
>
><NoeudRoot>
> <NoeudMulti>
> <Valeur1> 1 /
> <Valeur2> 2 /
> <Valeur3> 3 /
> <Noeud>
> <ValeurA> A /
> <ValeurB> B /
> ...
>
>j'arrive à génerer un tableau HTML comme ceci :
>|Valeur1|Valeur2|Valeur3|Noeud|ValeurA|ValeurB| ceci etant la ligne
>|Valeur1|Valeur2|Valeur3|Noeud|ValeurA|ValeurB| d'entête
>|1|2|3|A|B| ceci etant les lignes de valeurs .
>
>| représentant les <td>
>
>Le XSLT que j'utilise n'as pas beaucoup d'interet car il ne fonctionne que dans ce cas simple, le voici quand même créé a l'aide du code de MR <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
> <xsl:output method="html"/>
> <xsl:template match="/">
> <html>
> <body>
> <p>
> <table border="1">
> <tbody>
> <tr>
> <xsl:for-each select="root/*[position()=1]//*">
> <xsl:if test="not(*)">
> <td>
> <xsl:value-of select="name()"/>
> </td>
> </xsl:if>
> </xsl:for-each>
> </tr>
> <xsl:apply-templates select="*"/>
> </tbody>
> </table>
> </p>
> </body>
> </html>
> </xsl:template>
>
> <xsl:template match="*">
> <xsl:choose>
> <xsl:when test="*//*">
> <tr>
> <xsl:apply-templates select="*"/>
> </tr>
> </xsl:when>
> <xsl:when test="*">
> <xsl:apply-templates select="*"/>
> </xsl:when>
> <xsl:otherwise>
> <td>
> <xsl:value-of select="."/>
> </td>
> </xsl:otherwise>
> </xsl:choose>
> </xsl:template>
></xsl:stylesheet>
>
>
>Mon problème intervient lorsque <Noeud> est un noeud multi, et là forcement ca ne fonctionne plus vu que ma création d'entête place autant de <Noeud> que ce qu'il y a dans la première banche (normal c'est ce qu'on lui demande), et les données ne sont pas au mieux .
>
>Je ne sasi pas trop comment resoudre mon problème, ni même par quel bout l'attaquer :)
>
>Le but etant de transformer le XML en tableau HTM lineaire (un peu comme un csv en fait).
>
>Toute aide est la bienvenu et encore merci .
>
>L.Lasserre
>
>
>
>PENNEC Vincent a écrit :
>
>
>
>>Bonjour,
>>
>>Quel est exactement l'objectif recherché ?
>>
>>
>>
>>
>>
>>>Je ne sais pas encore si ce sera possible, car le but est de faire un
>>>tableau HTML avec une ligne d'entête.
>>>
>>>
>>>
>>>
>>Qu'est-ce que vous entendez par ligne d'entête ?
>>
>>
>>
>>
>>
>>>NoeudRoot
>>> NoeudMulti
>>> Valeur1
>>> Valeur2
>>> Valeur3
>>> NoeudMulti11
>>> Valeur1
>>> Valeur2
>>> NoeudMulti12
>>> Valeur1
>>> Valeur2
>>> ....
>>>
>>>J'ai du mal à pouvoir recreer les lignes du style
>>>NoeudMulti|Valeur1|Valeur2|Valeur3|NoeudMulti11|Valeur1|Valeur2
>>>
>>>
>>>
>>>
>>Pouvez-vous donner le résultat attendu pour les premières lignes ? Y compris le code html parce qu'on (je) ne saisit pas si le | symbolise un <td> ou une concaténation des différents name() pour aboutir à un "identifiant".
>>
>>Un présentation arborescente ne suffit-elle pas pour votre besoin ?
>>Si dessous une (mauvaise) adaptation du code de MR pour une présentation verticale.
>>
>><?xml version="1.0"?>
>><xsl:stylesheet version="1.0"
>>xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
>> <xsl:output method="html" encoding="Windows-1252"/>
>>
>> <xsl:template match="/*">
>> <html>
>>
>> <style type="text/css">
>> .FERME {background-color:#BBBBCC; font-family: Verdana; font-size: 8pt; cursor:pointer;}
>> .OUVERT { background-color:#EEF3FB; font-style:blod;font-family:
>>Verdana;
>>font-size: 8pt; cursor:pointer;}
>> .DERNIER { font-style:blod;font-family: Verdana; font-size: 8pt;}
>> .VALEURNOEUD { background-color:#FFFFCC; font-family: Verdana; font-size:
>>8pt;}
>> .ATTRIBUT {color:#999999;}
>> </style>
>>
>>
>> <script language="javascript">
>> function affiche_cache(objet){
>> ObjetCible=objet.parentNode.nextSibling;
>> if (ObjetCible.style.display=="none"){
>> ObjetCible.style.display="block";
>> objet.className="OUVERT";
>> }
>> else{
>> ObjetCible.style.display="none";
>> objet.className="FERME";
>> }
>> }
>> </script>
>>
>> <body>
>> <xsl:apply-templates select="*"/>
>> </body>
>> </html>
>> </xsl:template>
>>
>>
>> <xsl:template match="*">
>> <table border='1' style="margin-left:15px">
>> <tr>
>> <td><b> <xsl:value-of select="name()"/></b>
>> (<span class="ATTRIBUT"><xsl:for-each
>>select="@*"><b><xsl:value-of select="name()"/></b> : <i><xsl:value-of
>>select="."/></i>&#160;&#160;</xsl:for-each></span>)
>> </td>
>> </tr>
>>
>> <xsl:if test="*">
>> <tr>
>> <td>
>> <xsl:apply-templates select="*"/>
>> </td>
>> </tr>
>> </xsl:if>
>> </table>
>> </xsl:template>
>></xsl:stylesheet>
>>
>>
>>-----Message d'origine-----
>>De : Lasserre Lionel [mailto:llasserre@gfi.fr] Envoyé : vendredi 2
>>décembre 2005 17:16 À : xml-tech@xmlfr.org Objet : [xml-tech] XML To
>>HTML
>>
>>Merci de l'aide, j'avance doucement, car effectivement il ne semble pas simple de présenter les éléments verticalement.
>>j'ai reussit à faire un tableau avec un XML simple style NoeudRoot
>> NoeudMulti
>> Valeur1
>> Valeur2
>> Valeur3
>>qui devient
>> NoeudMulti|Valeur1|Valeur2|Valeur3
>>
>>Par contre si je me retrouve avec
>>NoeudRoot
>> NoeudMulti
>> Valeur1
>> Valeur2
>> Valeur3
>> NoeudMulti11
>> Valeur1
>> Valeur2
>> NoeudMulti12
>> Valeur1
>> Valeur2
>> ....
>>
>>J'ai du mal à pouvoir recreer les lignes du style
>>NoeudMulti|Valeur1|Valeur2|Valeur3|NoeudMulti11|Valeur1|Valeur2
>>NoeudMulti|Valeur1|Valeur2|Valeur3|NoeudMulti12|Valeur1|Valeur2
>>
>>Car je n'arrive à a recuperer les differentes valeur des ancètres de NoeudMulti1?, Je recherche une solution et vous informes de la suite ...
>>
>>Cdt
>>Lionel
>>
>>
>>
>>Matthieu Ricaud a écrit :
>>
>>
>>
>>
>>
>>>Bonjour,
>>>
>>>J'ai déjà eu l'occasion de faire cela, la xsl suivante est générique
>>>et affiche n'importe quel fichier xml sous la forme d'un tableau HTML
>>>avec en prime les attributs. Les cellules sont cliquables pour
>>>afficher les sous-noeud (c'est du javascript).
>>>
>>><?xml version="1.0"?>
>>>...</xsl:stylesheet>
>>>
>>>Il n'affiche pas les commentaires, ni les "processing-instructions" et
>>>puis ce serait peut être mieux que le tableau présente les élément
>>>verticalement plutôt qu'horizontalement...
>>>
>>>si vous l'améliorez, n'hésitez pas à en faire part :)
>>>
>>>Cordialement,
>>>
>>>Matthieu
>>>
>>>-----Message d'origine-----
>>>De : xml-tech-bounce@xmlfr.org [mailto:xml-tech-bounce@xmlfr.org]De la
>>>part de Lasserre Lionel Envoyé : mercredi 23 novembre 2005 15:36 À :
>>>xml-tech@xmlfr.org Objet : [xml-tech] XML To HTML
>>>
>>>
>>>Bonjour à tous,
>>>
>>>je cherche à transformer un fichier XML en tableau HTLM par XSLT, en
>>>tentant tant que faire se peut, de faire une XSLT générique
>>>(applicable à tous mes xml).
>>>
>>>Je ne sais pas encore si ce sera possible, car le but est de faire un
>>>tableau HTML avec une ligne d'entête.
>>>
>>>D'ou ma première question :)
>>>est il possible d'extraire le nom des noeuds et non pas leur valeur ?
>>>
>>>le but etant en partant d'un xml de type :
>>>
>>><root>
>>> <Exercice>
>>> ValeurExercice
>>> <Noeud1>
>>> ValeurNoeud1
>>> <SousNoeud1>ValeurSousNoeud1</SousNoeud1>
>>> <SousNoeud2>ValeurSousNoeud2</SousNoeud2>
>>> ...
>>> </Noeud1>
>>> ...
>>> </Exercice>
>>> ...
>>></root>
>>>
>>>de générer un Tableau html du type :
>>><table>
>>> <tr>
>>> <td>Noeud1</td><td>SousNoeud1</td><td>SousNoeud2</td> ...
>>> </tr>
>>> <tr>
>>>
>>><td>ValeurNoeud1</td><td>ValeurSousNoeud1</td><td>ValeurSousNoeud2</td> ...
>>> </tr>
>>> ...
>>></table>
>>>
>>>Si vous connaissais une xslt dejà existante .... ;>
>>>
>>>
>>>Merci d'avance .
>>>
>>>Lionel
>>>
>>>
>>>
>>>
>>>
>>>
>>
>>
>
>
>--
>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)
>
>
>
>
>

--
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 Mon Dec 5 18:26:11 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