powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / использование разных макетов страниц в одном документе
3 сообщений из 3, страница 1 из 1
использование разных макетов страниц в одном документе
    #39259528
Андрей Ф.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Форумчане, есть такая ситуация.
Вот XML
<?xml version="1.0" encoding="UTF-8"?>
<documents>
<!-- Счет-фактура -->
<Commercial_Invoice clnt_id="362651">
1
</Commercial_Invoice>

<!-- Счет-фактура -->
<Commercial_Invoice clnt_id="1644763">
2
</Commercial_Invoice>

<!-- Корректировочный счет-фактура -->
<Adj_Commercial_Invoice clnt_id="1195947">
3
</Adj_Commercial_Invoice>
<Bill clnt_id="737659">
4
<Commercial_Invoice clnt_id="362651">
4.1
</Commercial_Invoice>
</Bill>
<Bill clnt_id="395064">
5
</Bill>
<payment_request>
6
</payment_request>
<Commercial_Invoice clnt_id="1644763">
7
</Commercial_Invoice>
</documents>

По аналогии с предыдущим примером написал xslt

<?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:template match="documents">
<fo:root >
<fo:layout-master-set>
<fo:simple-page-master master-name="A4_landscape" page-height="21cm" page-width="29.7cm" font-family="sans-serif" margin-top="0.5cm" margin-bottom="1cm" margin-left="2cm" margin-right="2cm">
<fo:region-body margin-top="0mm" margin-bottom="10mm" />
<fo:region-before extent="10mm" />
<fo:region-after extent="10mm" />
</fo:simple-page-master>
<fo:simple-page-master master-name="A4_portrait" page-height="29.7cm" page-width="21cm" font-family="sans-serif" margin-top="0.5cm" margin-bottom="1cm" margin-left="2cm" margin-right="2cm">
<fo:region-body margin-top="0mm" margin-bottom="10mm" />
<fo:region-before extent="10mm" />
<fo:region-after extent="10mm" />
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="A4_landscape">
<fo:flow flow-name="xsl-region-body" font-family="Arial">
<xsl:apply-templates select="*" mode="doc"></xsl:apply-templates>
</fo:flow>
</fo:page-sequence>


</fo:root>
</xsl:template>

<xsl:template match="Commercial_Invoice[parent::Bill]" mode="doc">
<fo:page-sequence master-reference="A4_portrait">
<fo:flow flow-name="xsl-region-body" font-family="Arial">
<fo:block><xsl:apply-templates select="."/></fo:block>
</fo:flow>
</fo:page-sequence>
</xsl:template>
</xsl:stylesheet>

При обработке происходит ошибка вызова одного page-sequence из под другого:
net.sf.saxon.trans.XPathException: org.apache.fop.fo.ValidationException: "{ http://www.w3.org/1999/XSL/Format}page-sequence" is not a valid child of "fo:flow"! (See position 27:-1)
Как же правильно вызвать использование одного макета страниц для элемента, который находится внутри другого, на который назначен другой макет страницы?
Понимаю, что логика такая:
Перед использованием нового макета страницы, старый должен быть закрыт.
Предположим <documents> обрабатывается макетом «A4_landscape». Внутри <documents> используется элемент <Commercial_Invoice[parent::Bill]> который должен выводиться макетом «A4_portrait».
Необходимо часть содержимого <documents> до <Commercial_Invoice[parent::Bill]> вывести с макетом «A4_landscape», закрыть последовательность «A4_landscape», затем вывести содержимое <Commercial_Invoice[parent::Bill]> с макетом «A4_portrait», закрыть – «A4_portrait», вывести оставшуюся часть <documents> с макетом «A4_landscape».
Как это описать к коде xslt ?
Заранее благодарен за помощь.
...
Рейтинг: 0 / 0
использование разных макетов страниц в одном документе
    #39259847
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и зачем плодить темы?

19320001
...
Рейтинг: 0 / 0
использование разных макетов страниц в одном документе
    #39260278
Андрей Ф.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну и удалите... ;)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / использование разных макетов страниц в одном документе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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