如何通过XSLT计算XML文件的多子节点

时间:2014-02-28 12:32:29

标签: xml xslt

目前,我在使用XSLT检查某些XML文件时遇到了一个问题,就像下面的

一样
<?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>

如果All Grade节点包含Class(一个或多个),则在结果XML文件中写入“Good”。

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

如何在“???”处描述条件?

1 个答案:

答案 0 :(得分:1)

不是检查所有成绩元素是否包含,而是检查是否存在成绩元素而没有 Class < /强>

试试这个表达式:

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