powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Помогите разбить выходной документ на страницы
5 сообщений из 5, страница 1 из 1
Помогите разбить выходной документ на страницы
    #34971475
novice_in_XSL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть XML вида:
<data>
<item id="i1" sector="s1" subsector="u1">561</item>
<item id="i10" sector="s3" subsector="u4">15</item>
<item id="i22" sector="s2" subsector="u2">1234</item>
<item id="i11" sector="s1" subsector="u2">123</item>
<item id="i17" sector="s1" subsector="u3">165</item>
...
<item N> Value N </item>
<sector id="s1">Sector 1</sector>
...
<sector id=N>Sector N</sector>
<subsector id="u1">Subsector 1</subsector>
...
<subsector id=N>Subsector N</subsector>
</data>
Его надо представить в виде:
Sector 1
Subsector 1
ID Value
----------------
id1 value1
...
idN valueN
----------------
Subsector N
ID Value
----------------
id1 value1
...
idN valueN
...
Sector N
Subsector 1
ID Value
----------------
id1 value1
...
idN valueN
----------------
Subsector N
++++++++++++++++
ID Value
----------------
id1 value1
...
idN valueN
...
Это достаточно просто решается двойной группировкой Мюнха, но есть еще условие: должно быть не более 25 рядов idX ValueX на странице. И разбиение страницы (<span style="page-break-before: always"></span>) может быть только перед Sector / Subsector

P.S. Искал на форуме, но ничего подходящего к моему случаю не нашел.
...
Рейтинг: 0 / 0
Помогите разбить выходной документ на страницы
    #34972311
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можешь выводить подсекторы друг за другом и вести счётчик выводимых значений, перед выводом очередного подсектора проверяй, не пора ли выводить разрыв страницы, ведение счётчика эмулируется рекурсией.
...
Рейтинг: 0 / 0
Помогите разбить выходной документ на страницы
    #34972530
novice_in_XSL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем я понимаю как должен быть организован алгоритм, я не понимаю как именно применять рекурсию.
Использую следующее XSLT преобразование:
<xsl:template name="count" match="data">
<html>
<head>
<title>test template</title>
</head>
<body>

<table border="0">
<tr id="*"><td colspan="2">************</td></tr>
<xsl:for-each select="sector">
<xsl:sort select="substring-after(sector,'s')" data-type="number"/>
<xsl:variable name="ThisSector" select="@id"/>
<tr id="s">
<td colspan="2">
<xsl:value-of select="."/>
</td>
</tr>
<tr id="**"><td colspan="2">************</td></tr>
<xsl:for-each select="../subsector">
<xsl:sort select="substring-after(subsector,'u')" data-type="number"/>
<xsl:variable name="ThisSubsector" select="@id"/>
<tr id="ss">
<td colspan="2">
<xsl:value-of select="."/>
</td>
</tr>
<tr id="+"><td colspan="2">+++++++++</td></tr>
<tr id="0"><td>ID</td><td>Value</td></tr>
<tr id="-"><td colspan="2">-------------------</td></tr>

<xsl:for-each select="../item[@sector = $ThisSector and @subsector = $ThisSubsector]">
<tr id="data"><td><xsl:value-of select="@id"/></td>
<td><xsl:value-of select="."/></td></tr>
</xsl:for-each>

<xsl:choose>
<xsl:when test="(current()/@id = ../subsector[last()]/@id)">
<tr id="*"><td colspan="2">************</td></tr>
</xsl:when>
<xsl:otherwise>
<tr id="-"><td colspan="2">-------------------</td></tr>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
...
Рейтинг: 0 / 0
Помогите разбить выходной документ на страницы
    #34972591
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
убрать форычи, обрабатывать подсекторы по одному – рекурсией вызывать обработку следующего подсектора.
...
Рейтинг: 0 / 0
Помогите разбить выходной документ на страницы
    #34972606
novice_in_XSL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To maXmo:
Я как братья наши меньшие - все понимаю, а написать не могу :)
А можно кусок кода в пример?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Помогите разбить выходной документ на страницы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]