我需要计算未通过考试的学生人数或有错误数据的学生人数。这if loop
条件正常,但学生人数错误。
<xsl:if test ="$StudentFinalmark > 100 or $StudentFinalmark < 49">
<xsl:value-of select = "count(StudentFinalmark)"/>
</xsl:if>
例如,如果有四名失败的学生和有两个错误日期的学生,那就是 111111
请帮我解决问题。
答案 0 :(得分:2)
假设您的xml看起来像这样(根据您的评论):
<Students>
<StudentResults>
<Marks>
<StudentAssign1>40</StudentAssign1>
<StudentAssign2>40</StudentAssign2>
<StudentExam>40</StudentExam>
</Marks>
</StudentResults>
<StudentResults>
<Marks>
<StudentAssign1>1</StudentAssign1>
<StudentAssign2>2</StudentAssign2>
<StudentExam>3</StudentExam>
</Marks>
</StudentResults>
<StudentResults>
<Marks>
<StudentAssign1>33</StudentAssign1>
<StudentAssign2>33</StudentAssign2>
<StudentExam>33</StudentExam>
</Marks>
</StudentResults>
</Students>
像这样的XSLT会返回你所追求的结果:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:element name="Output">
<xsl:value-of select="count(Students/StudentResults[sum(Marks/*) > 100 or sum(Marks/*) < 49])" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
返回结果:
<Output>2</Output>
它返回两个,因为在上面的示例XML中,第一个StudentResults的总和为120(由于它大于100而失败)而第二个的总和为6(由于它小于49而失败)
技巧是输出单个项目,该项目是您通过xpath选择的元素的计数,而不是通过“if”和“for”组合。也不需要使用变量。