Dit is eigenlijk een vervolg vraag op een eerder gestelde vraag.
Ik heb een XML lijst:
---
<customers>
<customer> (repeating)
<code></code>
<name></name>
<contacts> (repeating)
<contactfunction></contactfunction>
<contactname></contactname>
<contactphone></contactphone>
<contactmail></contactmail>
</contacts>
<services> (repeating)
<service></service>
<team></team>
<link></link>
</services>
</customer>
<customer>
---
Ik heb de volgende XSL code:
---
01 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
02 <xsl:variable name="AantalKlanten" select="count(/customers/customer)"/>
03 <xsl:variable name="AantalKolommen" select="4"/>
04 <xsl:variable name="TotaalCellen" select="$AantalKlanten"/>
05 <xsl:variable name="ExtraCellen" select="$TotaalCellen mod $AantalKolommen"/>
06 <xsl:template match="/">
07 <p><br/>
08 <xsl:if test="$AantalKlanten > 0">
09 <table>
10 <xsl:call-template name="Tabel"/>
11 </table>
12 </xsl:if>
13 </p>
14 </xsl:template>
15 <xsl:template name="Tabel">
16 <xsl
aram name="Index" select="1"/>
17 <xsl:if test="$Index < $AantalKlanten">
18 <xsl:call-template name="Regel"><xsl:with-param name="Index" select="$Index"/></xsl:call-template>
19 <xsl:call-template name="Tabel">
20 <xsl:with-param name="Index" select="$Index + $AantalKolommen"/>
21 </xsl:call-template>
21 </xsl:if>
22 </xsl:template>
23 <xsl:template name="Regel">
24 <xsl
aram name="Index" select="1"/>
25 <tr>
26 <xsl:call-template name="Cel">
27 <xsl:with-param name="Index" select="$Index"/>
28 <xsl:with-param name="Teller" select="$Index + $AantalKolommen - 1"/>
29 </xsl:call-template>
30 </tr>
31 </xsl:template>
32 <xsl:template name="Cel">
33 <xsl
aram name="Index" select="1"/>
34 <xsl
aram name="Teller" select="1"/>
35 <td>
36 <p align="center">
37 <xsl:for-each select="/customers/customer">
38 <xsl:sort order="ascending" select="name"/>
39 <xsl:if test="position() = $Index">
40 <xsl:value-of select="code"/>
41 </xsl:if>
42 </xsl:for-each>
43 </p>
44 </td>
45 <xsl:if test="$Teller > $Index">
46 <xsl:call-template name="Cel">
47 <xsl:with-param name="Index" select="$Index + 1"/>
48 <xsl:with-param name="Teller" select="$Teller"/>
49 </xsl:call-template>
50 </xsl:if>
51 </xsl:template>
52 </xsl:stylesheet>
---
Dit script geeft als resultaat een tabel van een aantal kolommen (variabel "AantalKolommen"), waarin elke cel de inhoud staat van een node uit de XML lijst.
Echter lukt het me niet te filteren. Als ik in regel 39 de filter aanpas heb ik de volgende problemen:
- Als ik bijvoorbeeld bepaalde <code> of <naam> niet in de tabel wil hebben, krijg ik een lege cel in de tabel.
- Verder heb ik geen flauw idee hoe ik bijvoorbeeld op de inhoud van <service> of <team> kan filteren omdat dit herhalende elementen zijn.
Kan iemand mij helpen?
Ik heb een XML lijst:
---
<customers>
<customer> (repeating)
<code></code>
<name></name>
<contacts> (repeating)
<contactfunction></contactfunction>
<contactname></contactname>
<contactphone></contactphone>
<contactmail></contactmail>
</contacts>
<services> (repeating)
<service></service>
<team></team>
<link></link>
</services>
</customer>
<customer>
---
Ik heb de volgende XSL code:
---
01 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
02 <xsl:variable name="AantalKlanten" select="count(/customers/customer)"/>
03 <xsl:variable name="AantalKolommen" select="4"/>
04 <xsl:variable name="TotaalCellen" select="$AantalKlanten"/>
05 <xsl:variable name="ExtraCellen" select="$TotaalCellen mod $AantalKolommen"/>
06 <xsl:template match="/">
07 <p><br/>
08 <xsl:if test="$AantalKlanten > 0">
09 <table>
10 <xsl:call-template name="Tabel"/>
11 </table>
12 </xsl:if>
13 </p>
14 </xsl:template>
15 <xsl:template name="Tabel">
16 <xsl

17 <xsl:if test="$Index < $AantalKlanten">
18 <xsl:call-template name="Regel"><xsl:with-param name="Index" select="$Index"/></xsl:call-template>
19 <xsl:call-template name="Tabel">
20 <xsl:with-param name="Index" select="$Index + $AantalKolommen"/>
21 </xsl:call-template>
21 </xsl:if>
22 </xsl:template>
23 <xsl:template name="Regel">
24 <xsl

25 <tr>
26 <xsl:call-template name="Cel">
27 <xsl:with-param name="Index" select="$Index"/>
28 <xsl:with-param name="Teller" select="$Index + $AantalKolommen - 1"/>
29 </xsl:call-template>
30 </tr>
31 </xsl:template>
32 <xsl:template name="Cel">
33 <xsl

34 <xsl

35 <td>
36 <p align="center">
37 <xsl:for-each select="/customers/customer">
38 <xsl:sort order="ascending" select="name"/>
39 <xsl:if test="position() = $Index">
40 <xsl:value-of select="code"/>
41 </xsl:if>
42 </xsl:for-each>
43 </p>
44 </td>
45 <xsl:if test="$Teller > $Index">
46 <xsl:call-template name="Cel">
47 <xsl:with-param name="Index" select="$Index + 1"/>
48 <xsl:with-param name="Teller" select="$Teller"/>
49 </xsl:call-template>
50 </xsl:if>
51 </xsl:template>
52 </xsl:stylesheet>
---
Dit script geeft als resultaat een tabel van een aantal kolommen (variabel "AantalKolommen"), waarin elke cel de inhoud staat van een node uit de XML lijst.
Echter lukt het me niet te filteren. Als ik in regel 39 de filter aanpas heb ik de volgende problemen:
- Als ik bijvoorbeeld bepaalde <code> of <naam> niet in de tabel wil hebben, krijg ik een lege cel in de tabel.
- Verder heb ik geen flauw idee hoe ik bijvoorbeeld op de inhoud van <service> of <team> kan filteren omdat dit herhalende elementen zijn.
Kan iemand mij helpen?