powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xsl:fo Многостраничный документ в котором только одна страница
1 сообщений из 1, страница 1 из 1
xsl:fo Многостраничный документ в котором только одна страница
    #39641921
vladimir74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток.

Столкнулся с проблемой, есть документ кажется по русский он называктся "сводный счёт фактура" (сборка счетов например за период времени на одного заказчика)
В документе практически всегда несколько страниц. При этом в первой и последней странице отличаются Header и Footer.
Моя проблема в том что если в документе только одна страница, то Footer последней страницы не отрабатывается.
Пытался создать два отдельных fo:repeatable-page-master-alternatives - но не знаю как сделать условие - для обработки одной страницы.

xsl-fo
Код: xml
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.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">
	<xsl:template match="/">
		<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="Verdana" font-size="7pt">
			<fo:layout-master-set>
				<!--Druckbare Fl&#228;ch-->
				<fo:simple-page-master master-name="firstPage" page-height="297mm" page-width="210mm" margin-left="19.5mm" margin-right="21.5mm">
					<fo:region-body region-name="xsl-region-body" margin-top="90mm" margin-bottom="87mm"/>
					<!--Oberer Rand der druckbare fl&#228;che-->
					<fo:region-before extent="90mm" region-name="firstPage"/>
					<!--Untere Rand der druckbare fl&#228;che-->
					<fo:region-after extent="87mm" region-name="region-after"/>
				</fo:simple-page-master>
				<fo:simple-page-master master-name="allPage" page-height="297mm" page-width="210mm" margin-left="19.5mm" margin-right="21.5mm">
					<fo:region-body region-name="xsl-region-body" margin-top="45mm" margin-bottom="87mm"/>
					<!--Oberer Rand der druckbare fl&#228;che-->
					<fo:region-before extent="45mm" region-name="region-befor"/>
					<!--Untere Rand der druckbare fl&#228;che-->
					<fo:region-after extent="87mm" region-name="region-after"/>
				</fo:simple-page-master>
				<fo:simple-page-master master-name="lastPage" page-height="297mm" page-width="210mm" margin-left="19.5mm" margin-right="21.5mm">
					<fo:region-body region-name="xsl-region-body" margin-top="45mm" margin-bottom="87mm"/>
					<!--Oberer Rand der druckbare fl&#228;che-->
					<fo:region-before extent="45mm" region-name="region-befor"/>
					<!--Untere Rand der druckbare fl&#228;che-->
					<fo:region-after extent="87mm" region-name="lastPage"/>
				</fo:simple-page-master>

				<fo:page-sequence-master master-name="main">
