Opérateur booléen OU dans la clause where à l'aide de XSLT
Bonjour les gens,
Je suis en train de mettre une valeur fixe à une balise XML sur la comparaison à une valeur de la condition. comme
<xsl:when test="(//TestInput='XYZA') OR (//TestInput='XYZB') OR (//TestInput='XYZC') OR (//TestInput='XYZD')">abcd</xsl:when>
lorsque je tente d'exécuter la transformation avec un XML avec un tag <TestInput>
, il me donne une erreur comme
Extra illegal tokens: '(', '/', '/', 'TestInput', '=', ''XYZA'', ')', 'OR', '(', '/', '/', 'TestInput', '=', ''XYZB'', ')', 'OR', '(', '/', '/', 'TestInput', '=', ''XYZC'', ')', 'OR', '(', '/', '/', 'TestInput', '=', ''XYZD'', ')'
Merci de m'aider dans la définition de la valeur de cette balise en fonction de la condition de l'aide OU de l'exploitant dans la clause where.
Merci d'Avance
Quelle plate-forme/parser utilisez-vous?
OriginalL'auteur user1541472 | 2012-07-23
Vous devez vous connecter pour publier un commentaire.
Cas de questions avec XML/XSLT/XPath donc utiliser
or
au lieu deOR
.Comme une note complémentaire, avec XSLT/XPath 2.0, vous pouvez simplifier une telle comparaison à
//TestInput = ('foo', 'bar', 'foobar')
. C'est pas possible, toutefois, avec XSLT/XPath 1.0.OriginalL'auteur Martin Honnen
J'ai créé un test avec le fichier XML suivant:
Et la transformation XSLT suivante:
J'obtiens le résultat suivant:
Testé avec Micorosft.Net's classe XmlDocument. La différence essentielle est la cas de la " ou' instruction.
OriginalL'auteur dash
Le problème est que //TestInput sélectionne un ensemble d'éléments au lieu d'un seul.
Vous devez utiliser xsl:for-each
//TestInput[.='a'or'b'or'c']
est incorrect XPath. Il évalue comme//TestInput[.='a'or true() or true()]
et est donc toujourstrue
à la fin. Vous devez faire de vraies comparsions.OriginalL'auteur r0dney