Biztalk cartes: Regroupement des noeuds différents dans une liste
-
27-09-2019 - |
Question
Est-il possible de réaliser la transformation suivante dans le mappeur BT? sinon, une bonne idée?
<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 regrouper quelques éléments d'une liste de noeuds.
Merci à l'avance.
La solution
Je ne sais pas beaucoup sur le mappeur BizTalk, mais le XSLT nécessaire serait assez-tout droit:
<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>
Autres conseils
Vous pouvez également utiliser le TableLooping / TableExtractor fonctoids dans votre carte pour construire les nœuds de destination.
Voir cet article pour un exemple:
http://hestia.typepad.com/flatlander/2007/01 /mapping_fixed_e.html
Il semble que vous avez une correspondance vers l'avant droite de l'entrée à la sortie. Lorsque vous faites votre correspondance un clic droit sur la ligne tracée à partir de l'entrée à la sortie. Sélectionnez « Propriétés ». Il y a des options soit copier la valeur du nœud d'entrée ou le nom du noeud d'entrée. Vous pouvez utiliser deux applications de chaque nœud enfant, l'un pour extraire le nom et l'autre pour la valeur.