Toon posts:

[XML] Aanspreken diepe tag met XSL

Pagina: 1
Acties:

Verwijderd

Topicstarter
Stel we hebben het volgende

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<videotheek>
<medium soort="dvd">
        <titel>The Perfect Storm</titel>
        <regisseur>Wolfgang Petersen</regisseur>
        <hoofdrolspelers>
            <hoofdrolspeler>
                <naam>George Clooney</naam>
                <speeltitel>Ocean 11</speeltitel>
                <speeltitel>Three Kings</speeltitel>
            </hoofdrolspeler>
            <hoofdrolspeler>
                <naam>Mark Wahlberg </naam>
                <speeltitel>Three Kings</speeltitel>
                <speeltitel>Boogie Nights</speeltitel>
            </hoofdrolspeler>
        </hoofdrolspelers>
        <gerne>Humor</gerne>
        <producent>Warner Bros</producent>
    </medium>
</videotheek>


Waarbij even gelet moet worden op hoofdrolspelers > hoofdrolspeler > naam

En we gebruiken een XSL file daarbij

code:
1
2
3
4
<xsl:template match="hoofdrolspeler">
     <xsl:value-of select="naam"/> (<xsl:value-of select="speeltitel"/>)<br />

    </xsl:template>



Waarom krijg ik niet in m'n weergave dan? (gebruik ik bijvoorbeeld titel dan werkt het wel!). Iets te maken dat het een element is van een element van een element?

[ Voor 19% gewijzigd door Verwijderd op 20-04-2004 10:57 ]


  • NightBird
  • Registratie: Januari 2000
  • Laatst online: 21:50

NightBird

DPC-Crew Coding
volgens mij moet je hem zo aanroepen:
code:
1
<xsl:template match="hoofdrolspelers/hoofdrolspeler">

WatHoorJeWaar · Asobakken
Eerdere projecten: Leading Courses · Brandstof-zoeker.nl · Voertuig-zoeker.nl


  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 24-11-2025

PommeFritz

...geen friet

Bij mij werkt het gegeven voorbeeld gewoon, de output is:
code:
1
2
3
4
5
6
7
8
        The Perfect Storm
        Wolfgang Petersen

            George Clooney (Ocean 11)<br>
            Mark Wahlberg  (Three Kings)<br>

        Humor
        Warner Bros

Ik gebruik Xalan 2.6.0. Msxsl doet het ook gewoon goed. Ik zie het probleem niet :?

FireFox - neem het web in eigen hand


Verwijderd

Topicstarter
Inderdaad.. hij geeft dus maar [i]1 film weer ;) ipv 2[i]...

nog even doorzoeken, maar kom nu al aardig wat verder... Die andere fout bleek inderdaat te zitten in

hoofdrolspelers/hoofdrolspeler

had dat eerder al geprobeerd, maar had toen medium er nog voor gezet.

code:
1
2
3
<xsl:template match="hoofdrolspelers/hoofdrolspeler">
        <xsl:value-of select="naam"/> (<xsl:value-of select="speeltitel"/>)<br/>
    </xsl:template>

[ Voor 38% gewijzigd door Verwijderd op 20-04-2004 11:26 ]


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Verwijderd schreef op 20 april 2004 @ 11:24:
Inderdaad.. hij geeft dus maar [i]1 film weer ;) ipv 2[i]...
Hoezo maar 1 ipv. 2? Ik zie maar 1 film staan in je voorbeeldje dus het werkt gewoon zoals het hoort. Of probeer je wat anders te doen?

Noushka's Magnificent Dream | Unity


Verwijderd

(Het loceren (aanspreken) van elementen doe je met XPath, waarvan je gebruikt in een attribuut van een element in de XSLT namespace.)

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
ik snap helemaal niet wat er nou eigenlijk in de startpost bedoeld wordt (post je hele xsl file eens, of...zijn die 3 regels alles wat je doet?) maar letterlijk een "diepe tag" aanspreken kan ik vertalen naar het gebruik van de descendant-or-self axis, in het kort //.

dus
code:
1
2
3
4
5
6
<?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="//hoofdrolspeler">
           ...
    </xsl:template>
</xsl:stylesheet>


selecteert alle hoofdrolspelers, ongeacht in welk medium en hoeveel erin zitten
Pagina: 1