Проблема с оценкой XPath при использовании Apache Synapse - PullRequest
1 голос
/ 08 августа 2011

Я пытаюсь запустить примеры Apache Synapse в 64-битной версии Ubuntu 11.04, и я обнаружил проблему с оценкой выражения XPath в примере № 2.

Мое выражение XPath:

$ <definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

<sequence name="main">
    <switch source="//m0:getQuote/m0:request/m0:symbol" xmlns:m0="http://services.samples">
        <case regex="IBM">
            <!-- the property mediator sets a local property on the *current* message -->
            <property name="symbol" value="Great stock - IBM"/>
        </case>
        <case regex="MSFT">
            <property name="symbol" value="Are you sure? - MSFT"/>
        </case>
        <default>
            <!-- it is possible to assign the result of an XPath expression as well -->
            <property name="symbol" expression="fn:concat('Normal Stock - ', //m0:getQuote/m0:request/m0:symbol)"/>
        </default>
    </switch>
    <log level="custom">
        <!-- the get-property() XPath extension function allows the lookup of local message properties
                    as well as properties from the Axis2 or Transport contexts (i.e. transport headers) -->
        <property name="symbol" expression="get-property('symbol')"/>
        <!-- the get-property() function supports the implicit message headers To/From/Action/FaultTo/ReplyTo -->
        <property name="epr" expression="get-property('To')"/>
    </log>
    <!-- Send the messages where they are destined to (i.e. the 'To' EPR of the message) -->
    <send/>
</sequence>

Он запускается на следующих данных:

$ <soapenv:Body><m0:getQuote xmlns:m0="http://services.samples"><m0:request><m0:symbol>IBM</m0:symbol></m0:request></m0:getQuote></soapenv:Body></soapenv:Envelope>

И результат:

2011-08-08 15: 37: 04,227 [-] [HttpClientWorker-1] DEBUG SwitchMediator XPath: // m0: getQuote / m0: request / m0: symbol оценивается как:

2011-08-08 15: 37: 04,227 [-] [HttpClientWorker-1] DEBUG SwitchMediator Ни один изпереключать регистры совпадений - выполняется значение по умолчанию

, в то время как оно должно указывать на:

$<case regex="IBM">
        <!-- the property mediator sets a local property on the *current* message -->
        <property name="symbol" value="Great stock - IBM"/>
    </case>

Кто-нибудь знает, в чем может быть проблема?Я установил эту Ubuntu несколько дней назад, поэтому есть вероятность, что в этой системе чего-то не хватает.

1 Ответ

0 голосов
/ 15 сентября 2011

Попробуйте с полным xpath ..

<switch xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:m0="http://services.samples" source="//soapenv:Envelope/soapenv:Body/m0:getQuote/m0:request/m0:symbol">
...