ik ben bezig om uit een groot xml bestand specifieke informatie te halen dmv XSL voor export naar csv
waar ik nu tegenaanloop is dat ik in mijn export waarden meekrijg die niet ge-exporteerd moeten worden en ook moet ik terugkomende waarden niet dubbel tonen.
de xml:
de xsl
dit geeft als output
de output is niet helemaal wat ik nodig heb, de inleiding moet worden overgeslagen en waarden die in de vorige regel al bekend waren moeten niet worden getoond:
hoe kan ik mijn xsl aanpassen om te zorgen dat mijn output het gewenste format krijgt?
waar ik nu tegenaanloop is dat ik in mijn export waarden meekrijg die niet ge-exporteerd moeten worden en ook moet ik terugkomende waarden niet dubbel tonen.
de xml:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| <?xml version="1.0" encoding="utf-8" ?> <transport titel="vervoer"> <inleiding naam="inleiding">textinleiding</inleiding> <type titel="car"> <brand titel="volvo"> <color titel="kleur">red</color> </brand> </type> <type titel="car"> <brand titel="volvo"> <color titel="kleur">green</color> </brand> </type> <type titel="car"> <brand titel="ford"> <color titel="kleur">red</color> </brand> </type> <type titel="bike"> <brand titel="trek"> <color titel="kleur">blue</color> </brand> </type> <type titel="trike"> <brand titel="foo" /> </type> <type> <brand titel="porsche"> <color titel="kleur">black</color> </brand> </type> </transport> |
de xsl
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" indent="no" /> <xsl:strip-space elements="*" /> <xsl:template match="/"> <xsl:apply-templates /> </xsl:template> <xsl:template match="transport"> <xsl:apply-templates /> </xsl:template> <xsl:template match="type"> <xsl:value-of select="@titel"/> <xsl:text>,</xsl:text> <xsl:apply-templates select="brand" /> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="brand"> <xsl:value-of select="@titel"/> <xsl:text>,</xsl:text> <xsl:apply-templates select="color" /> </xsl:template> <xsl:template match="color"> <xsl:value-of select="@titel"/>-<xsl:value-of select="."/> </xsl:template> </xsl:stylesheet> |
dit geeft als output
textinleiding car | volvo | kleur-red |
car | volvo | kleur-green |
car | ford | kleur-red |
bike | trek | kleur-blue |
trike | foo | |
porsche | kleur-black |
de output is niet helemaal wat ik nodig heb, de inleiding moet worden overgeslagen en waarden die in de vorige regel al bekend waren moeten niet worden getoond:
car | volvo | kleur-red |
kleur-green | ||
ford | kleur-red | |
bike | trek | kleur-blue |
trike | foo | |
porsche | kleur-black |
hoe kan ik mijn xsl aanpassen om te zorgen dat mijn output het gewenste format krijgt?