我目前遇到的问题是我的XSLT文档中的某些变量的范围,这里是相关代码部分:
<xsl:for-each select="all/courses/allcourses/course">
<a>
<xsl:attribute name="href">javascript:void(0)</xsl:attribute>
<xsl:attribute name="onclick">javascript:transform('<xsl:value-of select="c_code"/>');</xsl:attribute>
<xsl:value-of select="c_title"/>
</a>
<br/>
<br/>
<course code="{c_code}">
<strong> Enrolled: </strong>
<xsl:variable name="courseCreditPoints" select="coursecp"/>
<xsl:variable name="numberOfEnrolled" select="count(student[sum(results/u_points)!= $courseCreditPoints])"/>
<xsl:value-of select="$numberOfEnrolled"/>
<br/>
<strong> Graduated: </strong>
<xsl:value-of select="count(student[sum(results/u_points) = $courseCreditPoints])"/>
<br/>
<xsl:variable name="numberOfGraduates" select="count(student[sum(results/u_points) = $courseCreditPoints])"/>
</course>
</xsl:for-each>
<br/>
<strong> Total number of students: </strong>
<xsl:variable name="totalStudents" select="count(//studentID)"/>
<xsl:value-of select="$totalStudents"/>
<strong> Total enrolled students: </strong>
我想要实现的目标:我正在尝试访问其外的for-each
循环中的变量。我想要做的是从变量$numberOfGraduates
中减去$totalStudents
个变量(我可以访问这个变量,因为它是在循环之外声明的)但我不能这样做{{1在循环中声明。我试过在循环中减去它,这有效,但是它会多次打印出结果。
在$numberOfGraduates
循环中访问这些变量的最佳方法是什么?
谢谢你们!
答案 0 :(得分:0)
你的变量numberOfGraduates是每个课程,必须像你一样单独计算每门课程。
可变的totalStudents是所有课程的一个。一个学生可以参加两门课程,确保你不算一个学生两次:
<xsl:variable name="totalStudents" select="count(distinct-values(//studentID))"/>