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, Вы должны настроить это в соответствии со своими настройками, чтобы выражение работало.

Другие вопросы по тегам