powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / HELP!!! Вложенные таблицы xsl
15 сообщений из 15, страница 1 из 1
HELP!!! Вложенные таблицы xsl
    #33796296
Alex Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Проблема в следующем. есть xsl, вот кусок из него

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 <fo:table-row height="4mm">
................

<fo:table-cell text-align="center" border-style="solid">
- <fo:block font-size="8pt">
  <xsl:value-of select="owner" /> 
  </fo:block>
  </fo:table-cell>

- <fo:table-cell number-columns-spanned="2">
- <fo:block>
- <fo:table>
- <fo:table-body>
- <xsl:for-each select="prow">
- <xsl:call-template name="police"/>
  </xsl:for-each>
  </fo:table-body>
  </fo:table>
  </fo:block>
  </fo:table-cell>
...............


он генерит таблицу вида (см. файл). Короче проблема в том что вложенная таблица (333,444) не растягивается по высоте на размер колонки. Можно это как нить сделать?
Да... специфика задачи такая что нужны именно вложенные таблицы
number-rows-spanned использовать неполучится
...
Рейтинг: 0 / 0
HELP!!! Вложенные таблицы xsl
    #33796346
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
во вложенных таблицах надо указать правильные атрибуты:
Код: plaintext
<table ... width="100%" height="100%">
...
Рейтинг: 0 / 0
HELP!!! Вложенные таблицы xsl
    #33796361
Alex Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да вроде не совсем чайник :)) В первую очередь так попробовал, не помогает
...
Рейтинг: 0 / 0
HELP!!! Вложенные таблицы xsl
    #33796463
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а можете свой html выложить, который у вас получается после преобразования
...
Рейтинг: 0 / 0
HELP!!! Вложенные таблицы xsl
    #33798676
Alex Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня на выходе PDF генерится, а не HTML
...
Рейтинг: 0 / 0
HELP!!! Вложенные таблицы xsl
    #33799020
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего Вам нужно что-то типа:
Код: plaintext
<xsl:attribute name="align"><xsl:value-of select="ЗНАЧЕНИЕ"></xsl:attribute>

но, сначала определитесь с тем, как будет форматироваться документ, а потом уже к шаблону переходите.
...
Рейтинг: 0 / 0
HELP!!! Вложенные таблицы xsl
    #33801782
Alex Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А при чем здесь align? Мне же нужно не расположение таблицы поменять, а растянуть ее на всю колонку (вроде как смасштабировать на 100% содержащей ее колонки)
...
Рейтинг: 0 / 0
HELP!!! Вложенные таблицы xsl
    #33802997
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще раз повторюсь!

Код: 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.
<table align=center border= 1 >
<tr>
<td> 111 </td><td> 111 </td><td> 111 </td><td> 111 </td>
</tr>
<tr>
<td> 222 </td><td>
<pre> 222 
 2222  
 2222  
 2222  
 22222 </pre>
</td>
<!-- look here -->
<td colspan= 2  valign=top align=left HEIGHT= 100 %>

<table width= 100 % HEIGHT= 100 % border= 1 >
<tr>
<td> 333 </td><td> 333 </td>
</tr>
<tr>
<td> 444 </td><td> 444 </td>
</tr>
</table>

</td>

</tr>
</table>
...
Рейтинг: 0 / 0
HELP!!! Вложенные таблицы xsl
    #33804865
Alex Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А теперь я еще раз повторюсь! На выходе получается PDF, никакого HTML. Обработчику на вход подается XSL + XML (xml генерится из оракла), а он уже генерит PDF.

внешний вид примерно след. (см. рисунок)

Видно что у вложенной таблицы верхняя и нижняя границы не совпадают с границами содержащей ее колонки. Видимо ее границы расчитываются по данным кот. она содержит, а мне надо сделать чтоб она полностью заполняла содерж. ее колонку.

Еще раз (для особо упорных :) ), мне не надо CSS + HTML мне нужно форматирование применительно к XSL (column-width, height, line-height и т.п.).
...
Рейтинг: 0 / 0
HELP!!! Вложенные таблицы xsl
    #33809941
