Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / разбивка на страницы возможна? / 9 сообщений из 9, страница 1 из 1
30.06.2008, 13:45
    #35401945
cavalero
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разбивка на страницы возможна?
Всем приветы!
Вопрос такой: есть xml документ, к нему xsl документ (листинги ниже). Очень хочется с помощью xsl делать импорт в ms excel & pdf. Но есть необходимое требование - разбивка на страницы. Проблема в том, что в html форматировании присутствует объединение ячеек и частенько это объединение попадает частью на конец страницы, частью на начало, что неудовлетворительно. так вот, вопрос в том: можно ли указывать в xsl какие нибудь дирерктивы для разбиения на страницы только в заданных местах?
листинг:
Код: 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.
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="hotel.xsl"?>
<hotel>
    <hotelinfo>
        <description title="HILTON" category="*****" categoryid="5" />
        <accommodations>
            <accommodation id="1" orderid="1" title="SGL" people="1" />
            <accommodation id="2" orderid="2" title="DBL" people="2" />
            <accommodation id="3" orderid="3" title="TRPL" people="3" />
        </accommodations>
    </hotelinfo>
    <dependances>
        <dependance title="" category="*****" categoryid="5">
            <room title="STANDARD">
                <periods>
                    <period datefrom="20000101" dateto="20010101" id="1" stay="1">
                        <days>
                            <day id="1" title="Пн" orderid="1"/>
                            <day id="2" title="Вт" orderid="2"/>
                            <day id="3" title="Ср" orderid="3"/>
                            <day id="4" title="Чт" orderid="4"/>
                            <day id="5" title="Пт" orderid="5"/>
                            <day id="6" title="Сб" orderid="6"/>
                            <day id="0" title="Вс" orderid="7"/>
                        </days>
                        <prices>
                            <price orderid="1" accommodationid="1" val="100" />
                            <price orderid="2" accommodationid="2" val="200" />
                            <price orderid="3" accommodationid="3" val="300" />
                        </prices>
                    </period>
                    <period datefrom="20020101" dateto="20030101" id="2" stay="1">
                        <days>
                            <day id="1" title="Пн" orderid="1"/>
                            <day id="2" title="Вт" orderid="2"/>
                            <day id="3" title="Ср" orderid="3"/>
                            <day id="4" title="Чт" orderid="4"/>
                            <day id="5" title="Пт" orderid="5"/>
                            <day id="6" title="Сб" orderid="6"/>
                            <day id="0" title="Вс" orderid="7"/>
                        </days>
                        <prices>
                            <price orderid="1" accommodationid="1" val="100" />
                            <price orderid="2" accommodationid="2" val="200" />
                            <price orderid="3" accommodationid="3" val="300" />
                        </prices>
                    </period>
                    <period datefrom="20020101" dateto="20030101" id="3" stay="1">
                        <days>
                            <day id="1" title="Пн" orderid="1"/>
                            <day id="2" title="Вт" orderid="2"/>
                            <day id="3" title="Ср" orderid="3"/>
                            <day id="4" title="Чт" orderid="4"/>
                            <day id="5" title="Пт" orderid="5"/>
                            <day id="6" title="Сб" orderid="6"/>
                            <day id="0" title="Вс" orderid="7"/>
                        </days>
                        <prices>
                            <price orderid="1" accommodationid="1" val="100" />
                            <price orderid="2" accommodationid="2" val="200" />
                            <price orderid="3" accommodationid="3" val="300" />
                        </prices>
                    </period>                    
                </periods>
            </room>
        </dependance>
    </dependances>
