有什么方法可以根据 for-each 中的当前值应用 count() 吗?

Is there any way to apply a count() depending on the current value in a for-each?

我有一个具有这种结构的 xml 文件


<?xml version='1.0' encoding='UTF-8'?>
<students>
  <student>
    <number>1</number>
    <firstname>Sandrine</firstname>
    <name>BERTIN</name>
    <gender>F</gender>
    <highschool>de la Côte d'Albâtre</highschool>
    <city>Saint-Valéry-en-Caux</city>
    <specialization>Physique chimie</specialization>
  </eleve>

[...]
</students>

最终结果应该是一个 pdf 文档,每所高中将与其他信息一起显示在新页面上(属于该高中的所有学生列表等...) 其中一项信息是性别 ='M'(或 'F')的学生总数。

这是我的代码的一部分:

  <fo:page-sequence master-reference="book">
    <fo:flow flow-name="xsl-region-body"> 
     <xsl:for-each select="students/student[count(. | key('cityKey',city)[1]) = 1]">
      <xsl:sort select="city" />
             <xsl:for-each select="key('cityKey', city)[count(. | key('highschoolKey',highschool)[1]) = 1]">
              <xsl:sort select="highschool" /> 
               <fo:block break-before="page"><xsl:value-of  select="highschool"/> </fo:block>
               <fo:block> City : <xsl:value-of select="city" /> </fo:block>

              <!-- <fo:block> Number of male students : <xsl:value-of select="count(/students/student[gender='M'])" /> </fo:block> -->



          </xsl:for-each>
        </xsl:for-each>
    </fo:flow>
  </fo:page-sequence>

我想得到男学生的 count () 数量,并在我的 xsl:for-每个。但是我要么得到所有高中的所有男学生(/students/student[性别='M']),要么什么都没有。

理想情况下应该是这样的:

**de la Côte d'Albâtre**

City : Saint-Valéry-en-Caux

Number of male students: " "

Number of female students: " "

List of all the student in a Table : [...]

提前致谢

如果您按 citystudent 进行分组,则:

<xsl:value-of select="count(key('cityKey', city)[gender ='M'])"/>

应该给你当前组中男学生的数量。

--
未经测试,因为你没有提供完整的例子。