powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / разбивка на страницы возможна?
9 сообщений из 9, страница 1 из 1
разбивка на страницы возможна?
    #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
разбивка на страницы возможна?
    #35402565
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поднималось
можно
ищи сдесь и на xmlhack.ru/forum
...
Рейтинг: 0 / 0
разбивка на страницы возможна?
    #35403710
cavalero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
поднималось то поднималось, а вот решения я так и не нашел... сейчас копаю в сторону xsl-fo.
...
Рейтинг: 0 / 0
разбивка на страницы возможна?
    #35404244
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я как минимум 2 людей знаю кто занет ответ.
Один в командировке приедет в пятницу, второй в отпуск ушел. когда выйдет не вкурсе.
Если к тому моменту когда хоть один объявтся еще будет актуально ,напишу им.
в xsl-fo точно решение есть, они оба на нем как раз специализировались и перед обоими эти грабли лежали.
...
Рейтинг: 0 / 0
разбивка на страницы возможна?
    #35404444
cavalero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SuSaя как минимум 2 людей знаю кто занет ответ.
Один в командировке приедет в пятницу, второй в отпуск ушел. когда выйдет не вкурсе.
Если к тому моменту когда хоть один объявтся еще будет актуально ,напишу им.
в xsl-fo точно решение есть, они оба на нем как раз специализировались и перед обоими эти грабли лежали.

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


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