From: Benoît Barré (benoitbarre@free.fr)
Date: 05/09/2002 - 09:20
En réponse à "Gregoor, Van Der Eyken" <geyken@esual.com>:
>
> bonjour,
>
> -c'etait une concatenation de chaine pour avoir un chemin que j'avais
> cru demandée...(genre de liste chainee)
> (pas compris pourquoi la remarque ne s'adapter "qu'à" une section, ce
> n'etait pas non + le but ?)
Oui, c'est but mais j'imagine que Gilles va traiter d'autres tags; d'ou la
remarque. Il suffit d'essayer avec :
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<r>
<xsl:apply-templates select="section"/>
</r>
</xsl:template>
<xsl:template match="section">
<xsl:param name="pid"/>
<xsl:variable name="id">
<xsl:value-of select="concat($pid,'.',position())"/>
</xsl:variable>
<s>
<id>Section: <xsl:value-of select="$id"/></id>
<xsl:apply-templates>
<xsl:with-param name="pid" select="$id"/>
</xsl:apply-templates>
</s>
</xsl:template>
<xsl:template match="title">
<h1><xsl:value-of select="."/></h1>
</xsl:template>
<xsl:template match="para">
<p><xsl:value-of select="."/></p>
</xsl:template>
</xsl:stylesheet>
La numérotation n'est plus bonne (ce qui est normal car position() se réfère à
la clause select.
>
> donc ai je tout faux sur la sortie attendue ? même si celle n'est pas
> finalement inutilement "complexe" (pourriez vous alors me montrer un
> exemple de sortie afin de comprendre plus le besoin car j'avoue ne pas
> situer le problème (ni d'ailleurs les solutions sans contexte).
Pas tout faux : la preuve, ça marche avec select="section" :)
>
>
> root
> section 0.1
> section 0.1.1
> section 0.1.2
> section 0.2
> section
> 0.2.1
>
Avec cette FdS, ça doit marcher.
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<r>
<xsl:apply-templates select="section"/>
</r>
</xsl:template>
<xsl:template match="section">
<xsl:param name="pid"/>
<xsl:variable name="id">
<xsl:value-of select="concat($pid,'.',count(preceding-sibling::section)
+1)"/>
</xsl:variable>
<s>
<id>Section: <xsl:value-of select="$id"/></id>
<xsl:apply-templates>
<xsl:with-param name="pid" select="$id"/>
</xsl:apply-templates>
</s>
</xsl:template>
<xsl:template match="title">
<h1><xsl:value-of select="."/></h1>
</xsl:template>
<xsl:template match="para">
<p><xsl:value-of select="."/></p>
</xsl:template>
</xsl:stylesheet>
Ai-je été clair ? Je l'espère.
Benoît
--
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
|