Карты Biztalk: группирование разных узлов в список - PullRequest
3 голосов
/ 16 апреля 2010

Есть ли способ добиться следующего преобразования в BT mapper? если нет, то какая-нибудь умная идея?

<Person>
<Age>25</Age>
<Name>Paul</Name>
</Person>

до:

<Person>
<CustomProperties>
<CustomProperty>
<Name>Age</Name>
<Value>25</VAlue>
</CustomProperty>
<CustomProperty>
<Name>Name</Name>
<Value>Paul</VAlue>
</CustomProperty>
</CustomProperties>

Мне нужно объединить несколько элементов в списке узлов.

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 20 апреля 2010

Вы также можете использовать фунтоиды TableLooping / TableExtractor на вашей карте для построения узлов назначения.

См. Этот пост для примера:

http://hestia.typepad.com/flatlander/2007/01/mapping_fixed_e.html

2 голосов
/ 16 апреля 2010

Не знаю много о картографе BizTalk, но требуемый XSLT будет довольно простым:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="Person">
    <xsl:copy>
      <CustomProperties>
        <xsl:apply-templates select="*" />
      </CustomProperties>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="Person/*">
    <CustomProperty>
      <Name><xsl:value-of select="name()" /></Name>
      <Value><xsl:value-of select="." /></Value>
    </CustomProperty>
  </xsl:template>
</xsl:stylesheet>
0 голосов
/ 14 апреля 2011

Похоже, у вас прямое отображение от входа к выходу. Когда вы делаете ваше отображение правой кнопкой мыши на линии, проведенной от входа к выходу. Выберите «Свойства». Существуют варианты для копирования значения входного узла или имени входного узла. Вы можете использовать два сопоставления от каждого дочернего узла, одно для извлечения имени и одно для значения.

...