2010-04-16 17 views
3

Existe-t-il un moyen d'obtenir la transformation suivante dans le mappeur BT? sinon, une idée intelligente?Cartes Biztalk: regrouper différents nœuds dans une liste

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

Je dois rassembler quelques éléments dans une liste de nœuds.

Merci d'avance.

Répondre

2

Je ne sais pas beaucoup sur le mappeur BizTalk, mais le XSLT nécessaire serait assez simple en avant:

<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

Il semble que vous avez une correspondance vers l'avant droite de l'entrée à la sortie. Lorsque vous faites votre mapping, faites un clic droit sur la ligne tracée de l'entrée à la sortie. Sélectionnez "Propriétés". Il existe des options pour copier la valeur du noeud d'entrée ou le nom du noeud d'entrée. Vous pouvez utiliser deux mappages de chaque noeud enfant, un pour extraire le nom et un pour la valeur.