[XSL] vorige en volgende node

Pagina: 1
Acties:

  • mr_star
  • Registratie: Maart 2003
  • Laatst online: 20-04 11:42
Stel ik heb volgende lijst met nodes:

XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<images>
  <image>
    <id>sd4sdfsd45sdf653s5dfsdf256j1</id>
  </image>
   <image>
    <id>sd4sdfsd45sdf653s5dfsdf256j2</id>
  </image>
  <image>
    <id>sd4sdfsd45sdf653s5dfsdf2563j</id>
    <active>1</active>
  </image>
  <image>
    <id>sd4sdfsd45sdf653s5dfsdf256j4</id>
  </image>
</images>


Ik weet welke foto ik moet afbeelden door de <active> node. Die kan ik aanspreken op volgende manier:
XML:
1
[img]"/image{/images/image[active[/img]

Maar nu wil ik weten welke de vorige en de volgende afbeelding is.
Ik ben een beetje creatief geweest en had gehoopt dat dit zou werken:
XML:
1
[img]"/image{/images/image[position()[/img]


Maar dit is blijkbaar een beetje té creatief. Ik kom er dus niet uit. Hier op got vindt ik ook niets bruikbaar. (probleem is lastig me te omschrijven met goede zoektermen)

[ Voor 13% gewijzigd door mr_star op 11-12-2005 17:36 ]


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Je wilt het volgende broertje/zusje van de huidige node hebben. In het engels heet dat "sibling" en volgens de XPath syntax doe je dat met following-sibling.

Bron

  • mr_star
  • Registratie: Maart 2003
  • Laatst online: 20-04 11:42
bigbeng schreef op zondag 11 december 2005 @ 17:58:
Je wilt het volgende broertje/zusje van de huidige node hebben. In het engels heet dat "sibling" en volgens de XPath syntax doe je dat met following-sibling.

Bron
Dit krijg ik spijtig genoeg maar niet werkend. Maar ik heb het opgelost op een iets minder mooie manier:

XML:
1
2
3
4
5
6
7
<xsl:for-each select="images/image">
  <xsl:if test="active = 1">
    <xsl:variable name="pos"><xsl:value-of select="position()" /></xsl:variable>
      <a href="{/album/5/{/images/image[position() = ($pos - 1)]/order}">[img]"/image/big/{/images/image[position()[/img]</a><br />
      <a href="{/album/5/{/images/image[position() = ($pos + 1)]/order}">[img]"/image/big/{/images/image[position()[/img]</a><br />
    </xsl:if>
</xsl:for-each>


Mensen die zich geroepen voelen om een mooiere manier te laten zien mogen dit uiteraard nog doen. Voorlopig gebruik ik dit. De sibling methode zal ik eens rustig onder handen nemen als ik tijd te veel heb.