Article View: fr.comp.text.xml
Article #8633Re: Comment traiter un paragraphe de texte ?
From: Alain Ketterlin
Date: Fri, 07 Sep 2001 07:22
Date: Fri, 07 Sep 2001 07:22
75 lines
3557 bytes
3557 bytes
Sebastien Lefebvre <slefebvre@i2m.fr> writes:
> <recette>
> <titre>le g�teau au chocolat</titre>
> <contenu>
> C'est la recette du <gras>G�teau au chocolat</gras>
> Pour faire ce g�teau, aller chercher vos ingr�dients sur :
> <lien><url>http://bidule.fr/ingredients.html</url><texte>les
> ingredients</texte></lien></contenu>
> </recette>
>
> Je souhaite sortir de l'HTML (pour commencer) avec ce texte et en
> particulier :
>
> que ce qui est contenu dans le tag <gras> apparaisse en gras
> (idem pour italique et soulign�)
<xsl:template match="gras">
<b><:xl:apply-templates select="*|text()"/></b>
</xsl:template>
Note : <xsl:apply-templates>, pas <xsl:value-of>
> que ce qui est dans le lien apparaisse comme un hyperlien
<xsl:template match="lien">
<a href="{lien}"><xsl:apply-templates select="texte"/></a>
</xsl:template>
Note : toujours <xsl:apply-templates>, pour le cas ou tu veux mettre
du <gras> dans le <texte>
> que les retours chariots (\r) que j'ai dans mon texte soient pr�serv�
> dans leur pr�sentation et donc qu'ils soient remplac�s par des <br>
C'est une mauvaise idee a mon avis. Il vaudrait mieux inserer une
balise si tu veux un passage a la ligne. Le retour chariot n'a pas de
statut special en XML, c'est un caractere comme un autre. Et ton
systeme de remplacement va s'effondrer si tu changes de systeme
d'exploitation.
> J'ai d�j� un template qui remplace les \r en <br> et il fonctionne
Meme dans le cas suivant :
<gras>chocolat</gras>
(beaucoup)
Je dis cela parce que le template qui fait le remplacement doit agir
sur les noeuds text(), et il faut faire gaffe de conserver au moins un
blanc avant et/ou apres si il est precede ou suivi d'une balise (du
genre <gras>).
> mais comment faire pour � la fois traiter ce probl�me en plus de la
> mise en forme des mots ?
Tu definis ton template magique avec select="text()", tu recuperes les
deux autres ci-dessus, et tu ajoutes :
<xsl:template match="contenu">
<xsl:apply-templates select="*|text()"/>
</xsl:template>
> PS : j'utilise Cocoon 1.8.2 sous Linux
Donc Xalan (le processeur XSLT). Ca ne devrait pas avoir d'importance
(du moment que ce n'est pas MSXML avec un namespace farfelu).
Tout cela est quand meme relativement elementaire. Je te conseille de
lire la rec. XSLT au moins une fois en entier, a
http://www.w3.org/TR/xslt, parce qu'a mon avis c'est un modele de
lisibilite (malheureusement trop peu suivi).
-- Alain.
Technical Details
Message-ID:
<wyvgivjwht.fsf@polya.u-strasbg.fr>Path:
arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!newsfeed.stanford.edu!news.tele.dk!small.news.tele.dk!212.43.194.69!fr.clara.net!heighliner.fr.clara.net!teaser.fr!enst!univ-angers.fr!news.unicaen.fr!univ-lille1.fr!news.u-strasbg.fr!not-for-mailReferences:
<3B987076.9080402@i2m.fr>Show Full Headers
Complete Article Headers
X-Google-Language: FRENCH,ASCII X-Google-Thread: 114f60,6cb4207ddf4154ff X-Google-Attributes: gid114f60,public X-Google-ArrivalTime: 2001-09-07 01:10:13 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!newsfeed.stanford.edu!news.tele.dk!small.news.tele.dk!212.43.194.69!fr.clara.net!heighliner.fr.clara.net!teaser.fr!enst!univ-angers.fr!news.unicaen.fr!univ-lille1.fr!news.u-strasbg.fr!not-for-mail From: Alain Ketterlin <alain@dpt-info.u-strasbg.fr> Newsgroups: fr.comp.text.xml Subject: Re: Comment traiter un paragraphe de texte ? Date: 07 Sep 2001 09:22:38 +0200 Organization: CRC - Universite Louis Pasteur Strasbourg France Lines: 75 Message-ID: <wyvgivjwht.fsf@polya.u-strasbg.fr> References: <3B987076.9080402@i2m.fr> NNTP-Posting-Host: polya.u-strasbg.fr X-Trace: news.u-strasbg.fr 999854938 18255 130.79.44.199 (7 Sep 2001 09:28:58 GMT) X-Complaints-To: usenet@u-strasbg.fr NNTP-Posting-Date: 7 Sep 2001 09:28:58 GMT X-Newsreader: Gnus v5.6.45/XEmacs 21.1 - "Capitol Reef"