Bonjour tt le monde,

J'ai un problème avec la portée d'une variable globale, en effet quand je déclare une variable globale et que je souhaite la soumettre à un traitement plutôt une mise à jour de son contenu, elle me retourne toujours une valeur nulle !!

voici une partie du code source de mon fichier XSLT :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:f="http://www.functx.com">
	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
	<xsl:variable name="nodes" select="//*[@y]"/>
	<xsl:variable name="all" select="$nodes/@y"/>			
	<xsl:variable name="distinct" select="distinct-values($all)"/>
	<xsl:variable name="count" select="count($distinct)"/> 		
	<xsl:variable name="seq_occ" as="item()*"/>
	<xsl:template match="/">
		<xsl:for-each select="$distinct">
				<xsl:sort order="ascending" data-type="number" select="count($nodes[@y = current()])"/>
				<output>
					<xsl:value-of select="current()"/>###<xsl:value-of select="count($nodes[@y = current()])"/>
				</output>
				<xsl:variable name="var" select="f:append(count($nodes[@y = current()]))"/>
		</xsl:for-each>	
		<seq_occ>
			<xsl:value-of select="$seq_occ"/>
		</seq_occ>
	</xsl:template>
	<xsl:function name="f:append" as="item()*">
		<xsl:param name="input" as="xs:integer"/>
		<xsl:sequence select="insert-before($seq_occ,1,$input)"/>
	</xsl:function>
</xsl:stylesheet>
En mode debugage la variable "seq_occ" est toujours nulle !! y-a t-il une solution pour contourner ce problème, j'ai beau cherché sur internet mais je n'ai pas trouvé une réponse satisfaisante.
Merci d'avance pour votre aide