Reputation: 79
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
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