BizTalk映射:从SOAPENV:标题中获取值



我正在尝试通过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中的值:header> ns> ns:myheader> ns1:mydata。

是否可以从XSLT中的肥皂标头获得一个值,我需要哪种XPath?

假设您使用 wcf-basichttp 适配器,则可以像想要的那样使用XSLT,但是只有当您将Envelope -- entire <soap:Envelope>指定为SOAP Body Element的数据选择时。如果您不指定它,则您的标题将从消息主体中删除,并且标题上的XPath语句将是不可能的。

您的另一个选项是从上下文属性InboundHeaders获得命名空间http://schemas.microsoft.com/biztalk/2006/01/adapters/wcf-properties。适配器默认情况下将SOAP标头值放入InboundHeaders上下文属性中。如果您需要映射中的上下文值,而无需编排,请尝试研究社区制造的Context Accessor Functoid

像您在评论中所要求的那样,在标题值上进行自己的属性促销也是可能的,但在XSLT中不可能。只有添加XML Disassembler Pipeline Component,然后对整个肥皂消息进行架构,然后在模式上设置促销,最后设置促销;在管道组件的Document schemas部分中指定架构。我不建议使用这种方法,因为它要求您部署肥皂架构,该模式将使用默认的BizTalk SOAP模式复制。

最新更新