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!
A voir également:

1 réponse

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
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