Я использую 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 плохая. Любая идея ?
Microsoft.XLANGs.Pipeline.XLANGPipelineManager.ExecuteSendPipeline
сMicrosoft.XLANGs.Pipeline.SendPipelineInputMessages
. Здесь я хочу выделить свою проблему. - person stephanejulien   schedule 10.05.2017