** WAARSCHUWING: XSLT-N00B POST **
Dit is mijn eerste ervaring met XSLT en ik kom er niet uit. Heb hier al redelijk wat topics over gezien maar heb nog geen topic gevonden waarmee mijn group probleem wordt aangepakt.
Ik wil het volgende doen. Ik heb een XML waarin meerdere malen een enkele parent-child tree in zit:
Het is nu de bedoeling dat er een zelfde structuur uit komt waarbij wordt gegroepeerd op velden key1 & key2. Daarnaast moeten ook bepaalde int- & stringvelden ook worden samengevoegd en andere gewoon gekopieerd worden.
Uitgaande van de bovenstaande input zou er uit moeten komen:
Het groeperen op zich wil al wel lukken middels de volgende for-each select:
Wat me nu dus nog niet lukt is om inhoud van deze selectie opgeteld te krijgen. Ook moet ik nog testen of bovenstaande group helemaal goed werkt. Ik denk dat ik voor de sum of concat gebruik moet maken van de current key1 & key2 velden, ik weet alleen niet hoe...
Als additionele info, ik wil een dergelijke transform doen vanuit een Java 1.3 applicatie. Ik denk hierom dat ik me moet beperken tot XSLT 1.0...
Dit is mijn eerste ervaring met XSLT en ik kom er niet uit. Heb hier al redelijk wat topics over gezien maar heb nog geen topic gevonden waarmee mijn group probleem wordt aangepakt.
Ik wil het volgende doen. Ik heb een XML waarin meerdere malen een enkele parent-child tree in zit:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| <records> <record> <key1>123</key1> <key2>456</key2> <intvalue>1000</intvalue> <stringvalue>text1</stringvalue> <tobecopied>copy</tobecopied> </record> <record> <key1>234</key1> <key2>567</key2> <intvalue>5000</intvalue> <stringvalue>text2</stringvalue> <tobecopied>copy</tobecopied> </record> <record> <key1>123</key1> <key2>456</key2> <intvalue>1000</intvalue> <stringvalue>text3</stringvalue> <tobecopied>copy</tobecopied> </record> </records> |
Het is nu de bedoeling dat er een zelfde structuur uit komt waarbij wordt gegroepeerd op velden key1 & key2. Daarnaast moeten ook bepaalde int- & stringvelden ook worden samengevoegd en andere gewoon gekopieerd worden.
Uitgaande van de bovenstaande input zou er uit moeten komen:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| <records> <record> <key1>123</key1> <key2>456</key2> <intvalue>2000</intvalue> <stringvalue>text1 + text3</stringvalue> <tobecopied>copy</tobecopied> </record> <record> <key1>234</key1> <key2>567</key2> <intvalue>5000</intvalue> <stringvalue>text2</stringvalue> <tobecopied>copy</tobecopied> </record> </records> |
Het groeperen op zich wil al wel lukken middels de volgende for-each select:
XML:
1
| <xsl:for-each select="records/record[not(key1= preceding-sibling::record/key1)][not(key2= preceding-sibling::record/key2)]"> |
Wat me nu dus nog niet lukt is om inhoud van deze selectie opgeteld te krijgen. Ook moet ik nog testen of bovenstaande group helemaal goed werkt. Ik denk dat ik voor de sum of concat gebruik moet maken van de current key1 & key2 velden, ik weet alleen niet hoe...
Als additionele info, ik wil een dergelijke transform doen vanuit een Java 1.3 applicatie. Ik denk hierom dat ik me moet beperken tot XSLT 1.0...
Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2