From: Herve AGNOUX (herve.agnoux@diaam-informatique.com)
Date: 03/10/2002 - 08:23
Le Mercredi 2 Octobre 2002 17:06, Edgard Vidal a écrit :
> Bonjour,
>
> je cherche à faire un test en xsl:if mais j'ai beaucoup de mal puisque je
> debute en xpath.
>
>
> prenons un exemple:
>
> base xml
> <table>
> <row>
> <titre> titre1 </titre>
> <texte> texte1 </texte>
> </row>
>
> <row>
> <titre> titre2 </titre>
> <texte> texte2 </texte>
> </row>
>
> <row>
> <titre> titre3 </titre>
> <texte> texte3 </texte>
> </row>
> ...
> </table>
>
> je veux pouvoir comparer la valeur courante du champ titre avec celle du
> precedent direct (exp.titre3 et titre2)
> (je réecris le titre seulement quand il est différent du précedant.)
>
Une solution :
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/TR/REC-html40"
version="1.0">
<xsl:output method="html" indent="yes"/>
<xsl:key name="group-titre" match="row" use="titre"/>
<xsl:template match="/">
<html><body>
<xsl:apply-templates select="table"/>
</body></html>
</xsl:template>
<xsl:template match="table">
<xsl:for-each select="row[generate-id() = generate-id(key('group-titre',
titre))]">
<p><xsl:apply-templates select="key('group-titre', titre)"/></p>
</xsl:for-each>
</xsl:template>
<xsl:template match="row">
<xsl:if test="position() = 1">
<big><xsl:apply-templates select="titre"/></big>
</xsl:if>
<br /><xsl:apply-templates select="texte"/>
</xsl:template>
</xsl:stylesheet>
J'obtiens :
<html xmlns="http://www.w3.org/TR/REC-html40">
<body>
<p>
<big> titre1 </big>
<br/> texte1 <br/> texte2 </p>
<p>
<big> titre3 </big>
<br/> texte3 </p>
</body>
</html>
Des pistes pour comprendre :
http://www.jenitennison.com/xslt/grouping/index.html
Cordialement.
--
SARL diaam informatique - 04 50 77 12 60
Ingenierie, développements de systèmes d'information
http://www.diaam-informatique.com
--
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)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:06 UTC
webmaster@xmlfr.org
|