У меня есть большой файл XML этого формата:
<data jsxid="jsxroot" caseNumber="59878">
<record jsxid="1" poNumber="13-192208" manu="Biotronik" catNumber="101" total="0" />
<record jsxid="2" poNumber="13-192208" manu="Biotronik" catNumber="102" total="0" />
<record jsxid="3" poNumber="13-192208" manu="Biotronik Total" catNumber="" total="1" />
<record jsxid="4" poNumber="13-192211" manu="Biotronik" catNumber="103" total="0" />
<record jsxid="5" poNumber="13-192211" manu="Biotronik Total" catNumber="" total="1"/>
Я хочу разбить его на группы по 25 или меньше, и каждая страница должна заканчиваться общей строкой (@total="1").
Я дошел до того, что вставил статический номер страницы, используя следующий XSL, но иногда он обрывается в середине группы poNumber, поэтому общее количество находится на следующей странице:
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:param name="pagesize" select="25" />
<xsl:template match="data">
<data>
<xsl:for-each select="@*">
<xsl:copy-of select="." />
</xsl:for-each>
<xsl:apply-templates mode="page" select="record[position() mod $pagesize = 1]" />
</data>
</xsl:template>
<xsl:template match="record" mode="page">
<record jsxid="{position()}" >
<xsl:apply-templates select=". | following-sibling::record[position() < $pagesize]" />
</record>
</xsl:template>
<xsl:template match="record">
<xsl:copy-of select="." />
</xsl:template>
Any ideas on how to make sure the last record on each page is a total?
РЕДАКТИРОВАТЬ: я просто хотел уточнить, что я делал с таблицей стилей, которую я опубликовал. Он вставляет заполнитель для страницы (jsxid = n) в каждую ($pagesize) запись. Итак, если размер страницы = 5 для набора данных, подобного тому, который я опубликовал, вывод будет следующим:
<data jsxid="jsxroot" caseNumber="59878">
<record jsxid="1">
<record jsxid="1" poNumber="13-192208" manufacturer="Biotronik" catalogNumber="101" total="0" />
<record jsxid="2" poNumber="13-192208" manufacturer="Biotronik" catalogNumber="102" total="0" />
<record jsxid="3" poNumber="13-192208" manufacturer="Biotronik Total" catalogNumber="" total="1" />
<record jsxid="4" poNumber="13-192211" manufacturer="Biotronik" catalogNumber="103" total="0" />
<record jsxid="5" poNumber="13-192211" manufacturer="Biotronik Total" catalogNumber="" total="1"/>
<record jsxid="2">
<record jsxid="6" poNumber="13-192208" manufacturer="Biotronik" catalogNumber="101" total="0" />
<record jsxid="7" poNumber="13-192208" manufacturer="Biotronik" catalogNumber="102" total="0" />
Я отображаю эти данные в матрице в Общем интерфейсе и использую jsxid для перебора «страниц».
Спасибо.