OVH Cloud OVH Cloud

XPath et EXSLT 'function'

3 réponses
Avatar
drkm
Bonjour

Je suis confronte a un probleme etrange. J'ai le script XSLT suivant
:

<?xml version="1.0"?>

<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:func="http://exslt.org/functions"
xmlns:my="..."
extension-element-prefixes="my">

<func:function name="my:nil">
<xsl:param name="attr"/>
<func:result select="($attr/@xsi:nil='true') or not($attr)"/>
</func:function>

<xsl:template match="/">
<xsl:message>
<xsl:text>root: </xsl:text>
<xsl:value-of select="my:nil(root)"/>
<xsl:text>&#10;elem: </xsl:text>
<xsl:value-of select="my:nil(root/elem)"/>
</xsl:message>
</xsl:template>

</xsl:stylesheet>

Applique au document suivant :

<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<elem xsi:nil="true"/>
</root>

j'obtiens comme attendu false pour le premier appel et true pou le
second. Mais si j'inverse les deux operandes dans l'expression XPath
du 'func:result', j'obtiens false dans les deux cas :

<func:result select="not($attr) or ($attr/@xsi:nil='true')"/>

J'utilise Xalan 2.4.1 et 2.7.0, ainsi que xsltproc (mais ce dernier
semble avoir un probleme avec 'func:function', qui m'empeche de
tester).

Y a-t-il quelque chose qui m'echappe ? Pouvez-vous sinon confirmer
le resultat sur d'autres processeurs avant que j'envoie un bug report ?

Merci,

--drkm

3 réponses

Avatar
drkm
drkm wrote:

j'obtiens comme attendu false pour le premier appel et true pou le
second. Mais si j'inverse les deux operandes dans l'expression XPath
du 'func:result', j'obtiens false dans les deux cas :

<func:result select="not($attr) or ($attr/@xsi:nil='true')"/>



J'ai oublie de preciser que si je ne passe pas par un appel a
'my:nil', c'est a dire si je remplace l'appel directement par
l'expession XPath ci-dessus, il n'y a alors plus de probleme, et
l'ordre des operandes n'influence pas le resultat.

--drkm
Avatar
Erwan David
"drkm" écrivait :

J'utilise Xalan 2.4.1 et 2.7.0, ainsi que xsltproc (mais ce dernier
semble avoir un probleme avec 'func:function', qui m'empeche de
tester).

Y a-t-il quelque chose qui m'echappe ? Pouvez-vous sinon confirmer
le resultat sur d'autres processeurs avant que j'envoie un bug report ?



Ce qui m'échappe c'ets le rapport avec emacs...

--
Si vous embauchez, voici mon CV
http://www.rail.eu.org/cv/cv.pdf
Avatar
drkm
Erwan David wrote:

"drkm" écrivait :

> J'utilise Xalan 2.4.1 et 2.7.0, ainsi que xsltproc (mais ce dernier
> semble avoir un probleme avec 'func:function', qui m'empeche de
> tester).

> Y a-t-il quelque chose qui m'echappe ? Pouvez-vous sinon confirmer
> le resultat sur d'autres processeurs avant que j'envoie un bug report ?

Ce qui m'échappe c'ets le rapport avec emacs...



Ce qui est un signe de bonne sante mentale, contrairement a moi, qui
me suis trompe de groupe :-(. Desole pour le derangement.

--drkm