[XSLT] Children tellen adhv voorwaarden

Pagina: 1
Acties:

  • jsiegmund
  • Registratie: Januari 2002
  • Laatst online: 16:10
Ik wil van een bepaalde node het aantal nodes tellen dat voldoet aan de voorwaarde dat de node naam x of y heeft. Nu kun je dat natuurlijk redelijk eenvoudig oplossing door een recursief template, maar ik vroeg me af of je de count() functie ook niet zover kunt krijgen dat deze zo werkt.

Zo kun je bijvoorbeeld op deze manier:
code:
1
count(./artikelenset/child::*/*/*[@set])

nodes tellen die het attribuut @set hebben. Beetje lelijk uiteraard, aangezien dat */*/*/* maar beperkt is en ik op deze manier nog niet kan testen welke naam de node heeft, maar misschien met wat aanpassingen... ?

  • joopst
  • Registratie: Maart 2005
  • Laatst online: 01-10-2024
stel je hebt de volgende xml:
code:
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
<root>
   <child name="jan">
      <child name="jan">
         <child name="jan">
              <child name="henk"/>
         </child>
      </child>
   </child>
</root>

dan kan je de volgende xpath gebruiken:
code:
1
count(descendant::node()[@name='jan' or @name='henk'])

  • joopst
  • Registratie: Maart 2005
  • Laatst online: 01-10-2024
op deze pagina staan nog meer truuks die je kan gebruiken met selecties maken

  • jsiegmund
  • Registratie: Januari 2002
  • Laatst online: 16:10
Hmm bedankt, dat ziet er veelbelovend uit en bespaart een hoop gedoe met de aanroepen van recursieve functies! Nu nog even uitzoeken hoe je test op de naam van een node zelf, maar daar is vast wel uit te komen.

  • joopst
  • Registratie: Maart 2005
  • Laatst online: 01-10-2024
op deze site staat hoe je de naam op kan vragen