Hallo zusammen,
ich habe ein kleines Problem bei der Transformation eines Ergebnisses aus SQL in XML.
Ich nutze ein SQL-Statement mit
<table name="VDR_10" namecase="lower">
<sql><![CDATA[" SQL-Select "]]></sql>
</table>
um die nachfolgende Tabelle zu erhalten:
P1 P2 ident
3 702 XS0419605406
3 702 XS0188568751
4 702 XXXXXXXXXXXX
4 702 XS1048428012
3 701 AT0000A0N9A0
3 701 XS0418690201
3 701 XS0417728325
3 701 BE0000314238
3 701 ES0000101339
Mein XSLT sieht wie folgt aus
<xsl:key name="vdr10_kennzahl" match="VDR_10" use="p2"/>
<xsl:template match="VDR_10">
<xsl:variable name="this" select="."/>
<xsl:for-each select="$this[generate-id(.)=generate-id(key('vdr10_kennzahl', p2))]">
<xsl:sort select="p2" order="ascending"/>
<POSTEN>
<xsl:attribute name="p1-id"><xsl:value-of select="p1"/></xsl:attribute>
<xsl:attribute name="p2-id"><xsl:value-of select="p2"/></xsl:attribute>
<xsl:for-each select="key('vdr10_kennzahl',p2)">
<IDENT-Zeile>
<BETRAG>
<xsl:value-of select="ident"/>
</BETRAG>
</IDENT-ZEILE>
</xsl:for-each>
</POSTEN>
</xsl:for-each>
</xsl:template>
und erzeugt einen Output wie den hier
<POSTEN p1-id="3" p2-id ="702">
<IDENT-zeile>XS0419605406</IDENT-zeile>
<IDENT-zeile>XS0188568751</IDENT-zeile>
<IDENT-zeile>XXXXXXXXXXXX</IDENT-zeile>
<IDENT-zeile>XS1048428012</IDENT-zeile>
</POSTEN>
<POSTEN p1-id="3" p2-id ="701">
<IDENT-zeile>AT0000A0N9A0</IDENT-zeile>
<IDENT-zeile>XS0418690201</IDENT-zeile>
<IDENT-zeile>XS0417728325</IDENT-zeile>
<IDENT-zeile>BE0000314238</IDENT-zeile>
<IDENT-zeile>ES0000101339</IDENT-zeile>
</POSTEN>
Das ist nicht exakt das was ich brauche. Ich brauche eine Ausgabe wie diese
<POSTEN p1-id="3" p2-id ="702">
<IDENT-zeile>XS0419605406</IDENT-zeile>
<IDENT-zeile>XS0188568751</IDENT-zeile>
</POSTEN>
<POSTEN p1-id="4" p2-id ="702">
<IDENT-zeile>XXXXXXXXXXXX</IDENT-zeile>
<IDENT-zeile>XS1048428012</IDENT-zeile>
</POSTEN>
<POSTEN p1-id="3" p2-id ="701">
<IDENT-zeile>AT0000A0N9A0</IDENT-zeile>
<IDENT-zeile>XS0418690201</IDENT-zeile>
<IDENT-zeile>XS0417728325</IDENT-zeile>
<IDENT-zeile>BE0000314238</IDENT-zeile>
<IDENT-zeile>ES0000101339</IDENT-zeile>
</POSTEN>
Ich ahne das ich ein weiteres for-each-Konstrukt brauche und habe nun seit heute morgen rumprobiert.
Irgendwie ist aber heute der Wurm drinnen und ich sehe den Wald vor lauter Bäumen nicht. Kann mir hier einer bitte auf die Sprünge helfen?
ich habe ein kleines Problem bei der Transformation eines Ergebnisses aus SQL in XML.
Ich nutze ein SQL-Statement mit
<table name="VDR_10" namecase="lower">
<sql><![CDATA[" SQL-Select "]]></sql>
</table>
um die nachfolgende Tabelle zu erhalten:
P1 P2 ident
3 702 XS0419605406
3 702 XS0188568751
4 702 XXXXXXXXXXXX
4 702 XS1048428012
3 701 AT0000A0N9A0
3 701 XS0418690201
3 701 XS0417728325
3 701 BE0000314238
3 701 ES0000101339
Mein XSLT sieht wie folgt aus
<xsl:key name="vdr10_kennzahl" match="VDR_10" use="p2"/>
<xsl:template match="VDR_10">
<xsl:variable name="this" select="."/>
<xsl:for-each select="$this[generate-id(.)=generate-id(key('vdr10_kennzahl', p2))]">
<xsl:sort select="p2" order="ascending"/>
<POSTEN>
<xsl:attribute name="p1-id"><xsl:value-of select="p1"/></xsl:attribute>
<xsl:attribute name="p2-id"><xsl:value-of select="p2"/></xsl:attribute>
<xsl:for-each select="key('vdr10_kennzahl',p2)">
<IDENT-Zeile>
<BETRAG>
<xsl:value-of select="ident"/>
</BETRAG>
</IDENT-ZEILE>
</xsl:for-each>
</POSTEN>
</xsl:for-each>
</xsl:template>
und erzeugt einen Output wie den hier
<POSTEN p1-id="3" p2-id ="702">
<IDENT-zeile>XS0419605406</IDENT-zeile>
<IDENT-zeile>XS0188568751</IDENT-zeile>
<IDENT-zeile>XXXXXXXXXXXX</IDENT-zeile>
<IDENT-zeile>XS1048428012</IDENT-zeile>
</POSTEN>
<POSTEN p1-id="3" p2-id ="701">
<IDENT-zeile>AT0000A0N9A0</IDENT-zeile>
<IDENT-zeile>XS0418690201</IDENT-zeile>
<IDENT-zeile>XS0417728325</IDENT-zeile>
<IDENT-zeile>BE0000314238</IDENT-zeile>
<IDENT-zeile>ES0000101339</IDENT-zeile>
</POSTEN>
Das ist nicht exakt das was ich brauche. Ich brauche eine Ausgabe wie diese
<POSTEN p1-id="3" p2-id ="702">
<IDENT-zeile>XS0419605406</IDENT-zeile>
<IDENT-zeile>XS0188568751</IDENT-zeile>
</POSTEN>
<POSTEN p1-id="4" p2-id ="702">
<IDENT-zeile>XXXXXXXXXXXX</IDENT-zeile>
<IDENT-zeile>XS1048428012</IDENT-zeile>
</POSTEN>
<POSTEN p1-id="3" p2-id ="701">
<IDENT-zeile>AT0000A0N9A0</IDENT-zeile>
<IDENT-zeile>XS0418690201</IDENT-zeile>
<IDENT-zeile>XS0417728325</IDENT-zeile>
<IDENT-zeile>BE0000314238</IDENT-zeile>
<IDENT-zeile>ES0000101339</IDENT-zeile>
</POSTEN>
Ich ahne das ich ein weiteres for-each-Konstrukt brauche und habe nun seit heute morgen rumprobiert.
Irgendwie ist aber heute der Wurm drinnen und ich sehe den Wald vor lauter Bäumen nicht. Kann mir hier einer bitte auf die Sprünge helfen?
Comment