Conditionnel ET OU deux valeurs différentes
J'ai une concaténation de ET et OU pour 2 variables différentes. Et j'ai essayé le suivant:
<xsl:if test="$countryCode = '104'
and
(transactionType != 'Allowance'
or
revenueCenter != '1100')">
Mais qui ne fonctionne pas. Est-il possible de faire un test conditionnel ou dois-je les séparer comme ceci:
<xsl:if test="$countryCode='104'>
et dans un deuxième élément que je fais:
<xsl:if transactionType!='Allowance' or revenueCenter!='1100'>
J'ai cherché sur internet mais impossible de trouver tous les conseils sur ce. Quelqu'un pourrait-il m'aider à trouver une solution s'il vous plaît.
Merci et meilleures salutations,
Peter
Qu'est-ce que transactionType et revenueCenter? Il pourrait y avoir un problème avec la variable de référence (pourquoi ne pas utiliser $?) La deuxième approche est erronée
Comment est-il "ne fonctionne pas"? Obtenez-vous des résultats; si oui, comment sont-ils différents de ce que vous attendez?
Bonjour Zoltan, les références sont d'accord. Je l'ai fait vérifier par une sortie dans un <test> élément. Un certain élément XML est censé être créé si le code de pays correspond à 104 et l'une des conditions est vraie (pas de "Prime" et non "1100" dans les références). Je suis en train d'essayer avec la fonction "Contient". Peut-être que je obtenir le voulait sortie.
Bonne question, +1. Voir ma réponse pour l'explication et proposé plus sûr de refactoring.
Downvote pour aucun exemple XML.
Comment est-il "ne fonctionne pas"? Obtenez-vous des résultats; si oui, comment sont-ils différents de ce que vous attendez?
Bonjour Zoltan, les références sont d'accord. Je l'ai fait vérifier par une sortie dans un <test> élément. Un certain élément XML est censé être créé si le code de pays correspond à 104 et l'une des conditions est vraie (pas de "Prime" et non "1100" dans les références). Je suis en train d'essayer avec la fonction "Contient". Peut-être que je obtenir le voulait sortie.
Bonne question, +1. Voir ma réponse pour l'explication et proposé plus sûr de refactoring.
Downvote pour aucun exemple XML.
OriginalL'auteur Peter | 2011-03-28
Vous devez vous connecter pour publier un commentaire.
L'expression XPath:
est syntaxiquement correct.
Nous ne pouvons rien dire à propos de la sémantique, car aucun document XML est fourni et il n'y a aucune explication de ce que l'expression doit sélectionner.
Comme d'habitude, il y a la recommandation de ne pas ose le
!=
opérateur, sauf si vraiment nécessaire - son utilisation lorsque l'un des arguments est un node-set (ou d'une séquence ou d'un nœud-ensemble de XPath 2.0) est très loin de ce que la plupart des gens s'attendent.Au lieu de
!=
mieux utiliser la fonctionnot()
:et cela peut en outre être reconstruit pour la plus courte et équivalent:
La principale différence est que si il n'y a pas de transactionType,
transactionType != 'Allowance'
retourne false, alors quenot(transactionType = 'Allowance')
renvoie la valeur true. À l'avenir, veuillez fournir une source XML de sorte qu'il est plus facile de vous aider.Vous êtes les bienvenus. Je ne pouvais pas répondre immédiatement que j'étais en train de lire le XML Prague article par @Michael-Kay sur la mise en œuvre de XSLT 2.0 dans le navigateur-grand choses!!!
OriginalL'auteur Dimitre Novatchev