la portée des variables globales en XSLT
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:
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 :)