Сопоставление BizTalk: получение значения из soapenv: заголовок - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь отобразить сообщение из следующего формата через xslt:

<soapenv:Envelope xmlns:soapenv="..." ns...>
   <soapenv:Header>
      <ns:myHeader>
         <ns1:myData>VALUE_I_WANT</ns1:myData>
      </ns:myHeader>
   </soapenv:Header>
   <soapenv:Body>
      <ns2:otherData>
         ...
      </ns2:otherData>
   </soapenv:Body>
</soapenv:Envelope>

В настоящее время мое отображение обрабатывает все поля в теге soapenv: Body, но для одного из моих сопоставленных узлов янужно значение в soapenv: Header> ns: myHeader> ns1: myData.

Можно ли получить значение из заголовка soap в XSLT и какой xpath мне нужен для достижения этого?

1 Ответ

1 голос
/ 19 мая 2019

Предполагая, что вы используете адаптер WCF-BasicHttp , вы можете использовать xslt так, как вам нужно, но только если вы указали Envelope -- entire <soap:Envelope> в качестве выбора данных для элемента тела SOAP.Если вы не укажете его, ваш заголовок будет удален из тела сообщения, и операторы xpath в заголовке будут невозможны.

Другой вариант - получить значение из свойства context InboundHeaders с пространством имен http://schemas.microsoft.com/BizTalk/2006/01/Adapters/WCF-properties. Адаптер помещает значения заголовка SOAP в это свойство контекста InboundHeaders по умолчанию.Если вам нужно значение контекста в отображении, без оркестровки, попробуйте заглянуть в сообщество, созданное Context Accessor Functoid.

Также возможно сделать собственное продвижение свойства для значений заголовка, как вы просили в комментариях., но не в xslt.Только если вы добавите XML Disassembler Pipeline Component, затем создадите схему всего мыльного сообщения, затем установите продвижение по схеме и, наконец;укажите схему в Document schemas части компонента конвейера.Я бы не советовал использовать этот подход, поскольку он требует развертывания схемы мыла, которая будет дублироваться со схемой мыла BizTalk по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...