如何划分XSL - 但我尝试这样做的方式有点棘手

时间:2011-05-23 05:35:30

标签: xml xslt xpath

所以我发现了如何在XSL中添加值,以下链接将向您展示我为此做了什么。

How to use the count() function is XSL - trying to count the amount of "A"s there are in a report

但现在我想找出每个报告值的百分比。

所以,我的意思是,总共有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.我想找到一种方法来为每个值赋予一个名称或ID,以便我可以引用它们 - 我完全迷失了。

1 个答案:

答案 0 :(得分:5)

你可以直接进行分工:

<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"/>