Pergunta

Existe uma maneira de alcançar a seguinte transformação no mapeador BT? Caso contrário, alguma ideia inteligente?

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

para:

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

Eu tenho que agregar alguns elementos em uma lista de nós.

Desde já, obrigado.

Foi útil?

Solução

Não sei muito sobre o mapeador BizTalk, mas o XSLT necessário seria bastante direto:

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

Outras dicas

Você também pode usar os functóides do TableLooping / TableExtractor em seu mapa para criar os nós de destino.

Veja este post para um exemplo:

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

Parece que você tem um mapeamento direto da entrada para a saída. Quando você fizer seu mapeamento, clique com o botão direito do mouse na linha desenhada da entrada para a saída. Selecione "Propriedades". Existem opções para copiar o valor do nó de entrada ou o nome do nó de entrada. Você pode usar dois mapeamentos de cada nó filho, um para extrair o nome e outro para o valor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top