powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xsl-fo Цикль с группировкой
9 сообщений из 9, страница 1 из 1
xsl-fo Цикль с группировкой
    #37307643
Ulanoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С помощью FOP имея данные:
...
Рейтинг: 0 / 0
xsl-fo Цикль с группировкой
    #37307666
Ulanoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Случайно нажал ctr+Ent незнаю почему нельзя отредактировать сообщение.
Имею данные :
Код: 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.
33.
34.
35.
<?xml version="1.0" encoding="WINDOWS-1251" standalone="no" ?> 
<R55U42T1>
<Properties>
  <Version>UNL0002</Version> 
  <Title>Печать сертификатов</Title> 
  <Machine>RHEL</Machine> 
  <Host>RHEL</Host> 
  <Environment>JPD811</Environment> 
  <User>SURIN</User> 
  <Role>*ALL</Role> 
  <Language>RU</Language> 
  <Date> 23 / 05 / 11 </Date> 
  <Time> 13 : 32 : 11 </Time> 
</Properties>
<Print_Header_S4>
  <Header_DOCO_ID1> 1638395 </Header_DOCO_ID1> 
  <Header_DCTO_ID2>SO</Header_DCTO_ID2> 
  <Header_KCOO_ID3> 00001 </Header_KCOO_ID3> 
  <Header_VR01_ID4>T43211/ 31000 </Header_VR01_ID4> 
</Print_Header_S4>
<Print_Link_S6>
  <TXKY_ID11> 11056 </TXKY_ID11> 
</Print_Link_S6>
<Print_Link_S6>
  <TXKY_ID11> 11057 </TXKY_ID11> 
</Print_Link_S6>
<Print_Link_S6>
  <TXKY_ID11> 11057 </TXKY_ID11> 
</Print_Link_S6>
<Print_Link_S6>
  <TXKY_ID11> 11057 </TXKY_ID11> 
</Print_Link_S6>
<Print_Link_S6>
  <TXKY_ID11> 10990 </TXKY_ID11> 
</Print_Link_S6>
</R55U42T1>

И шаблон, в котором при выводе цикла for-each пытался сгруппировать TXKY_ID11 и в PDF получить по данному примеру 11056,11057,10990 .
ПРобывал for-each-group идругими методами, не как не получается. FOP при обработке различных моих вариаций не выдает ошибку а при обработке в фале пдф не генериться текст о списке номеров, точно так же и в фале *.fo
Объясните пажалуста как написать цикл группировки данного примера, но с объяснением подробным. Дело в том что я совсем не дружен ни с одним из языков разметок. HTML,XML,XSL.
...
Рейтинг: 0 / 0
xsl-fo Цикль с группировкой
    #37307807
Ulanoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробывал вот так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<xsl: for -each select=".//Print_Link_S6">
  <xsl:sort order="ascending" select="TXKY_ID11" /> 
 <xsl:variable name="i">
  <xsl:value-of select="position()" /> 
  </xsl:variable>
 <xsl: if  test="TXKY_ID11 != .//Print_Link_S6[$i - 1]/TXKY_ID11">
<fo:block orphans="2" widows="2" linefeed-treatment="preserve" start-indent="5.4pt" text-align="center" padding-bottom="0.0pt" end-indent="5.4pt" padding-top="0.0pt" height="0.0pt">
			<fo:inline font-weight="bold" height="55.195312pt" white-space-collapse="false" font-size="48.0pt" font-family="Times New Roman">
  <xsl:value-of select=".//TXKY_ID11" /> 
</fo:inline>
		</fo:block>
  </xsl: if >
  </xsl: for -each>
Ошибку не выкидывает FOP но и не генерит.
...
Рейтинг: 0 / 0
xsl-fo Цикль с группировкой
    #37307819
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UlanoffИмею данные
И шаблон, в котором при выводе цикла for-each пытался сгруппировать TXKY_ID11Покажешь?

PS. Пример группировки
...
Рейтинг: 0 / 0
xsl-fo Цикль с группировкой
    #37307895
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ulanoff
Код: plaintext
1.
2.
3.
4.
<xsl:for-each select=".//Print_Link_S6">
...
    <xsl:if test="TXKY_ID11 != .//Print_Link_S6[$i - 1]/TXKY_ID11">
...
</xsl:for-each>
1. Выражение .//Print_Link_S6 означает - отобрать все, с учетом потомков, узлы Print_Link_S6 в текущем узле. Т.к. Print_Link_S6 является текущим узлом, а в нем узлов с таким же именем нет, то... результатом будет пустой набор узлов.

2. Выражение Print_Link_S6[$i-1] означает - отобрать те узлы, у которых выражение в скобках истинно. Это НЕ массив.
...
Рейтинг: 0 / 0
xsl-fo Цикль с группировкой
    #37308576
Ulanoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
refreg,
Исправил, вроде так работает :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<xsl: for -each select=".//Print_Link_S6">
   <xsl:variable name="i">
  <xsl:value-of select="position()" /> 
  </xsl:variable>
<xsl: if  test="TXKY_ID11 != ../Print_Link_S6[$i - 1]/TXKY_ID11">

<fo:block orphans="2" widows="2" linefeed-treatment="preserve" start-indent="5.4pt" text-align="center" padding-bottom="0.0pt" end-indent="5.4pt" padding-top="0.0pt" height="0.0pt">
			<fo:inline font-weight="bold" height="55.195312pt" white-space-collapse="false" font-size="48.0pt" font-family="Times New Roman">
  <xsl:value-of select=".//TXKY_ID11" /> 
</fo:inline>
</fo:block>

</xsl: if >
</xsl: for -each>
...
Рейтинг: 0 / 0
xsl-fo Цикль с группировкой
    #37308581
Ulanoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ulanoff,

Пропускается первая строчка условие сделал вот таким

Код: plaintext
<xsl: if  test="TXKY_ID11 != ../Print_Link_S6[$i - 1]/TXKY_ID11 or position()=1">
...
Рейтинг: 0 / 0
xsl-fo Цикль с группировкой
    #37308631
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ulanoff,

Ну, если готов отказаться от сортировки, и уверен, что данные уже сгруппированы...
В таком порядке: 56,57,56,57,56,57 - о группировке можешь забыть.

PS. Группировать лучше через ключ - ссылка с примером выше
...
Рейтинг: 0 / 0
xsl-fo Цикль с группировкой
    #37308639
Ulanoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Данные уже сгруппированы как нужно. Последний пример устраивает , единственное добавил в условие проверку позиции. Чтобы выводить первое значение.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xsl-fo Цикль с группировкой
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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