<!--					это не правильно. Но как по другому сделать не знаю
                                       <fo:repeatable-page-master-alternatives maximum-repeats="2">
						<fo:conditional-page-master-reference page-position="rest" master-reference="allPage"/>
						<fo:conditional-page-master-reference page-position="first" master-reference="firstPage"/>
						<fo:conditional-page-master-reference page-position="last" master-reference="lastPage"/>
					</fo:repeatable-page-master-alternatives>-->
					<fo:repeatable-page-master-alternatives>
						<fo:conditional-page-master-reference page-position="rest" master-reference="allPage"/>
						<fo:conditional-page-master-reference page-position="first" master-reference="firstPage"/>
						<fo:conditional-page-master-reference page-position="last" master-reference="lastPage"/>
					</fo:repeatable-page-master-alternatives>
				</fo:page-sequence-master>
			</fo:layout-master-set>

			<!--Seitenveralaufvorlage-->
			<fo:page-sequence master-reference="main">
				<!--Header mit Logo wenn es sein soll-->
				<fo:static-content flow-name="region-befor">
					<xsl:call-template name="anyheader"/>
				</fo:static-content>

				<fo:static-content flow-name="firstPage">
					<xsl:call-template name="firstheader"/>
				</fo:static-content>

				<fo:static-content flow-name="lastPage">
					<xsl:call-template name="lastfooter"/>
				</fo:static-content>

				<!--Fusszeilen Alle und die Letzte Seite-->
				<fo:static-content flow-name="region-after">
					<xsl:call-template name="anyfooter"/>
				</fo:static-content>

				<fo:flow flow-name="xsl-region-body">
					<xsl:call-template name="allbodytext"/>
				</fo:flow>
			</fo:page-sequence>
		</fo:root>
	</xsl:template>

	<!--Kopf f&#252;r alle Seiten auser erste Teil-->
	<xsl:template name="anyheader">
		<xsl:call-template name="logoblock"/>
		<fo:block-container>
			<fo:block>anyheader</fo:block>
			<fo:block>Kopf f&#252;r alle Seiten auser erste Teil</fo:block>
		</fo:block-container>
	</xsl:template>

	<!--Adresse Teil-->
	<xsl:template name="firstheader">
		<xsl:call-template name="logoblock"/>
		<fo:block-container>
			<fo:block>firstheader123</fo:block>
			<fo:block>Adresse Teil</fo:block>
		</fo:block-container>
	</xsl:template>

	<!--Logo Block-->
	<xsl:template name="logoblock">
		<fo:block-container>
			<fo:block>logoblock</fo:block>
		</fo:block-container>
		<fo:block-container>
			<fo:block>IMMAGES</fo:block>
		</fo:block-container>
	</xsl:template>

	<!--Body Tabelle-->
	<xsl:template name="allbodytext">
		<fo:block-container>
			<fo:block>allbodytext</fo:block>
			<fo:block>Body Tabelle</fo:block>
			<fo:table>
				<fo:table-column column-width="500mm"/>
				<fo:table-body>
					<xsl:for-each select="/start/numbers">
						<fo:table-row>
							<fo:table-cell>
								<fo:block>
									<xsl:value-of select="number1"/>
									<xsl:value-of select="' - '"/>
									<xsl:value-of select="number2"/>
								</fo:block>
							</fo:table-cell>
						</fo:table-row>
					</xsl:for-each>
				</fo:table-body>
			</fo:table>
		</fo:block-container>
	</xsl:template>

	<xsl:template name="testPage">
		<fo:block-container height="20mm" border-top-style="solid" border-bottom-style="solid">
			<fo:block>testPage</fo:block>
		</fo:block-container>
		<xsl:call-template name="fusszeile"/>
	</xsl:template>

	<!--template f&#252;r Fusszeilen mit dem Text-->
	<xsl:template name="anyfooter">
		<fo:block-container height="20mm" border-top-style="solid" border-bottom-style="solid">
			<fo:block>anyfooter</fo:block>
			<fo:block>template f&#252;r Fusszeilen mit dem Text</fo:block>
		</fo:block-container>
		<xsl:call-template name="fusszeile"/>
	</xsl:template>

	<!--template f&#252;r lastfooter mit dem Text-->
	<xsl:template name="lastfooter">
		<fo:block-container height="20mm" border-top-style="solid" border-bottom-style="solid">
			<fo:block>lastfooter</fo:block>
			<fo:block>ANDERE !!! template f&#252;r lastfooter mit dem Text</fo:block>
		</fo:block-container>
		<xsl:call-template name="fusszeile"/>
	</xsl:template>

	<xsl:template name="fusszeile">
		<fo:block-container>
			<fo:block>fusszeile</fo:block>
			<fo:block>NUR DIE fusszeile</fo:block>
		</fo:block-container>
	</xsl:template>
</xsl:stylesheet>




xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<start>
	<numbers>
		<number1>1</number1>
		<number2>1000</number2>
	</numbers>
	<numbers>
		<number1>2</number1>
		<number2>1001</number2>
	</numbers>
	<numbers>
		<number1>3</number1>
		<number2>1002</number2>
	</numbers>
	<numbers>
		<number1>4</number1>
		<number2>1003</number2>
	</numbers>
</start>

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


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