Cliquez ici.
Accueil
 chercher             Plan du site             Info (English version) 
L'histoire de XML s'écrit en ce moment même. XMLfr vous aide à la suivre et à en dégager les tendances.Les listes de discussions XMLfr sont à votre disposition pour réagir sur nos articles ou simplement poser une question.Si vous ètes passionnée(e) par XML, pourquoi ne pas en faire votre métier ?XMLfr n'est heureusement pas le seul site où l'on parle de XML. Découvrez les autres grâce à XMLfr et à l'ODP.Les partenaires grâce auxquels XMLfr peut se développer.Pour tout savoir sur XMLfr.XMLfr sans fil, c'est possible !Pour ceux qui veulent vraiment en savoir plus sur XML.L'index du site.
 Commentaires et questions non techniques.Commentaires et questions techniques.

 
Cliquez ici.

From: Alain COUTHURES (alain.couthures@lafon.fr)
Date: 20/07/2001 - 11:23


Merci de votre réponse.

J'avais déjà trouvé l'explication dans l'aide MSXML et, maintenant, je vais
utiliser :

            <xsl:variable name="cval" select="string(/a/b/c)"/>

car c'est bien seulement la valeur du premier élément c que je veux affecter à la
variable pour ensuite faire les "count" et comparer leurs résultats.
Dans ce cas, je trouve qu'il eut été préférable d'avoir à utiliser une autre
fonction avec un nom plus adapté, du style "first-of()"...

Ma confusion est venue du fait qu'il semble y avoir des appels implicites à la
fonction string(). Par exemple :

         <xsl:value-of select="/a/b/c"/>
et
        <xsl:value-of select="string(/a/b/c)"/>

produisent le même résultat... Ici, la liste de noeuds n'est pas traitée en tant
que telle.

N'est-ce pas un manque de rigueur de XSLT ?

Merci de votre avis

Alain COUTHURES
LAFON SA - Equipements pétroliers

Eric van der Vlist a écrit :

> Bonjour,
>
> Alain COUTHURES wrote:
> >
> > Bonjour,
> >
> > J'ai constaté un comportement bizarre de MSXML3 et MSXML3 SP1 vis à vis des
> > variables XSL.
>
> Pas si bizarre que cela ;=) ...
>
> > Voici un document XML simple pour faire ressortir ce problème :
> >
> > <a>
> > <b>
> > <c>C1</c>
> > </b>
> > <b>
> > <c>C2</c>
> > </b>
> > </a>
> >
> > et la feuille de style suivante :
> >
> > <xsl:template match="/">
> > <html>
> > <body>
> > <p>Total : <xsl:value-of select="count(/a/b)"/></p>
> > <xsl:variable name="cval" select="/a/b/c"/>
>
> Cette instruction affecte à la variable cval la liste des noeuds
> /a/b/c", c'est à dire ici "<c>C1</c>" et "<c>C2</c>
>
> > <p>Total c=C1 : <xsl:value-of
> > select="count(/a/b[c=$cval])"/></p>
>
> Celle ci compte les noeuds /a/b pour lesquels la liste des noeuds "c"
> est "égale" à la liste contenue dans la variable $cval.
>
> Que dit XPath à propos des comparaisons de listes de noeuds [1] ?
>
> [1] http://xmlfr.org/w3c/TR/xpath/#booleans
>
> "Si les deux objets à comparer sont des ensembles de noeuds, alors la
> comparaison ne sera vraie que si et seulement si il y a un noeud dans
> chacun des deux ensembles qui satisfassent à la condition de comparaison
> de type string-values."
>
> Ici, c'est toujours le cas et le résultat donne, très logiquement, 2.
>
> > </body>
> > </html>
> > </xsl:template>
> >
> > Le résultat produit est bizarre :
> >
> > Total : 2
> > Total c=C1 : 2 et non pas 1 !!
>
> Bizarre peut-être, mais conforme à XPath :) .
>
> > Le bon résultat est obtenu si l'on trafique l'affectation à la variable
> > comme suit :
> >
> > <xsl:variable name="cval" select="concat('',/a/b/c)"/>
> >
> > Dans ce cas d'école, le bon résultat est aussi obtenu si l'on écrit plutôt :
> >
> > <xsl:variable name="cval" select="/a/b[1]/c"/>
> >
> > mais si l'on doit déjà avoir une condition sur le noeud b, on ne pourra pas
> > utiliser cet artifice...
> >
> > S'agit-il d'un bug connu ????
> >
> > Comment je suis tombé sur ce problème ? En cherchant comment faire en XSL
> > pour savoir si les noeuds b ont tous un fils c ayant la même valeur !
> > Quelqu'un aurait-il une autre idée pour déterminer cela ?
>
> C'est un bon exercice ;=)
>
> Cordialement,
>
> Eric van der Vlist
>
> >
> > Merci de vos réponses
> >
> > Alain COUTHURES
> > LAFON SA - Equipements pétroliers
> >
> --
> See you at XTech in San Diego.
> http://conferences.oreillynet.com/cs/os2001/view/e_spkr/790
> ------------------------------------------------------------------------
> Eric van der Vlist http://xmlfr.org http://dyomedea.com
> http://xsltunit.org http://4xt.org http://examplotron.org
> ------------------------------------------------------------------------
> --
> 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

 

xml tech

Discussions techniques au sujet de XML.

Cette liste est à votre disposition pour discuter en français de tout sujet technique lié à XML.



Devenez rédacteur <XML>fr et contribuez au développement du xml francophone !
Les documents publiés sur ce site le sont sous licence "Open Content"
Conception graphique
  l.henriot@online.fr  

Conception, réalisation et hébergement