Есть ли способ применить count () в зависимости от текущего значения для каждого? - PullRequest
0 голосов
/ 30 октября 2019

У меня есть 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, каждая школа будет отображаться на новой странице вместе с другой информацией (список всех учащихсяпринадлежность к этой школе и т. д.). Одной из этих данных будет общее количество учеников, где пол = «М» (или «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>

Я хотел бы получить количество учеников мужского пола () и распечатать его для каждой «старшей школы» (так различается число на каждой странице / старшей школе моего документа) в моем xsl: for-each. Но я либо получаю всех студентов мужского пола из всех вузов (/ студентов / учеников [пол = 'М']), либо ничего.

В идеале это будет выглядеть так:

**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 : [...]

Заранее спасибо

1 Ответ

0 голосов
/ 30 октября 2019

Если вы группируете student по city, то:

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

должно дать вам количество студентов мужского пола в текущей группе.

-
Не проверено, поскольку вы не предоставили полный пример.

...