0

I'm new in Xpath and for school I need to find: the number (count) of 'leerling' where 'Broerszussen' is at least 1. Maybe I'm doing something stupid because I'm a beginner.

The XML where I have to do the exercise:

<?xml version="1.0" encoding="UTF-8"?>
<Klasgenoten>
<Leerling Gemeente = "Overpelt">
    <Algemeen>
        <Naam>Jef</Naam>
        <Geboortejaar> 1999 </Geboortejaar>
        <BroersZussen>2</BroersZussen>
    </Algemeen>
    <Interesses>
      <Hobby>Joggen</Hobby>
      <Muziekgenre>Metal</Muziekgenre>
      <Jeugdbeweging>KSA</Jeugdbeweging>
    </Interesses>
    <Onvoldoendes>2</Onvoldoendes>
    <Gemiddelde>65</Gemiddelde>
    <TofsteVak>Wiskunde</TofsteVak>
</Leerling>
<Leerling Gemeente = "Heusden">
    <Algemeen>
        <Naam>Karel</Naam>
        <Geboortejaar> 2000 </Geboortejaar>
        <BroersZussen>0</BroersZussen>
    </Algemeen>
    <Interesses>
      <Hobby>Voetbal</Hobby>
      <Muziekgenre>Dance</Muziekgenre>
      <Jeugdbeweging>Geen</Jeugdbeweging>
    </Interesses>
    <Onvoldoendes>0</Onvoldoendes>
    <Gemiddelde>83</Gemiddelde>
    <TofsteVak>Software</TofsteVak>
</Leerling>
<Leerling Gemeente = "Koersel">
    <Algemeen>
        <Naam>Joris</Naam>
        <Geboortejaar> 1998 </Geboortejaar>
        <BroersZussen>1</BroersZussen>
    </Algemeen>
    <Interesses>
      <Hobby>Atletiek</Hobby>
      <Muziekgenre>Dance</Muziekgenre>
      <Jeugdbeweging>Chiro</Jeugdbeweging>
    </Interesses>
    <Onvoldoendes>6</Onvoldoendes>
    <Gemiddelde>33</Gemiddelde>
    <TofsteVak>LO</TofsteVak>
</Leerling>
<Leerling Gemeente = "Beringen">
    <Algemeen>
        <Naam>Jente</Naam>
        <Geboortejaar> 1999 </Geboortejaar>
        <BroersZussen>3</BroersZussen>
    </Algemeen>
    <Interesses>
      <Hobby>Voetbal</Hobby>
      <Muziekgenre>Hardrock</Muziekgenre>
      <Jeugdbeweging>KSA</Jeugdbeweging>
    </Interesses>
    <Onvoldoendes>1</Onvoldoendes>
    <Gemiddelde>79</Gemiddelde>
    <TofsteVak>Wiskunde</TofsteVak>
</Leerling>

... etc (could add more)

My Xpath code:

count(//Leerling[//BroersZussen>0])

I always get 7 as answer but It should be 5

1 Answers1

0

You can try this XPath-1.0 expression:

count(//Leerling[Algemeen/BroersZussen>0])

For your example XML, the output is 3.
Or, closer to your initial attempt, you can also use

count(//Leerling[.//BroersZussen>0])

because your error was to use the global axis // instead of the relative-to-the-current-node axis .//. Have a look here.

zx485
  • 28,498
  • 28
  • 50
  • 59