Служба данных WSO2 и картограф - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь применить посредник преобразователя данных к выходу службы данных XML, определенной в WSO2EI. В документации указывается, что для использования преобразователя данных необходимо иметь полные имена во входных файлах XML.

Служба данных, которую я создаю, не включает префиксы в пределах генерируемых XML. Я попытался экспортировать сопоставление данных XSLT из файла CAR и запустить его по образцу XML, сгенерированному службой данных через внешний преобразователь XML - это не сработало. Однако, если я добавил квалифицированные префиксы во входную информацию XML вручную, все работает нормально.

Похоже, что причина того, что мой преобразователь данных не работает, - это пространство имен по умолчанию, а не квалифицированное, во входных данных XML. К сожалению, я не могу получить службу данных, включающую префиксы пространства имен в своем выводе. Любые идеи?

Чтобы проиллюстрировать природу проблемы, давайте рассмотрим два немного разных входа; первый XML входной файл использует имена по умолчанию, второй - полные имена:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <users xmlns="http://ws.wso2.org/dataservice">
         <user>
            <last>Waelchi</last>
            <first>Xzavier</first>
            <country>Swaziland</country>
         </user>
      </users>
   </soapenv:Body>
</soapenv:Envelope>

Этот XML не обрабатывается XSLT должным образом, независимо от того, находится ли он внутри WSO2EI или внешнего XML процессора. Однако тот же XML с определенными именами:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <users xmlns:p="http://ws.wso2.org/dataservice">
         <p:user>
            <p:last>Waelchi</p:last>
            <p:first>Xzavier</p:first>
            <p:country>Swaziland</p:country>
         </p:user>
      </users>
   </soapenv:Body>
</soapenv:Envelope>

правильно интерпретируется, по крайней мере, внешним XML процессором. Моя проблема в том, что я не могу заставить службу данных WSO2EI включать в свой вывод квалифицированные префиксы.

ОК, мне удалось обойти проблему, преобразовав вывод XML службы данных WSO2 в квалифицированный XML используя XSLT-преобразование. Однако я все еще не могу получить квалификацию XML непосредственно из службы данных; Любое предложение должно быть оценено.

...