[PHP, XML & XSL] Probleem met multi column tables.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • FvH
  • Registratie: Oktober 2001
  • Laatst online: 07-01 13:55

FvH

Aan het typen...

Topicstarter
Mijn xml ziet eruit als:
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
<iets>
  <cat>
    <oms>omschrijving</oms>
    <art>
      <nr>1</nr>
      <artoms>blaat</artoms>
      <prijs>1.00</prijs>
    </art>
  </cat>
  <cat>
    <oms>omschrijving2</oms>
    <art>
      <nr>2</nr>
      <artoms>blaat2</artoms>
      <prijs>2.00</prijs>
    </art>
    <art>
      <nr>3</nr>
      <artoms>blaat3</artoms>
      <prijs>3.00</prijs>
    </art>
    <art>
      <nr>4</nr>
      <artoms>blaat4</artoms>
      <prijs>4.00</prijs>
    </art>
</cat>
...
</iets>


wat ik nu wil is dat ik een tabel krijg voor iedere "cat" met daaronder alle art's. Nu heb ik dat met templates voor elkaar. Nu zijn er blokken met "oms" als table header en daaronder de artikelen weergegeven. Nu wil ik die blokken in 2 columns of 3 columns weergeven. Die blokken moeten zich dus horizontaal verdelen over de 3 columns.

Nu heb ik het volgende in m'n xsl al geprobeerd:
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
  <xsl:template match="cat">
  <xsl:choose>
    <xsl:when test="position() mod 2 = 1">
        <xsl:text disable-output-escaping="yes">&lt;tr&gt;</xsl:text>
        <td>
          <table border="0">
            <th colspan="2" width="350">
              <xsl:value-of select="oms"/>
            </th>
            <xsl:apply-templates select="artikel"/>
          </table>
        </td>
    </xsl:when>
    <xsl:otherwise>
        <td>
          <table border="0">
            <th colspan="2" width="350">
              <xsl:value-of select="oms"/>
            </th>
            <xsl:apply-templates select="artikel"/>
          </table>
         </td>
        <xsl:text disable-output-escaping="yes">&lt;/tr&gt;</xsl:text>
    </xsl:otherwise>
  </xsl:choose>
  </xsl:template>


maar dat wil dus niet werken... ik heb ook al gezocht, maar vind eigenlijk alleen deze oplossing...

plz help :)

What are clouds made of? Linux servers mostly!


Acties:
  • 0 Henk 'm!

  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05 22:30

FendtVario

The leader drives Vario!

Ik zie dat je al een template hebt voor artikel (moet je die niet 'art') noemen maar die heb je niet opgenomen. Als ik je XSL gebruik zie ik alleen de omschrijvingen, dit komt waarschijnlijk door die missende art. Het verdelen van de cat/oms over 3 kolommen kun je toch gewoon doen met een colspan="3" in de <td>-tag? Ik weet niet of dit helemaal is wat je bedoelt maar met de volgende XSl krijg je per <cat> een tabel met de artikelen.

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
<?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="iets">
    <html>
    <body>
      <xsl:apply-templates select="cat"/>
    </body>
    </html>
  </xsl:template>

  <xsl:template match="art">
    <tr>
      <td><xsl:value-of select="nr"/></td>
      <td><xsl:value-of select="artoms"/></td>
      <td><xsl:value-of select="prijs"/></td>
    </tr>
  </xsl:template>

  <xsl:template match="cat">
    <table border="1">
      <tr><td colspan="3"><xsl:value-of select="oms"/></td></tr>

      <xsl:apply-templates select="art"/>
    </table>
  </xsl:template>

</xsl:stylesheet>

www.fendt.com | Nikon D7100 | PS5


Acties:
  • 0 Henk 'm!

  • FvH
  • Registratie: Oktober 2001
  • Laatst online: 07-01 13:55

FvH

Aan het typen...

Topicstarter
naamgeving is in m'n code wel consequent... had ff snel een voorbeeld xml getikt en xsl gekopieerd ;)
ik krijg ongeveer zo'n 40 van die blokjes. Dus tabellen met een colspan=2 als header en vervolgens omschrijving / prijs v.d. arts eronder.

Probleem is dat ik die 40 blokken evenredig over 3 columns wil verdelen. Dus gewoon met een td is het niet te doen, want dan krijg ik alles naast elkaar. Ik denk zelf dat ik iets met xsl:choose enzo moet doen, maar zie wellicht iets over het hoofd?

What are clouds made of? Linux servers mostly!