Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

<xsl:if test="@machin">

22 views
Skip to first unread message

samuel

unread,
Jul 10, 2009, 1:54:11 PM7/10/09
to
je n'arrive pas à tester si un argument existe...

<xsl:for-each select="auteur">
<xsl:value-of select=""/>
<xsl:if test="@dt">
<xsl:text>&#160;</xsl:text><em>(<xsl:value-of select="@dt"/>)</em>
</xsl:if><br/>
</xsl:for-each>

une personne ici semble avoir eu le même problème:
http://forum.hardware.fr/hfr/Programmation/XML-XSL/test-existence-balise-sujet_94465_1.htm

mais pour moi ça ne marche pas.. j'ai tantôt
Jeton attendu 'eof' trouvé '@'
tantôt erreur XPath : test de Name ou de Nodetype attendu sur IE ou
expression attendue sur FF
tantôt même ')' attendu quand j'ai esseyé test="not(no(@dt))"
j'ai aussi essayé test="@dt != ''" mais là non plus ça ne lui va pas!
ni à IE ni à FF.

j'en appelle donc à votre aide!

Alain Ketterlin

unread,
Jul 11, 2009, 12:49:40 PM7/11/09
to
samuel <samuel....@gmail.com> writes:

> je n'arrive pas à tester si un argument existe...

Un argument ? J'imagine que tu veux dire un attribut.

> <xsl:for-each select="auteur">
> <xsl:value-of select=""/>

select="" est incorrect, il doit y avoir une expression XPath ici.

> <xsl:if test="@dt">
> <xsl:text>&#160;</xsl:text><em>(<xsl:value-of select="@dt"/>)</em>
> </xsl:if><br/>
> </xsl:for-each>

Merci d'indenter correctement. On n'a déjà aucune idée du fichier XML
source, si en plus tu nous piège avec des indentations trompeuses.

A mon avis son problème n'a rien à voir.

> mais pour moi ça ne marche pas.. j'ai tantôt
> Jeton attendu 'eof' trouvé '@'

Jeton c'est surement "token". Es-tu sûr que tu nous montres le code qui
provoques l'erreur.

> tantôt erreur XPath : test de Name ou de Nodetype attendu sur IE ou
> expression attendue sur FF

Voir plus haut l'erreur sur <xsl:value-of>

> tantôt même ')' attendu quand j'ai esseyé test="not(no(@dt))"

no() ? Ce n'est pas une fonction. De toute façon, not() doit recevoir
une expression, donc la deuxième parenthèse ouvrante provoque une
erreur. Normal.

> j'ai aussi essayé test="@dt != ''" mais là non plus ça ne lui va pas!
> ni à IE ni à FF.

Ce dernier test est équivalent à string(@dt)!='', qui sera vrai soit si
l'attribut dt est absent, soit si il est présent et sa valeur est vide.

Le test écrit plus haut (test="@dt") est vrai si un attribut "dt" existe
sur l'élément courant (un élément "auteur" en l'occurrence, puisqu'on
est dans le <xsl:for-each>). Si ça ne marche pas, c'est qu'il y a un
autre problème.

-- Alain.

samuel

unread,
Jul 11, 2009, 4:22:26 PM7/11/09
to
On 11 juil, 18:49, Alain Ketterlin <al...@dpt-info.u-strasbg.fr>
wrote:

> samuel <samuel.brai...@gmail.com> writes:
> > je n'arrive pas à tester si un argument existe...
>
> Un argument ? J'imagine que tu veux dire un attribut.
>
> > <xsl:for-each select="auteur">
> >    <xsl:value-of select=""/>
>
> select="" est incorrect, il doit y avoir une expression XPath ici.
>
> >    <xsl:if test="@dt">
> >            <xsl:text>&#160;</xsl:text><em>(<xsl:value-of select="@dt"/>)</em>
> >    </xsl:if><br/>
> > </xsl:for-each>
>
> Merci d'indenter correctement. On n'a déjà aucune idée du fichier XML
> source, si en plus tu nous piège avec des indentations trompeuses.
>
> > une personne ici semble avoir eu le même problème:
> >http://forum.hardware.fr/hfr/Programmation/XML-XSL/test-existence-bal...

>
> A mon avis son problème n'a rien à voir.
>
> > mais pour moi ça ne marche pas.. j'ai tantôt
> > Jeton attendu 'eof' trouvé '@'
>
> Jeton c'est surement "token". Es-tu sûr que tu nous montres le code qui
> provoques l'erreur.
>
> > tantôt  erreur XPath : test de Name ou de Nodetype attendu sur IE ou
> > expression attendue sur FF
>
> Voir plus haut l'erreur sur <xsl:value-of>
>
> > tantôt même ')' attendu quand j'ai esseyé  test="not(no(@dt))"
>
> no() ? Ce n'est pas une fonction. De toute façon, not() doit recevoir
> une expression, donc la deuxième parenthèse ouvrante provoque une
> erreur. Normal.
>
> > j'ai aussi essayé test="@dt != ''"  mais là non plus ça ne lui va pas!
> > ni à IE ni à FF.
>
> Ce dernier test est équivalent à string(@dt)!='', qui sera vrai soit si
> l'attribut dt est absent, soit si il est présent et sa valeur est vide.
>
> Le test écrit plus haut (test="@dt") est vrai si un attribut "dt" existe
> sur l'élément courant (un élément "auteur" en l'occurrence, puisqu'on
> est dans le <xsl:for-each>). Si ça ne marche pas, c'est qu'il y a un
> autre problème.
>
> -- Alain.

ça alors!
c'était bien à cause du point qui manquait entre les " ". il
m'indiquait pas la bonne erreur!
mnt tt roule! merci!
:)

0 new messages