BizTalk Map неправильно анализирует входной XML - PullRequest
1 голос
/ 26 января 2010

У меня есть ситуация, когда моя карта BizTalk неправильно извлекает данные из входного XML.

Схема ввода выглядит следующим образом:

Последовательность

  A 

  B

Все 3 из этих узлов в XSD имеют минимум 0, максимум неограничен.

Вот пример фрагмента входного файла:

<A>1</A>
<B>hi</B>
<A>2</A>
<B>there</B>

Теперь моя карта берет эти данные и вызывает сохраненные процедуры для вставки данных в таблицу. Я получаю "привет" для поля B для A из 1 и A из 2. Это неправильно.

Я проследил проблему до карты. Сгенерированный XSLT выполняет foreach для A, а затем переходит к захвату значения B, но всегда захватывает первый B.

Значит, у кого-нибудь есть советы по изменению схемы ввода или карты, чтобы заставить ее работать правильно?

1 Ответ

2 голосов
/ 26 января 2010

Если вам нужно сгруппировать элементы A и B вместе, вы можете изменить схему, чтобы создать элемент-оболочку, чтобы ваша схема выглядела так:

<xs:element name="wrapper">
  <xs:complextype>
    <xs:sequence>
      <xsl:element name="A" type="xs:string" minoccur="1" maxoccur="1"/>
      <xsl:element name="B" type="xs:string" minoccur="1" maxoccur="1" />
    </xs:sequence>
  </xs:complextype>
</xs:element>

Тогда вы можете перебрать элементы-обертки и получить элементы A и B. Но я не уверен, что это то, что вы ищете.

Другой вариант - работать в шаблонах вызовов XSLT. Используя A и текущую итерацию A, вы получите B [i], где i - текущая итерация.

...