Om een sequence op te bouwen met komma-gescheiden records wil ik graag tussen iedere waarde een komma zetten behalve de laatste. Dat laatste is waar de schoen wringt. Ik doe een selectie en wil vervolgens het laatste element vergelijken met het huidige om te kijken of dit het laatste element is (dan géén komma).
Probleem is dat er geen goed resultaat uit komt. Gezien de selectie moet er toch altijd een laatste element zijn, echter geeft XSLT bij elke node aan dat het de laatste is (en zet dus geen komma).
De elementen bevinden zich niet op hetzelfde niveau en kunnen genest zijn.
Zie ik iets over het hoofd of doe ik die vergelijking van nodes niet goed?
Probleem is dat er geen goed resultaat uit komt. Gezien de selectie moet er toch altijd een laatste element zijn, echter geeft XSLT bij elke node aan dat het de laatste is (en zet dus geen komma).
De elementen bevinden zich niet op hetzelfde niveau en kunnen genest zijn.
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| <xsl:template match=" ... "> <xsl:apply-templates select="mysql:table" mode="fieldlist" /> <xsl:apply-templates select="//mysql:join/mysql:table" mode="fieldlist" /> </xsl:template> <xsl:template match="mysql:query/mysql:table | mysql:join/mysql:table" mode="fieldlist"> <xsl:apply-templates select="mysql:field" /> <xsl:if test="(//mysql:query/mysql:table | //mysql:join/mysql:table)[last()] != .">, </xsl:if> </xsl:template> <xsl:template match="mysql:query/mysql:table/mysql:field | mysql:join/mysql:table/mysql:field"> ... </xsl:template> |
Zie ik iets over het hoofd of doe ik die vergelijking van nodes niet goed?