powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Разрыв страницы
4 сообщений из 4, страница 1 из 1
Разрыв страницы
    #34717468
iga777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, чето переклинило: есть xml вида:
<TRAN ID = "1">
<NAZN>данные</NAZN>
<ROWS>4</ROWS>
</TRAN>
<TRAN ID = "2">
<NAZN>данные</NAZN>
<ROWS>9</ROWS>
</TRAN>
<TRAN ID = "3">
<NAZN>данные</NAZN>
<ROWS>13</ROWS>
</TRAN>
В тэге ROWS накопительно собираю число строк, как сделать так чтобы xsl при ROWS кратно некоему числу например 30 вставлял разрыв страницы? Мысль есть такая: завести переменную назовем ее Сount и сделать что-то типа

<xsl:variable name="Count" select="1"/>
<xsl:for-each ......
<xsl:variable name="Rows" select="ROWS"/>
<xsl:if test = '$Rows ?gt; Сount*30'>
????? <xsl:variable name="Count"> <xsl:value-of select="$Count+ 1"/> типа Count = Count+1
<DIV style="page-break-after: always;"> </DIV>
</xsl:if>
</xsl:for-each>

Но у меня не получается переприсвоить Сount, если я ее объявлю глобально (до вызова шаблонов)то Count в цикле всегда равен двум а локально (в шаблоне)
IE ругается "Переменная или параметр "Count" не могут быть определены дважды в пределах одного шаблона"
Кто может что-либо посоветовать? Заранее благодарен
...
Рейтинг: 0 / 0
Разрыв страницы
    #34730865
joshua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это надо делать или через рекурсию (посмотрите как делают for(i=0; i<10; i++) в xslt), но ябы попробовал через position()
...
Рейтинг: 0 / 0
Разрыв страницы
    #34731342
TiG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если rows увеличивается последовательно на 1:
Код: plaintext
1.
2.
3.
<xsl:if test="$rows mod 30 = 0">
<DIV style="page-break-after: always;"> </DIV>
</xsl:if>
Если не на 1 (т.е. может просто не быть числа кратного 30), тогда так
Код: plaintext
1.
2.
3.
<xsl:if test="floor($prevRows div 30) = floor($rows div 30)">
<DIV style="page-break-after: always;"> </DIV>
</xsl:if>
где $prevRows - предыдущее значение $rows. Только не пытайтесь его также переприсваивать :) xsl:variable используется для декларации переменных, а не их изменения. Переменные в XSLT неизменяемые.
...
Рейтинг: 0 / 0
Разрыв страницы
    #34733854
makshoner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Схожий вопрос.
Есть исходный XML(Имеются "сектора", "субсектора" и "данные"):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
<data>
  <sector id="s1">
    <subsector id="u1">
	<item id="i1" sector="s1" subsector="u1">item- 1 </item>
	<item id="i2" sector="s1" subsector="u1">item- 2 </item>
	...
	<item id="in" sector="s1" subsector="u1">item-n</item>
    </subsector>
    <subsector id="u2">
	<item id="i1" sector="s1" subsector="u2">item- 1 </item>
	<item id="i2" sector="s1" subsector="u2">item- 2 </item>
	...
	<item id="in" sector="s1" subsector="u2">item-n</item>
    </subsector>
	...
  </sector>
...
  <sector id="sn">
    <subsector id="u1">
	<item id="i1" sector="sn" subsector="u1">item- 1 </item>
	<item id="i2" sector="sn" subsector="u1">item- 2 </item>
	...
	<item id="in" sector="sn" subsector="u1">item-n</item>
    </subsector>
    <subsector id="u2">
	<item id="i1" sector="sn" subsector="u2">item- 1 </item>
	<item id="i2" sector="sn" subsector="u2">item- 2 </item>
	...
	<item id="in" sector="sn" subsector="u2">item-n</item>
    </subsector>
	...
  </sector>
</data>

Необходимо вывести данные в виде
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
s: 1 
 ss: 1 
  item- 1 
  item- 2 
  item- 3 
  ...
  item-n
 ss: 2 
  item- 1 
  item- 2 
  item- 3 
  ...
  item-n
...
s:n
 ss: 1 
  item- 1 
  item- 2 
  item- 3 
  ...
  item-n

При этом после каждых 25-ти строк "данных" необходимо
вставить разрыв страницы
Код: plaintext
<span style="page-break-before: always"></span>
,
но вставлять его можно только перед "сектором" или "субсектором", но не в середине самих данных.

Подскажите Xslt преобразование?
Спасибо.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Разрыв страницы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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