Ich habe eine Beispiel-XML-Nachricht, die mehrere Elternknoten enthält. Die Anforderung besteht darin, dass der untergeordnete Knoten zusammengeführt wird, wenn die beiden übergeordneten Knoten identisch sind.Übereinstimmung und Zusammenführung in XSLT 1.0
Probeneingangsmeldung ist
<document>
<party>
<gtin>1000909090</gtin>
<pos>
<attrGroupMany name="temperatureInformation">
<row>
<attr name="temperatureCode">STORAGE</attr>
<attrQualMany name="temperature">
<value qual="FAH">10</value>
<value qual="CC">20</value>
</attrQualMany>
<attrGroupMany name="temperatureStats">
<row>
<attr name="StatsCode">CODE1</attr>
</row>
<row>
<attr name="StatsCode">CODE2</attr>
</row>
</attrGroupMany>
</row>
<row>
<attr name="temperatureCode">STORAGE</attr>
<attrQualMany name="temperature">
<value qual="FAH">10</value>
<value qual="CC">20</value>
</attrQualMany>
<attrGroupMany name="temperatureStats">
<row>
<attr name="StatsCode">CODE3</attr>
</row>
<row>
<attr name="StatsCode">CODE4</attr>
</row>
</attrGroupMany>
</row>
<row>
<attr name="temperatureCode">HANDLING</attr>
<attrQualMany name="temperature">
<value qual="FAH">10</value>
</attrQualMany>
<attrGroupMany name="temperatureStats">
<row>
<attr name="StatsCode">CODE5</attr>
</row>
<row>
<attr name="StatsCode">CODE6</attr>
</row>
</attrGroupMany>
</row>
<row>
<attr name="temperatureCode">HANDLING</attr>
<attrGroupMany name="temperatureStats">
<row>
<attr name="StatsCode">CODE7</attr>
</row>
<row>
<attr name="StatsCode">CODE8</attr>
</row>
</attrGroupMany>
</row>
</attrGroupMany>
</pos>
</party>
</document>
wir den Wert von temperatureCode, Alle Werten der Temperatur (falls vorhanden) für alle Zeilen verketten müssen und wenn sie doppelte sind, dann die Zeile innerhalb temperatureStats des Kindes fusionieren im Elternteil.
Die erwartete Ausgabe hat die gleiche Struktur. Sie können der zweite Knoten sehen mit ersten
fusionierte<document>
<party>
<gtin>1000909090</gtin>
<pos>
<attrGroupMany name="temperatureInformation">
<row>
<attr name="temperatureCode">STORAGE</attr>
<attrQualMany name="temperature">
<value qual="FAH">10</value>
<value qual="CC">20</value>
</attrQualMany>
<attrGroupMany name="temperatureStats">
<row>
<attr name="StatsCode">CODE1</attr>
</row>
<row>
<attr name="StatsCode">CODE2</attr>
</row>
<row>
<attr name="StatsCode">CODE3</attr>
</row>
<row>
<attr name="StatsCode">CODE4</attr>
</row>
</attrGroupMany>
</row>
<row>
<attr name="temperatureCode">HANDLING</attr>
<attrQualMany name="temperature">
<value qual="FAH">10</value>
</attrQualMany>
<attrGroupMany name="temperatureStats">
<row>
<attr name="StatsCode">CODE5</attr>
</row>
<row>
<attr name="StatsCode">CODE6</attr>
</row>
</attrGroupMany>
</row>
<row>
<attr name="temperatureCode">HANDLING</attr>
<attrGroupMany name="temperatureStats">
<row>
<attr name="StatsCode">CODE7</attr>
</row>
<row>
<attr name="StatsCode">CODE8</attr>
</row>
</attrGroupMany>
</row>
</attrGroupMany>
</pos>
</party>
</document>
Jede Eingabe sehr wertvoll sein wird.
Ist die Gruppierung anders als bei früheren Fragen? Wenn Sie einige Elemente zusammenführen und die Münchische Gruppierung mit einem Schlüssel verwenden wollen, dann gibt 'key ('Schlüsselname', someKeyValueExpression)/attrGroupMany [@name = 'temperatureStats']/row 'alle gewünschten' row' Elemente verschmelzen. Die Verwendung eines Schlüssels zur Gruppierung scheint in vorherigen Fragen beantwortet zu sein. –
Wie man auf optionale Knoten achtet und wie kann ich das gesamte XML in der Ausgabe drucken. Gibt es einen Kopierbefehl, den ich benutzen kann? Wenn Sie Hilfe bei der Bereitstellung von Beispiel-XSLT bieten, wäre großartig. –
Victor