Tom Dong
Tom Dong

Reputation: 79

How to count multi-child-node of an XML file via XSLT

Currently, I met a problem when using XSLT to do a check in some XML file just like below

<?xml version="1.0" encoding="UTF-8"?>
<School> 
    <Grade name="grade1">
        <Class name=”Class1”>
            <LevelA>12</LevelA>
            <LevelC>1</LevelC >
        </Class>
    </Grade>
    <Grade name="grade2">
        <Class name=”ClassA2”>
            <LevelA>14</LevelA>
            <LevelC>0</LevelC>
        </Class>
        <Class name=”ClassB2”>
            <LevelA>10</LevelA>                 
            <LevelC>0</LevelC>
        </Class>
    </Grade>
    <Grade name="grade3"/>
    <Grade name="grade4">
        <Class name=”ClassA4”>
            <LevelA>12</LevelA>                 
            <LevelC>0</LevelC>
        </Class>
        <Class name=”ClassB4”>
            <LevelA>12</LevelA>                 
            <LevelC>2</LevelC>
        </Class>
    </Grade>
    <Grade name="grade5"/>
</School>

If All the Grade node contains Class (one or more), then write "Good" in the result XML file.

<xsl:if test="???">
    <p>
        <h3 style="color:green;">Good</h3>
    </p>
</xsl:if>

How to describe the condition at "???"?

Upvotes: 0

Views: 53

Answers (1)

Tim C
Tim C

Reputation: 70648

Rather than checking if all the Grade elements contain a Class, check that there exist no Grade element without a Class.

Try this expression:

 <xsl:if test="not(//Grade[not(Class)])">

Upvotes: 1

Related Questions