Ассемблер BizTalk Xml HRESULT 80131941

Я использую BizTalk 2013 R2. У меня есть входной файл, который нужно разобрать:

<Root xmlns="http://Test.XmlDasmAsm.BIZ.Schemas.schEnveloppe">
  <DOC xmlns="http://Test.XmlDasmAsm.BIZ.Schemas.schDocument">
    <Id>1</Id>
    <Description>Description 001</Description>
  </DOC>
  <DOC xmlns="http://Test.XmlDasmAsm.BIZ.Schemas.schDocument">
    <Id>2</Id>
    <Description>Description 002</Description>
  </DOC>
  <DOC xmlns="http://Test.XmlDasmAsm.BIZ.Schemas.schDocument">
    <Id>3</Id>
    <Description>Description 003</Description>
  </DOC>
</Root>

Вот моя схема конверта:

<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns="http://Test.XmlDasmAsm.BIZ.Schemas.schEnveloppe" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns:ns0="http://Test.XmlDasmAsm.BIZ.Schemas.schDocument" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://Test.XmlDasmAsm.BIZ.Schemas.schEnveloppe" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import schemaLocation=".\schDocument.xsd" namespace="http://Test.XmlDasmAsm.BIZ.Schemas.schDocument" />
  <xs:annotation>
    <xs:appinfo>
      <b:schemaInfo is_envelope="yes" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" />
      <b:references>
        <b:reference targetNamespace="http://Test.XmlDasmAsm.BIZ.Schemas.schDocument" />
      </b:references>
    </xs:appinfo>
  </xs:annotation>
  <xs:element name="Root">
    <xs:annotation>
      <xs:appinfo>
        <b:recordInfo body_xpath="/*[local-name()='Root' and namespace-uri()='http://Test.XmlDasmAsm.BIZ.Schemas.schEnveloppe']" />
      </xs:appinfo>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="ns0:DOC" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

И вот моя схема документа:

<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns="http://Test.XmlDasmAsm.BIZ.Schemas.schDocument" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" elementFormDefault="qualified" targetNamespace="http://Test.XmlDasmAsm.BIZ.Schemas.schDocument" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="DOC">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Id" type="xs:int" />
        <xs:element name="Description" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Стадия дизассемблирования с XmlDasm работает хорошо, и мой файл схемы конверта проверяется экземпляром входного файла xml. Моя проблема заключается в повторной сборке дизассемблированных файлов (с 1 или более экземплярами) с теми же файлами схемы. Итак, вот мой разобранный файл:

<DOC xmlns="http://Test.XmlDasmAsm.BIZ.Schemas.schDocument">
  <Id>1</Id>
  <Description>Description 001</Description>
</DOC>

Вот команда:

"c:\Program Files (x86)\Microsoft BizTalk Server 2013 R2\SDK\Utilities\PipelineTools\XmlAsm.exe" ..\Xml\DOC1.xml -es ..\Schemas\schEnveloppe.xsd -ds ..\Schemas\schDocument.xsd -c

И сообщение об ошибке:

Error
Source:         XML assembler
Message:        The 'http://Test.XmlDasmAsm.BIZ.Schemas.schDocument:DOC' element is not declared.
HRESULT:        80131941

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

К сожалению, документация по xmlasm плохая. Любая идея ?


person stephanejulien    schedule 10.05.2017    source источник
comment
Хорошо, это работает при работе в BizTalk Server? Никто серьезно не использует инструменты тестирования конвейера.   -  person Johns-305    schedule 10.05.2017
comment
Нет, это не работает в BizTalk Server. Я использую его в коррелированной оркестровке, вызывая Microsoft.XLANGs.Pipeline.XLANGPipelineManager.ExecuteSendPipeline с Microsoft.XLANGs.Pipeline.SendPipelineInputMessages. Здесь я хочу выделить свою проблему.   -  person stephanejulien    schedule 10.05.2017


Ответы (1)


Невозможно использовать одну и ту же схему оболочки для дизассемблера и ассемблера. Схема, показанная в вопросе, верна для разборки, но для сборки вот схема:

<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns="http://Test.XmlDasmAsm.BIZ.Schemas.schEnveloppe" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://Test.XmlDasmAsm.BIZ.Schemas.schEnveloppe" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:annotation>
    <xs:appinfo>
      <b:schemaInfo is_envelope="yes" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" />
    </xs:appinfo>
  </xs:annotation>
  <xs:element name="Root">
    <xs:annotation>
      <xs:appinfo>
        <b:recordInfo body_xpath="/*[local-name()='Root' and namespace-uri()='http://Test.XmlDasmAsm.BIZ.Schemas.schEnveloppe']" />
      </xs:appinfo>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:any />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
person stephanejulien    schedule 10.05.2017