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: Problème XSL

[xml-tech] Re: Problème XSL

Auteur: Eric van der Vlist <vdv@dyomedea.com>
Date: 16/12/2004 - 17:33
X-Mailer: Evolution 2.0.2

Bonjour,

Le jeudi 16 décembre 2004 à 17:07 +0100, Neric a écrit :
> Bonjour,
>
> Je suis débutant dans le monde XML - XSL, et j'ai un problème.
> Je n'arrive pas à transformer le contenu d'une balise.

Si je peux me permettre d'être pointilleux, une balise est
"<detail_struct>" (balise de début) ou "</detail_struct>" (balise de
fin) et XSLT ne permet pas d'accéder aux balises en tant que telles. Ce
que vous voulez transformer c'est donc le contenu d'un élément et non
d'une balise :-) ...

>
> Voici un bout de mon XML
>
> ...
> <structure nb_col="3" nb_niv="1">
> <detail_struct>
> <val><texte>au 01.08.2004</texte></val>
> </detail_struct>
> <detail_struct>
> <val><texte>Taux de l'épargne<BR/>Prime d'Etat
> comprise<ref_note>*</ref_note></texte></val>
> </detail_struct>
> <detail_struct>
> <val><texte>Taux du prêt</texte></val>
> </detail_struct>
> </structure>
> ...
>
>
> et voici mon code XSL correspondant :
>
> ...
> <table>
> <tr>
> <xsl:for-each select="structure/detail_struct">
> <td><xsl:value-of select="val/texte"/></td>
> </xsl:for-each>
> </tr>
> </table>
> ...
>
>
>
> Mon problème se situe à cet endroit du XML :
> <texte>Taux de l'épargne<BR/>Prime d'Etat
> comprise<ref_note>*</ref_note></texte>
>
> 1/ le <BR/> : je voudrais qu'il apparaisse dans mon html, hors là, il
> disparait
> 2/ la balise <ref_note>, je voudrais transformer * en <sup>*</sup>
>
> Je n'ai aucune idée de comment faire cela, car les balise sont
> imbriquées. Si <ref_note> était en dehors de texte, je n'aurais pas eu
> de problème, mais là je sèche...

Il ne faut pas utiliser xsl:value-of qui converti le noeud sélectionné
en chaîne de caractères.

Si vous n'aviez pas besoin de convertir certains éléments, vous pourriez
remplacer votre xsl:value-of par xsl:copy-of qui copierait ce que vous
sélectionnez en en gardant la structure.

Puisque vous voulez transformer certains éléments, il faut utiliser des
templates :

...
<table>
<tr>
<xsl:for-each select="structure/detail_struct">
<td><xsl:apply-templates select="val/texte" mode="texte"/></td>
</xsl:for-each>
</tr>
</table>
...

<!-- l'utilisation du mode "texte" permet d'éviter d'interférer avec les
templates que vous avez déjà écrit -->

<xsl:template match="texte" mode="texte">
  <!-- On s'intéresse au contenu de l'élément texte, on applique donc
les templates -->
  <xsl:apply-templates mode="texte"/>
</xsl:template>

<xsl:template match="ref_note" mode="texte">
 <!-- on transforme cet élément en "sup" -->
 <sup>
   <xsl:apply-templates mode="texte"/>
 </sup>
</xsl:template>

<xsl:template match="*" mode="texte">
 <!-- On recopie les autres éléments avec leurs attributs -->
 <xsl:copy>
  <xsl:copy-of select="@*"/>
  <xsl:apply-templates mode="texte"/>
 </xsl:copy>
</xsl:template>

Cordialement,

Eric van der Vlist

-- 
Tired of typing XML tags?
                                                       http://wikiml.org
------------------------------------------------------------------------
Eric van der Vlist       http://xmlfr.org            http://dyomedea.com
(ISO) RELAX NG   ISBN:0-596-00421-4 http://oreilly.com/catalog/relax
(W3C) XML Schema ISBN:0-596-00252-1 http://oreilly.com/catalog/xmlschema
------------------------------------------------------------------------
--
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 Thu Dec 16 18:34:03 2004

Archive générée par hypermail 2.1.8 le 31/12/2004 - 11:12 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