如何与XSL进行除法-但我尝试执行此操作的方式有些棘手

问题描述

|| 因此,我了解了如何在XSL中添加值,以下链接将向您展示我为获得它所做的事情。 XSL-如何使用count()函数-尝试计算报告中的“ A”数量 但是现在我想找出每个报告值所占的百分比。 因此,我的意思是,共有8个报告,但是“ A”只有4个报告,这意味着“ A”具有报告总数的50%。 \'B \'具有3,所以这意味着它具有报告总数的%37.5,依此类推。 我该怎么做呢? 我想知道我得到每个报告值的数量,例如\'A \'等于4-然后我需要使用count()函数对报告总数进行计数,然后将\'A \'除以总值。 我迷失了如何完成这项工作。 我知道这会得到\'A \的总数。
<xsl:value-of select=\"count(/class/student[grade=\'A\'])\"/> 
这将获得报告的总数。
<xsl:value-of select=\"count(/class/student/grade)\"/>
但是我不知道如何获取一个值并用第二个* 100除。     

解决方法

您可以进行内联除法:
<xsl:value-of select=\"count(/class/student[grade=\'A\']) div count(/class/student/grade)\"/> 
但是,这有点混乱。您可以像这样整理它:
<xsl:variable name=\"students\" select=\"/class/student\"/>
<xsl:variable name=\"gradeAStudents\" select=\"$students[grade=\'A\']\"/>
<xsl:variable name=\"gradeBStudents\" select=\"$students[grade=\'B\']\"/>
<!-- etc -->

<xsl:variable name=\"proportionGradeA\" select=\"count($gradeAStudents) div count($students)\"/>
<xsl:variable name=\"proportionGradeB\" select=\"count($gradeBStudents) div count($students)\"/>
<!-- etc -->

<!-- then you can use this somewhere else to display the result -->

<xsl:value-of select=\"$proportionGradeA\"/>