From: cyril vidal (cyr.vidal@wanadoo.fr)
Date: 27/12/2002 - 07:58
Bonjour,
Merci de votre réponse.
Malheureusement, pour moi (ici, j'utilise msxml3. xalan 2 renvoie pour sa
part une erreur unknown XPath error qui me reste à éclarcir), le for-each
n'arrange pas les choses.
Voici mon code simplifié par rapport à mon dernier mail, et qui je l'espère
sera assez clair:
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:svg="http://www.w3.org/2000/svg">
<xsl:output method="xml" encoding="iso-8859-1" indent="yes"/>
<!-- définition d'une clé sur les éléments personne du document xml
'principal' -->
<xsl:key name="cle_lieu" match="//personne" use="lieu"/>
<xsl:variable name="calque" select="document('calque.svg')"/>
<xsl:template match="/">
<svg width="756.172pt" height="1149.04pt" viewBox="0 0 756.172 1149.04" >
<!-- ici, j'obtiens bien un résultat, la clé est bien trouvée -->
<xsl:value-of select="key('cle_lieu','1101')"/>
<xsl:for-each select="$calque//svg/g[@class='fonds']/path">
<!-- ici, la clé n'est pas trouvée, je n'obtiens aucun résultat en
sortie -->
<xsl:value-of select="key('cle_lieu','1101')"/>
<xsl:variable name="bureau" select="@class"/>
...
</xsl:for-each>
...
</svg>
</xsl:template>
</xsl:stylesheet>
Autrement dit, tant que je reste sur le corps de règle afférent au document
racine (template match="/"), la clé est trouvée, alors que dès que je rentre
dans un corps de règle impliquant le pattern d'un document externe (via
xsl:apply-templates) ou une boucle sur un fragment de document externe
(c'est le cas ici via xsl:for-each ), la clé n'est plus retrouvée.
Si vous avez d'autres propositions, elles sont les bienvenues...
Cordialement,
Cyril Vidal
_______________________________
Cyril Vidal
Email: cyril@planetexml.com
Web: http://www.planetexml.com
----- Original Message -----
From: "Verachten Bruno" <Bruno.Verachten@atosorigin.com>
To: <xml-tech@xmlfr.org>
Sent: Thursday, December 26, 2002 6:38 PM
Subject: [xml-tech] Re: xsl:key utilisé par plusieurs documents
>
> Bonsoir,
>
> j'ai déjà rencontré cette question.
> Je pense qu'il faut utiliser un for-each:
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:output method="text" encoding="ISO8859-1" indent="yes"/>
>
> <xsl:variable name="indexContent" select="document('keys.xml')/keys" />
>
> <xsl:key name="cle" match="key" use="@id"/>
>
> <xsl:template match="/">
> <xsl:for-each select="$indexContent">
> Key : <xsl:value-of select="key('cle', '2')/@val" />
> </xsl:for-each>
> Val : <xsl:value-of select="$indexContent/key[@id='2']/@val"/>.
> </xsl:template>
>
> </xsl:stylesheet>
>
> Bruno Verachten.
> --
> 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)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:06 UTC
webmaster@xmlfr.org
|