Search code examples
xmlxslt

How to use the count() function in XSL - trying to count the amount of "A"s there are in a report


I'm trying to count the amount of A's there are in a school report.

Here is the report:

<class>
  <student>
    <first-name>Jane</first-name>
    <last-name>Doe</last-name>
    <grade>A</grade>
  </student>
  <student>
    <first-name>John</first-name>
    <last-name>Smith</last-name>
    <grade>B</grade>
  </student>
  <student>
    <first-name>Harry</first-name>
    <last-name>Grandson</last-name>
    <grade>A</grade>
  </student>
  <student>
    <first-name>Lacy</first-name>
    <last-name>Jones</last-name>
    <grade>C</grade>
  </student>
</class>

How do I get the number of A's in the report?

I came up with:

<xsl:value-of select="count(/class/student/grade)"/>

But that counts everything - So I tried to get only the A's with this:

<xsl:value-of select="count(/class/student/grade/A)"/>

But this doesn't work either.

I also tried this:

<xsl:value-of select="count(/class/student[grade=A])"/>

But that doesn't work either - what is the problem?


Solution

  • <xsl:value-of select="count(/class/student[grade='A'])"/>