XSLT 1.0 с использованием ключей для группировки и подсчета сгруппированных записей - PullRequest
0 голосов
/ 04 октября 2018

Я новичок в XLST и stackoverflow.Я довольно долго искал этот ответ и безуспешно пробовал несколько вариантов.Я выводить записи в формате PDF.Все мои подробные строки верны.Мой подсчет некоторых сгруппированных записей выключен.Я хочу подсчитать общее количество заявок и общее количество учеников в каждой школе, к которой они привязаны.

Я считаю, что эти два ключа верны, поскольку они дают мне правильные номера.Первый устанавливает группировку для каждой школы, а второй дает мне правильное количество учеников.Ключ, с которым у меня возникают проблемы, - после изображения, которое я пытаюсь вставить.

  <xsl:key name="GroupBySchoolSearch" match="AppStudent" use="@SchoolSearch"/>
  <xsl:key name="GroupBySchoolStud" match = "AppStudent " use = "@SchoolSearch"/>

  <xsl:template name = "Totals">    
      <xsl:for-each select="//App/AppStudent[generate-id()= generate-id(key('GroupBySchoolSearch', @SchoolSearch)[1])]">  
          <fo:table-row>
            <fo:table-cell/>
            <fo:table-cell ><fo:block padding-top="3pt"><xsl:value-of select="@SchoolSearch"/></fo:block></fo:table-cell>
              <fo:table-cell ><fo:block padding-top="3pt"><xsl:value-of select="count(key('GroupBySchoolStud',@SchoolSearch))"/> </fo:block></fo:table-cell>
              <fo:table-cell ><fo:block padding-top="3pt"><xsl:value-of select="count(key('GroupBySchoolApps', @AppID))"/> </fo:block></fo:table-cell>

Это ключ, который я пытаюсь использовать для подсчета приложений.

<xsl:key name="GroupBySchoolApps" match = "AppStudent" 
 use="concat(@SchoolSearch,'|',@AppID)"/>

Неважнокак я изменяю код, я либо получаю нули для общего числа приложений, либо я получаю количество студентов.Что я хочу, например: Школа А имеет 10 приложений, связанных с ней, и в приложениях 30 учеников.Я показываю 30 для количества студентов и 10 для количества приложений.Вот как это будет работать для каждой школы.

В приведенных ниже результатах выделенное число 4 для всех учащихся является правильным.Мне нужно отобразить количество приложений как 3, так как 4 ученика существуют между 3 приложениями.

School Calendar              Total Students Total Apps 
16-17 Kristi Lee High School   3              0 
16-17 James Michael Middle Sch 1              0
16-17 Emily Ann Elementary     4              0

Пример вывода xml:

<Applications>
<AppYear AppYear="2017">
<App AppID="2654">
<AppStudent AppStudent="3789" Parent="A, Parent" Student="3, Student" OAType="Portal-Annual Update" OAStatus="Not Submitted" SchoolSearch="16-17 Kristi Lee High School" SchoolSet="Enrolled" Enr="Yes" B4G="No" Grd="11" DateSubmitted="Not Submitted" DateApproved="Not Approved"/>
</App>
<App AppID="3725">
<AppStudent AppStudent="4971" Parent="Bickel, Barbara" Student="Bickel, Sophia Madeline" OAType="Portal-Annual Update" OAStatus="Submitted-Existing" SchoolSearch="16-17 Emily Ann Elementary" SchoolSet="Enrolled" Enr="Yes" B4G="Yes" Grd="05" DateSubmitted="Oct 2 2018 8:59AM" DateApproved="Not Approved"/>
<AppStudent AppStudent="4972" Parent="Bickel, Barbara" Student="Bickel, Emalie Elizabeth" OAType="Portal-Annual Update" OAStatus="Submitted-Existing" SchoolSearch="16-17 Emily Ann Elementary" SchoolSet="Enrolled" Enr="Yes" B4G="Yes" Grd="05" DateSubmitted="Oct 2 2018 8:59AM" DateApproved="Not Approved"/>
</App>
...