Условное И ИЛИ два разных значения - PullRequest
8 голосов
/ 28 марта 2011

У меня есть конкатенация AND и OR для 2 разных переменных. И я попробовал следующее:

<xsl:if test="$countryCode = '104'
               and 
              (transactionType != 'Allowance'
                or 
               revenueCenter != '1100')">

Но это не работает. Можно ли сделать условный тест или мне нужно разделить его так:

<xsl:if test="$countryCode='104'>

и во втором элементе я делаю:

<xsl:if transactionType!='Allowance' or revenueCenter!='1100'>

Я искал в интернете, но не смог найти намеков на это. Может ли кто-нибудь помочь мне найти решение, пожалуйста. Спасибо и наилучшими пожеланиями, Питер

1 Ответ

12 голосов
/ 28 марта 2011

Выражение XPath :

    $countryCode='104' 
   and  
    (transactionType!='Allowance' or revenueCenter!='1100')

синтаксически правильно .

Мы ничего не можем сказать о семантике, так как нет XML-документапредоставляется, и нет никакого объяснения, что выражение должно выбрать.

Как обычно, есть рекомендация не использовать оператор !=, если только это не действительно необходимо - его использование прииз аргументов набор узлов (или последовательность или набор узлов в XPath 2.0) очень далек от того, что ожидает большинство людей.

Вместо != лучше использовать функцию not():

  $countryCode='104' 
 and  
  (not(transactionType='Allowance') or not(revenueCenter='1100'))

, и это может быть в дальнейшем переработано на более короткий и эквивалентный:

  $countryCode='104' 
 and  
  not(transactionType='Allowance' and revenueCenter='1100')
...