Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xsl:fo Многостраничный документ в котором только одна страница / 1 сообщений из 1, страница 1 из 1
08.05.2018, 11:40
    #39641921
vladimir74
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xsl:fo Многостраничный документ в котором только одна страница
Доброго времени суток.

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


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