Как объявить пространство имен в ответе xml

Я делаю POC в Data Weaver. Я не уверен, как объявить пространство имен ns0: во всем выходном xml. Ссылка: https://developer.mulesoft.com/docs/dataweave (я видел примеры при обработке входного xml с пространством имен 1.4.3, но я ищу выходной xml).

Введите Xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <Records>
      <storenumber>12</storenumber>
      <calculated>false</calculated>
      <subTotal>12</subTotal>
   <Records>

Ожидаемый результат xml:

<?xml version='1.0' eencoding="UTF-8" standalone="yes"?>
 <ns0:orders 
       xmlns="ns2=urn:test.com:common:v1">
  <ns0:order>
    <ns0:StoreID>12</ns0:StoreID>
    <ns0:Total>false</ns0:Total>
   </ns0:order>
  </ns0:orders>

Преобразование DataWeaver

%dw 1.0
 %output application/xml
 %var baseurl="ns2=urn:test.com:common:v1"
 ---
 orders @(xmlns:baseurl): {
 order: {
  StoreID: payload.Records.storenumber,
  Total: payload.Records.calculated
  }
}

Я считаю, что @(xmlns:baseurl) в преобразовании правильно. Есть ли другой способ определить это?


person star    schedule 02.09.2015    source источник


Ответы (1)


Пространства имен объявляются с помощью директивы %namespace <prefix> <uri>
Вы можете указать пространство имен элемента с помощью <prefix>#<element>

Преобразование DataWeave

%dw 1.0
%output application/xml
%namespace ns0 urn:test.com:common:v1
---
ns0#orders: {
  ns0#order: {
    ns0#StoreID: payload.Records.storenumber,
    ns0#Total: payload.Records.calculated
  }
}

Выход

<?xml version='1.0' encoding='UTF-8'?>
<ns0:orders xmlns:ns0="urn:test.com:common:v1">
  <ns0:order>
    <ns0:StoreID>12</ns0:StoreID>
    <ns0:Total>false</ns0:Total>
  </ns0:order>
</ns0:orders>
person Shoki    schedule 02.09.2015