Biztalk Karten: Gruppieren von verschiedenen Knoten in einer Liste
-
27-09-2019 - |
Frage
Gibt es eine Möglichkeit, die folgende Transformation in dem BT-Mapper von erreichen? wenn nicht, jede kluge Idee?
<Person>
<Age>25</Age>
<Name>Paul</Name>
</Person>
zu:
<Person>
<CustomProperties>
<CustomProperty>
<Name>Age</Name>
<Value>25</VAlue>
</CustomProperty>
<CustomProperty>
<Name>Name</Name>
<Value>Paul</VAlue>
</CustomProperty>
</CustomProperties>
Ich habe ein paar Elemente in einer Liste von Knoten aggregieren.
Vielen Dank im Voraus.
Lösung
Sie wissen nicht viel über den BizTalk-Mapper, aber die erforderliche XSLT wäre ziemlich sein straight-forward:
<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>
Andere Tipps
Sie können auch die TableLooping / TableExtractor Funktoide in der Karte verwenden, um die Zielknoten zu bauen.
Sehen Sie diesen Beitrag für ein Beispiel:
http://hestia.typepad.com/flatlander/2007/01 /mapping_fixed_e.html
Es sieht aus wie Sie ein straight forward-Mapping vom Eingang zum Ausgang haben. Wenn Sie Ihre Zuordnung zu tun klicken Sie rechts auf der Linie vom Eingang zum Ausgang gezogen. Wählen Sie „Eigenschaften“. Es gibt Optionen, um entweder Kopie den Wert des Eingangsknotens oder den Namen des Eingangsknotens. Sie können zwei Abbildungen von jedem Kind-Knoten verwenden, einen Namen und einen für den Wert zu extrahieren.