--
Bonjour,
Il y a 3 petites erreurs qui empêchent votre feuille de fonctionner
correctement :
o Il faut remplacer preceding-sibling:: par preceding::
o Supprimer le [1]
o Déréférencer la variable noeudPcdt par un $
Noter : On obtient une solution plus rapide pour ce type de problème en
utilisant la fonction generate-id() (cf "Muenchian method")
Le script suivant fait le travail :
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="clef2" match="//ref" use="authors/p/@last" />
<xsl:template match="biblio">
<!--***Regroupe les publi par auteur****-->
<html>
<head>
<title>Publications classees par auteurs</title>
</head>
<body>
<xsl:for-each select="//p">
<xsl:sort select="@last" />
<xsl:variable name="auteurCourant" select="@last" />
<xsl:variable name="noeudPcdt" select="preceding::node()" />
<xsl:if test="not($noeudPcdt[@last=$auteurCourant])">
<h3>Publication de
<xsl:value-of select="$auteurCourant" />
<br />
</h3>
<xsl:for-each select="key('clef2',$auteurCourant)">
<xsl:value-of select="./title" />
<br />
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Salutations,
--
Joël Martin-Gallausiaux, Sun Microsystems Educational Services, France.
Tel : 33 1 4143 1724 Mobile : 33 6 7468 8206
Philippe Dubreuil wrote:
>Bonjour,
>Je bosse sur un biblio assez importante organisée de la maniere suivante
><biblio>
>
> <ref..>
> <authors>
> <p last=toto ....
> <p last=titi ....
> </authors>
> <title>
> </title>
> </ref>
>
>et je voudrais afficher l'ensemble des publications d'un auteur quelque
>soit son classement ds la liste d'auteur.
>ci joint la feuille de style réalisée qui pose encore pb
>le test marche pas!!
>
>
><?xml version="1.0"?>
><xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
><xsl:key name="clef2" match="//reference" use="authors/p/@last"/>
><xsl:template match="bibliography">
>
>
><!--***Regroupe les publi par auteur****-->
>
><html>
><head>
> <title>Publications classees par auteurs </title>
></head>
><body>
>
><xsl:for-each select="//p">
>
>
> <xsl:sort select="@last"/>
> <xsl:variable name="auteurCourant" select="@last"/>
>
> <xsl:variable name="noeudPcdt" select="preceding-sibling::node()"/>
> <xsl:if test="not(noeudPcdt[1][@last=$auteurCourant])">
> <h3>Publication de <xsl:value-of select="$auteurCourant"/><br/</h3>
> <xsl:for-each select="key('clef2',$auteurCourant)">
> <xsl:value-of select="./title"/><br/>
>
> </xsl:for-each>
></xsl:if>
>
>
></xsl:for-each>
></body>
></html>
></xsl:template>
></xsl:stylesheet>
>
>bonne journee.
>
>--
>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)
>
>
>
--
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 Mon Apr 7 16:04:16 2003