bpel if условие xpath выражение
Запрос xml:
<ABC>
<ServiceCharacteristic>
<Code>AAA</Code>
<CharacteristicValue>
<CharacteristicValue>2222</CharacteristicValue>
</CharacteristicValue>
</ServiceCharacteristic>
<ServiceCharacteristic>
<Code>BBB</Code>
<CharacteristicValue>
<CharacteristicValue>2223</CharacteristicValue>
</CharacteristicValue>
</ServiceCharacteristic>
<ServiceCharacteristic>
<Code>CCC</Code>
<CharacteristicValue>
<CharacteristicValue>2224</CharacteristicValue>
</CharacteristicValue>
</ServiceCharacteristic>
<Account>
--------
</Account>
</ABC>
Need to put a BPEL if condition to check if there is ServiceCharacteristic with code "CCC"
пробовал что-то вроде ниже, но не повезло (Ошибка (703): выражение LocationPath "self::node()/child::*[(local-name() = "Code")]" не допускается, так как нет присутствует неявный контекстный узел):
**count($variable name/'*asterisk'[local-name()='ServiceCharacteristic' and ./'*asterisk'[local-name()='Code']='CCC'] ) > 0**
Любые входы, пожалуйста.. спасибо
1 ответ
Я вставил ваш XML-скрипт, представленный в вопросе, в оценщик XPath, и следующее выражение возвращает true
для меня:
count(/*[local-name() = 'ABC']/*[local-name() = 'ServiceCharacteristic']/*[local-name() = 'Code' and text() = 'CCC'])>0
Используя это в BPEL if
может выглядеть так:
<if>
<condition>count($Variable.ABCpart/*[local-name() = 'ABC']/*[local-name() = 'ServiceCharacteristic']/*[local-name() = 'Code' and text() = 'CCC'])>0</condition>
<!-- remaining activities-->
</if>
Это предполагает, что вы храните ваш XML в переменной с именем Variable
и messagePart
называется ABCpart
, Вы должны настроить это в соответствии со своими настройками, чтобы выражение работало.