访问外部变量,每个XSLT(Accessing variables outside of for-e

2019-10-30 06:15发布

我有在我的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 (我可以访问此一个,因为它是在循环外部声明的),但我不能因为这样做$numberOfGraduates在循环中声明。 我已经尝试过的循环,其工作范围内减去,但随后它会打印出结果几次。

什么是走对中访问这些变量的最佳方式for-each循环?

多谢你们!

Answer 1:

您的变量numberOfGraduates每当然,必须单独计算,每门课程,像你一样。

可变totalStudents是一个所有课程。 一个学生可以采取两种课程,要确保你不会指望两次一个学生:

<xsl:variable name="totalStudents" select="count(distinct-values(//studentID))"/>


文章来源: Accessing variables outside of for-each in XSLT