</hotel>
Код: 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.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <xsl:output method="html" encoding="UTF-8" indent="yes"/>
    <xsl:template match="hotel/hotelinfo/description">
        <H1>
            <xsl:value-of select="@title" />
            <xsl:value-of select="@category" />
        </H1>
    </xsl:template>

    <xsl:template match="hotel/dependances">
        <table width="100%" border="1" cellspacing="0" cellpadding="0">
            <tr>
                <td>Room Name</td>
                <td>Period</td>
                <td>Stay</td>
                <xsl:for-each select="//hotel/hotelinfo/accommodations/accommodation/@title">
                    <xsl:sort select="//hotel/hotelinfo/accommodations/accommodation/@orderid" order="ascending"/>
                    <td>
                        <xsl:value-of select="."/>
                    </td>
                </xsl:for-each>
            </tr>
            <xsl:for-each select="dependance/room">
                <xsl:for-each select="periods/period">
                    <tr>
                        <xsl:if test="position()=1">
                            <td rowspan="3">
                                <xsl:value-of select="../../@title"/>
                            </td>
                        </xsl:if>
                        <td>
                            <xsl:value-of select="@datefrom"/> -
                            <xsl:value-of select="@dateto"/>
                            <div>
                                <xsl:for-each select="days/day">
                                    <xsl:sort select="@orderid" order="ascending"/>
                                    <span>
                                        <xsl:value-of select="@title"/>
                                    </span>
                                </xsl:for-each>
                            </div>
                        </td>
                        <td>
                            <xsl:value-of select="@stay"/>
                        </td>
                        <xsl:for-each select="prices/price/@val">
                            <xsl:sort select="prices/price/@orderid" order="ascending"/>
                            <td>
                                <xsl:value-of select="."/>
                            </td>
                        </xsl:for-each>
                    </tr>
                </xsl:for-each>
            </xsl:for-each>
        </table>
    </xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
30.06.2008, 18:48
    #35402565
SuSa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разбивка на страницы возможна?
поднималось
можно
ищи сдесь и на xmlhack.ru/forum
...
Рейтинг: 0 / 0
01.07.2008, 12:22
    #35403710
cavalero
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разбивка на страницы возможна?
поднималось то поднималось, а вот решения я так и не нашел... сейчас копаю в сторону xsl-fo.
...
Рейтинг: 0 / 0
01.07.2008, 14:37
    #35404244
SuSa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разбивка на страницы возможна?
я как минимум 2 людей знаю кто занет ответ.
Один в командировке приедет в пятницу, второй в отпуск ушел. когда выйдет не вкурсе.
Если к тому моменту когда хоть один объявтся еще будет актуально ,напишу им.
в xsl-fo точно решение есть, они оба на нем как раз специализировались и перед обоими эти грабли лежали.
...
Рейтинг: 0 / 0
01.07.2008, 15:29
    #35404444
cavalero
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разбивка на страницы возможна?
SuSaя как минимум 2 людей знаю кто занет ответ.
Один в командировке приедет в пятницу, второй в отпуск ушел. когда выйдет не вкурсе.
Если к тому моменту когда хоть один объявтся еще будет актуально ,напишу им.
в xsl-fo точно решение есть, они оба на нем как раз специализировались и перед обоими эти грабли лежали.

Мерси, было бы круто! Я чё то уже нарыл, перехожу к практическим занятиям. В FO это решается тем, что можно TABLE ROW делать единым объектом для вывода. По крайней мере, в мануалах пишут так. Потом возникла проблема с XSL-FO->PDF конвертером для asp.net. По странному(точнее закономерному для области применения XSL-FO (издательское дело)) стоят они некисло. По хорошему от килобакса. Нашел бесплатное nFOP = port of JAVA FOP. который умеет как то это делать. Результатами поделюсь :)
...
Рейтинг: 0 / 0
01.07.2008, 15:37
    #35404485
SuSa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разбивка на страницы возможна?
Подсказка, ищи XEP (читать как "хеп"), и руссофикатор к нему NAXEP. Красиво звучит не правда ли).
...
Рейтинг: 0 / 0
01.07.2008, 15:39
    #35404501
SuSa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разбивка на страницы возможна?
так же глянь Oxygen. Эти творцы занимались подключением Fop'a и Xep'a к парсеру saxon. А также нашли такую возможность еще в Oxygen'e v 8. Сейчас 9-ка вышла ,может уже все включено.
...
Рейтинг: 0 / 0
01.07.2008, 17:33
    #35404912
cavalero
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разбивка на страницы возможна?
Однако :)
XEP Server (1-CPU) 3,999.95$. Цена настолько милая, что хочется разбираться с nFOP. таких денег на pdf жалко.
...
Рейтинг: 0 / 0
01.07.2008, 18:06
    #35405036
cavalero
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разбивка на страницы возможна?
Насколько я понял с Oxygen (www.oxygenxml.com), то это всего лишь визуальных редактор для xml,xsl & etc технологий. А результат xsl трансформации можно потом передать в XEP или другой процессор, который работает с xsl-fo форматом... nFOP кажется даже работает - по крайней мере какой то текст в pdf выводит :) По идее у него проблема с русским, будем смотреть далее. Так и есть, русские буквы заменяются на '#' :(.
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / разбивка на страницы возможна? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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