Используя другой пример кода для stackoverflow, у нас есть постраничный отчет о печати с верхними и нижними колонтитулами (да, этот старый каштан), работающий хорошо, делая что-то вроде этого (где RESULTS_ROW имеет несколько дочерних узлов):
<xsl:variable name="n" select="number(4)"/>
<xsl:template match="RESULTS">
<body>
<div id="page">
<output>
<xsl:apply-templates select="RESULTS_ROW"/>
</output>
</div>
</body>
</xsl:template>
<xsl:template match="RESULTS_ROW">
<p/>
[HTML FOR PAGE START]
<br/>
<xsl:for-each select=". | following-sibling::RESULTS_ROW[position() < $n]">
<xsl:value-of select="ITEM43"/><!--Lots more goes in here -->
<br/>
</xsl:for-each>
[HTML FOR PAGE END]
<p/>
</xsl:template>
Проблема возникла из-за необходимости сортировки RESULTS_ROW по одному из значений его дочерних узлов (ITEM43) до происходит преобразование в куски из 4 элементов, иначе сортировка не учитывает все дочерние узлы .
На данный момент вывод выглядит примерно так:
[HTML FOR PAGE START]
North
West
North
River
[HTML FOR PAGE END]
[HTML FOR PAGE START]
West
North
River
North
[HTML FOR PAGE END]
В то время как я хочу, чтобы узлы были закончены отсортированы до того, как они будут разбиты на группы, что-то вроде:
[HTML FOR PAGE START]
North
North
North
North
[HTML FOR PAGE END]
[HTML FOR PAGE START]
River
River
West
West
[HTML FOR PAGE END]
Я перепробовал все, что мог придумать мой не очень способный мозг XSL, но все виды сортировки, использование режимов для применения нескольких шаблонов к одному узлу, копирование, создание переменных, содержащих узловые значения и т. Д., Похоже, ничего не работает.
Любая помощь будет очень признательна.