beard-electronic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если table-row сделать height (пропертя такая точно есть) 100% (ну или 100/количество_строк %)
...
Рейтинг: 0 / 0
HELP!!! Вложенные таблицы xsl
    #33810930
Alex Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал уже, все равно не помогает... :(
Там вот в чем дело собственно, если см. на рисунок, то в 3 колонке (в той же строке где и влож. таблица) очень длинный текст, он не помещается целиком в колонке и расползается на 2 строчки (это если например задать ширину колонки 100px, а в нее положить что нить длиной 255 символов). Соответственно вся строка основной таблицы увеличивается по высоте, а вложенная таблица нет...
...
Рейтинг: 0 / 0
HELP!!! Вложенные таблицы xsl
    #33811787
Alex Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем что-то с растягиванием таблички засада получается, может можно задачку как-то по другому решить... есть такой 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.
33.
34.
35.
36.
37.
38.
39.
40.
41.
<root>
- <pl>
  <op> 111 </op> 
  <owner>ааа</owner> 
  <cret> 1 </cret> 
 - <prow>
    <nr>a1</nr> 
    <sum> 1 , 49 </sum> 
    <cdat> 12 . 04 . 2006 </cdat> 
   </prow>
 - <prow>
    <nr>a2</nr> 
    <sum> 1 , 26 </sum> 
    <cdat> 01 . 01 . 2006 </cdat> 
   </prow>
  </pl>
- <pl>
  <op> 222 </op> 
  <owner>bbb</owner> 
  <cret> 1 </cret> 
 - <prow>
    <nr>b1</nr> 
    <sum> 1 , 00 </sum> 
    <cdat> 01 . 06 . 2005 </cdat> 
   </prow>
 - <prow>
    <nr>b2</nr> 
    <sum> 4 , 00 </sum> 
    <cdat> 01 . 06 . 2005 </cdat> 
   </prow>
  </pl>
- <pl>
  <op> 333 </op> 
  <owner>ccc</owner> 
  <cret> 2 </cret> 
 - <prow>
    <nr>c1</nr> 
    <sum> 2 , 40 </sum> 
    <cdat> 06 . 05 . 2006 </cdat> 
   </prow>
  </pl>

надо из этого поиметь такую табличку
...
Рейтинг: 0 / 0
HELP!!! Вложенные таблицы xsl
    #33811795
Alex Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл добавить, что HTML использовать нельзя так как на выходе будет PDF
...
Рейтинг: 0 / 0
HELP!!! Вложенные таблицы xsl
    #33812207
beard-electronic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так:
Код: 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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
<?xml version="1.0"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:fo="http://www.w3.org/1999/XSL/Format" exclude-result-prefixes="fo">


	<xsl:template name="printTableHeadCell">
		<xsl:param name="text"/>
	    <fo:table-cell padding-top="3mm" padding-bottom="3mm" padding-right="1mm" padding-left="1mm" border-color="rgb(255,251,213)" border-bottom-width="0pt" border-top-width="0pt" border-left-width="0px" border-style="solid" display-align="center">
	        <fo:inline color="rgb(255,255,255)">
	            <fo:block text-align="center" font-weight="bold">
	            	<xsl:value-of select="$text" />
	            </fo:block>
	        </fo:inline>
	    </fo:table-cell>
	</xsl:template>
   <xsl:template match="/root">
        <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
            <fo:layout-master-set background-color="grey">
                <fo:simple-page-master master-name="simpleA4" page-height="29.7cm" page-width="21cm" margin-top="1.5cm" margin-bottom="1.5cm" margin-left="1cm" margin-right="1cm" background-color="grey">
                    <fo:region-body margin-top="0mm" margin-bottom="15mm" margin-left="0mm" margin-right="0mm"/>
                    <fo:region-after extent="10mm"/>
                </fo:simple-page-master>
            </fo:layout-master-set>
            <fo:page-sequence master-reference="simpleA4" background-color="grey">
                <fo:flow flow-name="xsl-region-body">
                    <fo:block font-size="7pt">


                        <fo:table table-layout="fixed">

                             <fo:table-column column-width="3cm"/>
                             <fo:table-column column-width="3cm"/>
                             <fo:table-column column-width="3cm"/>
                             <fo:table-column column-width="3cm"/>
                             <fo:table-column column-width="3cm"/>
                             <fo:table-column column-width="3cm"/>

                            <fo:table-header background-color="rgb(51,102,153)">

                                <fo:table-row>
                                	<xsl:call-template name = "printTableHeadCell" >
                                		<xsl:with-param name="text">op</xsl:with-param>
                                	</xsl:call-template>
                                	<xsl:call-template name = "printTableHeadCell" >
                                		<xsl:with-param name="text">owner</xsl:with-param>
                                	</xsl:call-template>
                                	<xsl:call-template name = "printTableHeadCell" >
                                		<xsl:with-param name="text">nr</xsl:with-param>
                                	</xsl:call-template>
                                	<xsl:call-template name = "printTableHeadCell" >
                                		<xsl:with-param name="text">sum</xsl:with-param>
                                	</xsl:call-template>
                                	<xsl:call-template name = "printTableHeadCell" >
                                		<xsl:with-param name="text">cdat</xsl:with-param>
                                	</xsl:call-template>
                                	<xsl:call-template name = "printTableHeadCell" >
                                		<xsl:with-param name="text">cret</xsl:with-param>
                                	</xsl:call-template>
                                </fo:table-row>

                            </fo:table-header>

                            <fo:table-body>
                                 <xsl:apply-templates select="pl" />
                            </fo:table-body>

                        </fo:table>

                    </fo:block>

                    <fo:block id="last-page"/>

                </fo:flow>
            </fo:page-sequence>

        </fo:root>

   </xsl:template>

   <xsl:template match="pl">
      <xsl:variable name="prowCount" select="count(prow)" />

      <fo:table-row>
         <fo:table-cell border-width="1px" border-style="solid" number-rows-spanned="{$prowCount}" display-align="center">
            <fo:block text-align="center"><xsl:value-of select="op" /></fo:block>
         </fo:table-cell>

         <fo:table-cell border-width="1px" border-style="solid" number-rows-spanned="{$prowCount}" display-align="center">
            <fo:block text-align="center"><xsl:value-of select="owner" /></fo:block>
         </fo:table-cell>

         <xsl:apply-templates select="prow[1]" mode="cols" />
         <fo:table-cell border-width="1px" border-style="solid" number-rows-spanned="{$prowCount}" display-align="center">
            <fo:block text-align="center"><xsl:value-of select="cret" /></fo:block>
         </fo:table-cell>
      </fo:table-row>

      <xsl:apply-templates select="prow[position()>1]" mode="row" />
   </xsl:template>

   <xsl:template match="prow" mode="cols">
      <fo:table-cell border-width="1px" border-style="solid">
         <fo:block text-align="center"><xsl:value-of select="nr" /></fo:block>
      </fo:table-cell>

      <fo:table-cell border-width="1px" border-style="solid">
         <fo:block text-align="center"><xsl:value-of select="sum" /></fo:block>
      </fo:table-cell>

      <fo:table-cell border-width="1px" border-style="solid">
         <fo:block text-align="center"><xsl:value-of select="cdat" /></fo:block>
      </fo:table-cell>
   </xsl:template>

   <xsl:template match="prow" mode="row">
      <fo:table-row>
         <xsl:apply-templates select="self::node()" mode="cols" />
      </fo:table-row>
   </xsl:template>
</xsl:stylesheet>

...
Рейтинг: 0 / 0
HELP!!! Вложенные таблицы xsl
    #33813738
Alex Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То что доктор прописал! :) Спасибо beard-electronic . Я собственно изначально собирался rows-spanned использовать просто не знал как его правильно применить, я в XSL-е недавно :)
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / HELP!!! Вложенные таблицы xsl
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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