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

Jas*_*son 1 xml xslt xpath

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

如何使用count()函数是XSL - 试图计算报告中"A"的数量

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

所以,我的意思是,总共有8个报告,但是'A'只有4个,所以这意味着'A'占总报告值的50%.

并且'B'有3,所以这意味着它具有总报告值的%37.5,依此类推.

我该怎么做呢?

我想我得到每个报告值的数字,比如'A'是4 - 那么我需要使用count()函数来计算报告的总数,并将'A'除以总值.

我迷失了如何完成这件事.

我知道这会得到'A'的总数.

<xsl:value-of select="count(/class/student[grade='A'])"/> 
Run Code Online (Sandbox Code Playgroud)

这将获得报告的总数.

<xsl:value-of select="count(/class/student/grade)"/>
Run Code Online (Sandbox Code Playgroud)

但我不知道如何获得第一个值并将其除以第二个*100.我想找到一种方法来给每个值一个名称或ID,以便我可以引用它们 - 我完全丢失了.

por*_*ges 5

你可以做内联部门:

<xsl:value-of select="count(/class/student[grade='A']) div count(/class/student/grade)"/> 
Run Code Online (Sandbox Code Playgroud)

但是,这有点乱.你可以像这样整理一下:

<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"/>
Run Code Online (Sandbox Code Playgroud)