Mise en forme avec XSL

david.bianchini -  
 david.bianchini -
Salut!
J'ai 1 pb de mise en forme de mon doc Xml avec une feuille Xsl.

Mon fichier .xml a à peu près cette gueule:

<ITEM>
<TITRE-ITEM/>
<TEXTE>
<EXEMPLE/>
<INFOBULLE/>
</TEXTE>
<PARAGRAPHE>
<TITRE-P/>
<TEXTE>
<EXEMPLE/>
<INFOBULLE/>
</TEXTE>
<PARTIE>
<TITRE-PARTIE/>
<TEXTE>

... etc

</ITEM>

Jusque là, rien de bien compliqué.
Sauf que je voudrais que les données texte contenues dans les
sous-éléments "EXEMPLE" et "INFOBULLE" s'affichent différemment que celles contenus dans "TEXTE" (l'élément parent donc).

Ca marche très bien avec une CSS, mais j'y arrive pas avec Xsl.

Est-ce que je dois utiliser les templates, for-each ...?

Merci!

1 réponse

  1. Br@scoo
     
    Et bien pour te repondr, tu peux effectivement utiliser des "templates" ainsi que des "for-each" :

    Les "for-each" pour boucler TEXTE et les "templates" pour rediriger les traitement différent pour l'affichage des elements EXEMPLE et INFOBULLE.

    Est-ce que tu as commence a faire un bout de code xsl... je pourrai t'aider si tu le souhaite...

    Te faire une ptite demo sinon...

    Br@scoo
    0
    1. david.bianchini
       
      Ouais, j'ai commencé ma feuille Xsl.
      Voilà ce que ça donne:

      <xsl:template match="/">

      <SPAN STYLE="display:block; text-transform:uppercase; font- family:verdana; font-size:12pt; font-weight:bold;
      color=#0000CC; margin-left:250pt; margin-bottom:50pt">
      <xsl:value-of select="ITEM/TITRE-ITEM"/>
      </SPAN>


      <xsl:apply-templates select="ITEM/PARAGRAPHE"/>


      </xsl:template>


      <xsl:template match="PARAGRAPHE">

      <SPAN STYLE="display:block; margin-top:20pt; margin-
      bottom:20pt; margin-left:3pt; font-family:verdana; font-
      weight:bold; font-size:12pt; color=#0000CC">
      <xsl:value-of select="TITRE-P"/>
      </SPAN>
      <xsl:apply-templates select="TEXTE"/>


      <xsl:for-each select="PARTIE">

      <SPAN STYLE="display:block; margin-top:20pt; margin-
      bottom:20pt; font-family:verdana; font-weight:bold; font-
      size:10pt; color=#0000CC">
      <xsl:value-of select="TITRE-PARTIE"/>
      </SPAN>
      <xsl:apply-templates select="TEXTE"/>


      <xsl:for-each select="SS-PARTIE">
      <SPAN STYLE="display:block; margin-top:20pt; margin-
      bottom:17pt; margin-left:3pt; font-family:verdana; font-
      weight:bold; font-size:9pt; color=#0000CC">
      <xsl:value-of select="TITRE-SS-PARTIE"/>
      </SPAN>

      <xsl:apply-templates select="TEXTE"/>


      <xsl:for-each select="GRAIN">
      <SPAN STYLE="display:block; margin-top:12pt; margin-left:3pt; font-family:verdana; font-weight:bold; font-size:8pt; color=#0000CC">
      <xsl:value-of select="TITRE-GRAIN"/>
      </SPAN>
      <xsl:apply-templates select="TEXTE"/>


      </xsl:for-each>

      </xsl:for-each>

      </xsl:for-each>


      </xsl:template>

      <xsl:template match="TEXTE">
      <SPAN STYLE="display:block; margin-top:10pt; font-family:verdana;
      font-size:8pt">
      <xsl:value-of select="."/>
      </SPAN>
      </xsl:template>

      <xsl:template match="INFOBULLE">
      <SPAN STYLE="color=#0000CC; font-weight:bold">
      <xsl:value-of select="."/>
      </SPAN>
      </xsl:template>

      </xsl:stylesheet>


      ______________________________________________________


      Voilà. C'est pas correct, vu que mon template "INFOBULLE" me sert à rien ici.
      Mais tout mon pb est là!





      0