[XML/XSL] Sub-Elementen samenvoegen in cel

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • HyperioN
  • Registratie: April 2003
  • Laatst online: 24-05 15:42
Ik wil met behulp van een .xsl-file een grafische representatie maken van een xml-file, in een html-table.
Dat gaat allemaal best goed (het is niet zo moelijk), maar ik loop vast wanneer er meerder sub-elementen zijn.

Voorbeeld XML
code:
1
2
3
4
5
6
7
8
9
10
11
<Catalog>
  <Product>
    <Productid>Id1</Productid>
    <Name>Naam</Name>
    <Features>
      <Feature>feature 1</Feature>
      <Feature>feature 2</Feature>
      <Feature>feature 3</Feature>
    </Features>
  </Product>
</Catalog>


Wat ik nu dus wil, is dat zowel feature1 als feature2 samengevoegd in één html-table-cell, eventueel met een enter (<br/>) ertussen.

Nu heb ik dit als XSL:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<xsl:template match="/">
  <html>
  <body>
  <table>
    <xsl:for-each select="Catalog/Product">
    <tr>
      <td><xsl:value-of select="Productid"/></td>
      <td><xsl:value-of select="Name"/></td>
      <td><xsl:value-of select="Features/Feature"/></td>
    </tr>
    </xsl:for-each>
  </table>
  </body>
  </html>
</xsl:template>


Ik krijg dan alleen feature1 te zien in de table (redelijk logisch).

Dus ik dacht; aja, ik moet zo'n for-each loopje doen:
code:
1
<xsl:for-each select="Features/Feature"><xsl:value-of select="Feature"/></xsl:for-each>

Dan krijg ik echter helemaal niks te zien.

Ook de volgende varianten werken niet:
code:
1
<xsl:for-each select="Features/Feature"><xsl:value-of select="Features/Feature"/><br/></xsl:for-each>

(Ook leeg)

code:
1
<xsl:for-each select="Features/Feature"><xsl:value-of select="../Feature"/></xsl:for-each>

Nu krijg ik drie keer feature1 te zien.. :'( (precies het aantal Feature-elementen dat er is. Bij 5 elementen krijg ik 5x feature1 te zien.

Heb al diverse xml en xsl tutorials, manuals etc. gelezen maar kan het nergens vinden.
Heb zoekopdrachten gedaan met de keywords xml, xsl, join elements, combine elements.. maar kom er nog niet achter.
Heb het gevoel dat ik heel dichtbij ben.. maar goed.
Iemand die een duwtje in de juiste richting kan geven?

offtopic:
Ja, dit topic is het kleine broertje van \[PHP/SOAP/XML] Element toevoegen in SOAP-verkregen XML maar gezien dit een totaal ander iets betreft en ander subforum, toch maar een eigen topic ;)

Acties:
  • 0 Henk 'm!

  • Pkunk
  • Registratie: December 2003
  • Laatst online: 11-09 17:52
Even heel snel want ik moet weg. maar volgens mij wil je dit:
XML:
1
<xsl:for-each select="Features/Feature"><xsl:value-of select="."/><br/></xsl:for-each>

Hallo met Tim


Acties:
  • 0 Henk 'm!

  • HyperioN
  • Registratie: April 2003
  • Laatst online: 24-05 15:42
Helemaal geweldig, dat werkt inderdaad. :D
Zó simpel.. maar ja, hoe vind je het als je het niet weet?
8)7

[ Voor 3% gewijzigd door HyperioN op 08-10-2009 20:31 ]


Acties:
  • 0 Henk 'm!

  • Pkunk
  • Registratie: December 2003
  • Laatst online: 11-09 17:52
HyperioN schreef op donderdag 08 oktober 2009 @ 20:30:
Helemaal geweldig, dat werkt inderdaad. :D
Zó simpel.. maar ja, hoe vind je het als je het niet weet?
8)7
Volgens mij begreep je de context niet goed waardoor je niet kon concluderen dat je de huidige waarde moest hebben. En/of je wist niet hoe je die te pakken kon krijgen.

Either way, tis vrij basic xslt/xpath. Gewoon even geduldig tutorials doorlezen:

http://www.w3schools.com/xpath/xpath_syntax.asp

Hallo met Tim