Hallo juls_pro_37,
Korrekt wäre jedoch:
<?xml version="1.0" encoding="utf-8" standalone="yes"?> ... <HeaderText> <Qualifier>AAI</Qualifier> <Text>AAI10854</Text> </HeaderText> <HeaderText> <Qualifier>DEL</Qualifier> <Text>DEL0854</Text> </HeaderText> ... <LineItem> <Lines> ... <LineText> <Qualifier>AAA</Qualifier> <Text>AAA1-0927</Text> </LineText> <LineText> <Qualifier>LIN</Qualifier> <Text>LIN1-0927</Text> </LineText> </Lines> </LineItem> ...
Kann man das mittels XSLT lösen?
Vom unvollständigen XML-Dokument ausgehend – root als Wurzelelement gewählt – kommt man so zur gezeigten Ausgabe mittels Gruppierung unter XSLT 2.0:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" standalone="yes" indent="yes"/>
<xsl:template match="root">
<out>
<xsl:for-each-group select="HeaderText" group-by="Qualifier">
<xsl:for-each select="current-group()">
<xsl:if test="position() = 1">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:for-each-group>
<LineItem>
<Lines>
<xsl:for-each-group select="LineItem/Lines/LineText" group-by="Qualifier">
<xsl:for-each select="current-group()">
<xsl:if test="position() = 1">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:for-each-group>
</Lines>
</LineItem>
</out>
</xsl:template>
</xsl:stylesheet>
Grüße,
Thomas