🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.text.xml
Article #8633

Re: Comment traiter un paragraphe de texte ?

#8633
From: Alain Ketterlin
Date: Fri, 07 Sep 2001 07:22
75 lines
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-mail
References: <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"