XSLT:如何在我的 table 中不包含具有特定元素的结果?
XSLT: How to not include results with a specific element in my table?
我正在尝试删除 table 中包含 <absent>
元素的任何结果。
XML:
<classTest>
<testDetails>
<description>Class Test</description>
<totalMarks>40</totalMarks>
</testDetails>
<results>
<student num="1008"><result>1</result><absent/></student>
<student num="1009"><result>23</result></student>
<student num="1007"><result>3</result></student>
<student num="1028"><result>0</result><absent/></student>
...
</results>
</classTest>
XSL:
<xsl:template match="classTest">
<html>
<body>
<table border="1">
<tr>
<td><xsl:text>Total number of students</xsl:text></td>
<td><xsl:value-of select="count(/classTest/results/student)"/></td>
</tr>
<tr>
<td><xsl:text>Total number of students absent</xsl:text></td>
<td><xsl:value-of select="count(/classTest/results/student/absent)"/></td>
</tr>
<tr>
<th style="width: 300px; text-align:center">Student number</th>
<th style="width: 150px; text-align:center">Mark</th>
</tr>
<xsl:for-each select="results/student">
<xsl:sort select="@num" order="descending"/>
<tr>
<td><xsl:value-of select="@num"/></td>
<xsl:choose>
<xsl:when test="result < 20">
<td style="color:rgb(255, 0, 0);"><xsl:number value="result"/></td>
</xsl:when>
<xsl:otherwise>
<td><xsl:number value="result"/></td>
</xsl:otherwise>
</xsl:choose>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
我尝试使用不包含检查、when 和 if 语句,但我似乎无法删除缺席学生的任何结果。我需要在我的 table 中包含 <absent>
元素,因为我需要将缺勤学生总数作为 SUM,但是在我将它们加在一起之后,我不需要将它们包含在我的 [=26] 中=].我需要做什么来解决这个问题?
完成后应该是这样的:
Result
而不是:
<xsl:for-each select="results/student">
尝试:
<xsl:for-each select="results/student[not(absent)]">
我正在尝试删除 table 中包含 <absent>
元素的任何结果。
XML:
<classTest>
<testDetails>
<description>Class Test</description>
<totalMarks>40</totalMarks>
</testDetails>
<results>
<student num="1008"><result>1</result><absent/></student>
<student num="1009"><result>23</result></student>
<student num="1007"><result>3</result></student>
<student num="1028"><result>0</result><absent/></student>
...
</results>
</classTest>
XSL:
<xsl:template match="classTest">
<html>
<body>
<table border="1">
<tr>
<td><xsl:text>Total number of students</xsl:text></td>
<td><xsl:value-of select="count(/classTest/results/student)"/></td>
</tr>
<tr>
<td><xsl:text>Total number of students absent</xsl:text></td>
<td><xsl:value-of select="count(/classTest/results/student/absent)"/></td>
</tr>
<tr>
<th style="width: 300px; text-align:center">Student number</th>
<th style="width: 150px; text-align:center">Mark</th>
</tr>
<xsl:for-each select="results/student">
<xsl:sort select="@num" order="descending"/>
<tr>
<td><xsl:value-of select="@num"/></td>
<xsl:choose>
<xsl:when test="result < 20">
<td style="color:rgb(255, 0, 0);"><xsl:number value="result"/></td>
</xsl:when>
<xsl:otherwise>
<td><xsl:number value="result"/></td>
</xsl:otherwise>
</xsl:choose>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
我尝试使用不包含检查、when 和 if 语句,但我似乎无法删除缺席学生的任何结果。我需要在我的 table 中包含 <absent>
元素,因为我需要将缺勤学生总数作为 SUM,但是在我将它们加在一起之后,我不需要将它们包含在我的 [=26] 中=].我需要做什么来解决这个问题?
完成后应该是这样的: Result
而不是:
<xsl:for-each select="results/student">
尝试:
<xsl:for-each select="results/student[not(absent)]">