[XSL][XML] Variabele kolommen

Pagina: 1
Acties:

  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

Topicstarter
Hoi,

Ik heb een problempje met een xsl en ik begrijp er echt niks meer van.
w3schools ben ik afgestruind en met templates heb ik wat gerommeld maar voor elkaar krijgen doe ik het niet.

Ik wil dus met 1 xml en 1 xsl dynamisch de waarden en kolommen weergeven

Voorbeeld van de xml
code:
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="xsl/default.xsl"?>
<syntec>
    <column>
        <col><![CDATA[CustomerID]]></col>
    </column>
    <column>
        <col><![CDATA[CompanyName]]></col>
    </column>
    <column>
        <col><![CDATA[ContactName]]></col>
    </column>
    <column>
        <col><![CDATA[ContactTitle]]></col>
    </column>
    <column>
        <col><![CDATA[Address]]></col>
    </column>
    <column>
        <col><![CDATA[City]]></col>
    </column>
    <column>
        <col><![CDATA[Region]]></col>
    </column>
    <column>
        <col><![CDATA[PostalCode]]></col>
    </column>
    <column>
        <col><![CDATA[Country]]></col>
    </column>
    <column>
        <col><![CDATA[Phone]]></col>
    </column>
    <column>
        <col><![CDATA[Fax]]></col>
    </column>
    <record>
        <CustomerID><![CDATA[ALFKI]]></CustomerID>
        <CompanyName><![CDATA[Alfreds Futterkiste]]></CompanyName>
        <ContactName><![CDATA[Maria Anders]]></ContactName>
        <ContactTitle><![CDATA[Sales Representative]]></ContactTitle>
        <Address><![CDATA[Obere Str. 57]]></Address>
        <City><![CDATA[Berlin]]></City>
        <Region />
        <PostalCode><![CDATA[12209]]></PostalCode>
        <Country><![CDATA[Germany]]></Country>
        <Phone><![CDATA[030-0074321]]></Phone>
        <Fax><![CDATA[030-0076545]]></Fax>
    </record>
    <record>
        <CustomerID><![CDATA[ANATR]]></CustomerID>
        <CompanyName><![CDATA[Ana Trujillo Emparedados y helados]]></CompanyName>
        <ContactName><![CDATA[Ana Trujillo]]></ContactName>
        <ContactTitle><![CDATA[Owner]]></ContactTitle>
        <Address><![CDATA[Avda. de la Constitución 2222]]></Address>
        <City><![CDATA[México D.F.]]></City>
        <Region />
        <PostalCode><![CDATA[05021]]></PostalCode>
        <Country><![CDATA[Mexico]]></Country>
        <Phone><![CDATA[(5) 555-4729]]></Phone>
        <Fax><![CDATA[(5) 555-3745]]></Fax>
    </record>
</syntec>


Even een voorbeeld van de xls (dit werkt niet maar zo wil ik het)
code:
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
33
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<link href="css/default.css" rel="stylesheet" type="text/css" />
<body>

<table border="0" cellpadding="0" cellspacing="0">
    <tr>
        <xsl:for-each select="syntec/column">
            <th class="header"><xsl:value-of select="col"/></th>
        </xsl:for-each>
    </tr>

    <xsl:for-each select="syntec/record">
        <tr style="background-color: #FFFFFF">
                <xsl:variable name="row" select="."/>
                
                <xsl:for-each select="../column">
                
                <xsl:variable name="colname" select="col"/>
                    <td class="cell">
                        <xsl:value-of select="$row/$colname"/>
                    </td>
                </xsl:for-each>
        </tr>
    </xsl:for-each>

</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>


Deze xslt werkt wel en geeft eigenlijk wel wat ik wil maar nu heb ik geen invoed over de kolommen, gewoon alles wat meegestuurd wordt.
code:
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="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<link href="css/default.css" rel="stylesheet" type="text/css" />
<body>

<table border="0" cellpadding="0" cellspacing="0">
    <tr>
        <xsl:for-each select="syntec/column">
            <th class="header"><xsl:value-of select="col"/></th>
        </xsl:for-each>
    </tr>

    <xsl:for-each select="syntec/record">
        <tr style="background-color: #FFFFFF">
                <xsl:variable name="row" select="."/>
                
                <xsl:for-each select="*">
                    <td class="cell">
                        <xsl:value-of select="."/>
                    </td>
                </xsl:for-each>
        </tr>
    </xsl:for-each>

</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

En ik wil kunnen aangeven dat b.v de CustomerID niet zichtbaar is.

Kan iemand me een beetje helpen want ik loop echt vast

  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-04 17:38
Gewoon een extra attribuut aan je column hangen bijvoorbeeld "visible" en dan aan de hand van een xsl:choose of xsl:if laten kiezen of de kolom wel of niet weergegeven moet worden. Eventueel kun je ook nog icm met position() van de kolom werken en position() van de recordkolommen.