Вопрос

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

<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>

Я должен агрегировать несколько элементов в списке узлов.

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

Это было полезно?

Решение

Не знаю много о Biztalk Mapper, но требуемый 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>

Другие советы

Вы также можете использовать функциональные функции Tableooping / TableExtractor на своей карте, чтобы построить узлы назначения.

Смотрите этот пост на примере:

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top