<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl= "http://www.w3.org/1999/XSL/Transform" version= "1.0"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:import href= "pageComponents_html.xsl" />
<!-- In diesem Stylesheet können Sie individuelle templates unterbringen,
die in ihrer Präzedenz das normale Stylesheet
pageComponents_html.xsl überragt. -->
<xsl:import href= "pageComponents_html_final.xsl" />
<xsl:import href= "resultset_html.xsl" />
<xsl:decimal-format name= "German" grouping-separator= "." NaN= "" zero-digit = "0" decimal-separator= "," />
<!-- Wenn Sie ein eigenes PDF - Stylesheet erstellen, sollten Sie die u. aufgeführte Routine zur
Berechnung der Spaltenbreite übernehmen
Wenn Sie nur das Seitenlayout ändern wollen, z.B. auf A4, dann reicht es, hier die Variablen seitenbreite_mm,
die druckbreite_mm und das Attribut page-height anzupassen.
-->
<xsl:variable name= "seitenbreite_mm" > 300</xsl:variable>
<!-- Die Breite der Tabelle in mm bei A4 Querformat: -->
<xsl:variable name= "druckbreite_mm" > 280</xsl:variable>
<!-- Wenn keine Spaltenbreite definiert ist, wird 12 (Einheit Applet - Breite) verwendet. -->
<xsl:variable name= "std_spaltenbreite" > 12</xsl:variable>
<xsl:template match= "/" >
<fo:root xmlns:fo= "http://www.w3.org/1999/XSL/Format" >
<!-- start allg -->
<fo:layout-master-set >
<fo:simple-page-master master-name= "first"
page-height="200mm" page-width="{concat($seitenbreite_mm,'mm')}"
margin-top="10mm" margin-bottom="10mm"
margin-left="8mm" margin-right="8mm">
<fo:region-body
margin-top="0mm" margin-bottom="20mm"
margin-left="0mm" margin-right="0mm"/>
<fo:region-before extent= "10mm" />
<fo:region-after extent= "10mm" />
</fo:simple-page-master>
<fo:simple-page-master master-name= "rest"
page-height="200mm" page-width="{concat($seitenbreite_mm,'mm')}"
margin-top="10mm" margin-bottom="10mm"
margin-left="8mm" margin-right="8mm">
<fo:region-body
margin-top="0mm" margin-bottom="20mm"
margin-left="0mm" margin-right="0mm"/>
<fo:region-before extent= "10mm" />
<fo:region-after extent= "10mm" />
</fo:simple-page-master>
<fo:page-sequence-master master-name= "sequence" >
<fo:repeatable-page-master-alternatives >
<fo:conditional-page-master-reference master-reference= "first"
/>
<fo:conditional-page-master-reference master-reference= "rest"
page-position="rest" />
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
</fo:layout-master-set>
<!-- end allg -->
<!-- start seite -->
<fo:page-sequence master-name= "sequence" master-reference= "sequence" >
<fo:static-content flow-name= "xsl-region-after" >
<fo:block text-align= "center" font-size= "12pt" > Seite <fo:page-number />
<!-- kosten zuviel Speicher von <fo:page - number - citation ref - id="endofdoc" /> -->
</fo:block>
</fo:static-content>
<fo:flow flow-name= "xsl-region-body" >
<!-- start Titel -->
<fo:block font-family= "serif" line-height= "20pt" font-size= "20pt" font-weight= "bolder" color= "rgb(0,0,255)" margin-bottom= "20mm" text-align= "end" >
<fo:external-graphic >
<xsl:choose >
<xsl:when test= "/ergebnisse/generalinfo/REPORT_LOGO_FILE!='' and /ergebnisse/generalinfo/REPORT_LOGO_FILE!='@@REPORT_LOGO_FILE@@'" >
<xsl:attribute name= "src" > <xsl:text > servlet/</xsl:text> <xsl:value-of select= "/ergebnisse/generalinfo/REPORT_LOGO_FILE" /> </xsl:attribute>
</xsl:when>
<xsl:otherwise >
<xsl:attribute name= "src" > <xsl:text > servlet/</xsl:text> <xsl:call-template name= "logo_path" > </xsl:call-template> </xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</fo:external-graphic>
</fo:block>
<xsl:if test= "/ergebnisse/makro/@id !=''" >
<fo:block font-family= "sans-serif" line-height= "20pt" font-size= "20pt" font-weight= "bolder" margin-bottom= "20mm" >
<xsl:value-of select= "/ergebnisse/makro/name" />
</fo:block>
</xsl:if>
<!-- end TItel -->
<!-- start Tabelle -->
<xsl:for-each select= "ergebnisse/ergebnis/ergebniselement" >
<xsl:choose >
<xsl:when test= "@typ='image'" >
<!-- klappt noch nciht<img>
<xsl:attribute name= "src" > <xsl:value-of select= "@url" /> </xsl:attribute>
</img>
<hr /> -->
<xsl:text >
</xsl:text>
</xsl:when>
<xsl:when test= "@typ='tabelle'" >
<fo:block font-family= "sans-serif" line-height= "48pt" font-size= "20pt" font-weight= "bold" color= "rgb(0,0,255)" space-after= "10mm" >
<xsl:value-of select= "../maskenname" /> </fo:block>
<xsl:call-template name= "legende_fo" />
<!-- <fo:block font - family="sans - serif" line - height="26pt" font - size="14pt">Stand: <xsl:value - of select="stand" /></fo:block> -->
<xsl:if test= "errmsg !=''" >
<fo:block font-family= "sans-serif" line-height= "20pt" font-size= "20pt" > <!-- -->
<xsl:copy-of select= "errmsg" /> </fo:block> </xsl:if>
<fo:table border= "solid" border-collapse= "collapse" table-layout= "fixed" > <xsl:text >
</xsl:text>
<!-- start Spaltenbreite -->
<xsl:variable name= "gesamtbreite_str" >
<xsl:text > 0</xsl:text>
<xsl:for-each select= "sqlerg/headers/header" >
<xsl:if test= "starts-with(f_name,'next') = false" > <!-- MB 10.6.09 keine Linkspalten -->
<xsl:text > +</xsl:text> <xsl:value-of select= "@width" />
</xsl:if>
</xsl:for-each>
</xsl:variable>
<!-- MB 10.6.09 keine Linkspalten -->
<xsl:variable name= "defbreite" > <xsl:value-of select= "sum(sqlerg/headers/header[ @width > 0 and starts-with(f_name,'next') = false ]/@width )" /> </xsl:variable>
<xsl:variable name= "ndefbreite" > <xsl:value-of select= "count(sqlerg/headers/header[ @width = '' and starts-with(f_name,'next') = false])" /> </xsl:variable>
<xsl:variable name= "gesamtbreite" > <xsl:value-of select= "$defbreite+($ndefbreite* $std_spaltenbreite)" /> </xsl:variable>
<xsl:for-each select= "sqlerg/headers/header" >
<xsl:if test= "starts-with(f_name,'next') = false" > <!-- MB 10.6.09 keine Linkspalten -->
<xsl:text >
</xsl:text>
<xsl:comment > <xsl:value-of select= "$defbreite" /> </xsl:comment>
<fo:table-column >
<xsl:attribute name= "column-width" >
<xsl:choose >
<!-- Wenn Tabelle zu breit ist
<xsl:when test= "$defbreite > 320" >
<xsl:variable name= "spbreite" > <xsl:value-of select= "@width * (12 div 20)" />
</xsl:variable>
<xsl:value-of select= "concat($spbreite,'em')" />
</xsl:when>
-->
<xsl:when test= "@width != ''" >
<!-- Im Applet ist die Breite definiert als Multiplikator von einem Schriftzeichen (em).
In FOP ist 1em=ca.20pt, d.h. um zur Schriftgröße 12pt zu kommen, wird Faktor benutzt.-->
<!-- <xsl:variable name="spbreite"><xsl:value - of select="@width * (12 div 20)" />
</xsl:variable>
<xsl:value-of select= "concat($spbreite,'em')" />
-->
<xsl:variable name= "spbreite" > <xsl:value-of select= "$druckbreite_mm*(@width div $gesamtbreite)" />
</xsl:variable>
<xsl:choose >
<xsl:when test= "$spbreite > 2" >
<xsl:value-of select= "concat($spbreite,'mm')" />
</xsl:when>
<xsl:otherwise >
<xsl:text > auto</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise >
<xsl:value-of select= "$druckbreite_mm*($std_spaltenbreite div $gesamtbreite)" />
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<!--
<xsl:attribute name= "column-number" >
<xsl:value-of select= "(@id+1)" />
</xsl:attribute> -->
</fo:table-column>
</xsl:if>
</xsl:for-each>
<!-- end Spaltenbreite -->
<!-- start Header -->
<fo:table-header >
<!-- Spaltenüberschriften: zunächst wird geprüft, ob Spaltenüberschriften verknüpft werden sollen -->
<xsl:variable name= "spanned_cols" >
<xsl:for-each select= "sqlerg/headers/header" >
<xsl:if test= "contains(wert,'\000')" >
<xsl:text > true</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:choose >
<xsl:when test= "sqlerg/headers/@hasAggregationHeaders='true'" >
<xsl:for-each select= "sqlerg/aggregationHeaders" >
<xsl:for-each select= "tr" >
<fo:table-row >
<xsl:for-each select= "th [ @isHidden='false' and starts-with(@f_name,'next') = false] " >
<fo:table-cell border-width= "0.5mm" padding= "1mm" border-style= "solid" >
<xsl:if test= "@rowspan != ''" >
<xsl:attribute name= "number-rows-spanned" > <xsl:value-of select= "@rowspan" /> </xsl:attribute>
</xsl:if>
<xsl:if test= "@colspan != ''" >
<xsl:attribute name= "number-columns-spanned" > <xsl:value-of select= "@colspan" /> </xsl:attribute>
</xsl:if>
<!-- language =en wg. hyphenation -->
<fo:block text-align= "center" font-size= "9pt" font-weight= "bold" language= "en" hyphenate= "true" > <!-- hyphenation raus, fop kommt sonst in Endlosschleife -->
<xsl:call-template name= "removeBackslashN" >
<xsl:with-param name= "derwert" > <xsl:value-of select= "." /> </xsl:with-param>
<xsl:with-param name= "format" > <xsl:value-of select= "'html'" /> </xsl:with-param>
</xsl:call-template>
</fo:block>
</fo:table-cell> <xsl:text >
</xsl:text>
</xsl:for-each>
</fo:table-row> <xsl:text >
</xsl:text>
</xsl:for-each>
</xsl:for-each>
</xsl:when>
<xsl:otherwise >
<!-- Normale headers -->
<fo:table-row >
<xsl:for-each select= "sqlerg/headers/header" >
<xsl:if test= "starts-with(f_name,'next') = false" > <!-- MB 10.6.09 keine Linkspalten -->
<xsl:call-template name= "foheader" >
<xsl:with-param name= "derwert" select= "wert" />
</xsl:call-template>
<xsl:text >
</xsl:text>
</xsl:if>
</xsl:for-each>
</fo:table-row>
</xsl:otherwise>
</xsl:choose>
</fo:table-header>
<!-- end header -->
<!-- start body -->
<xsl:choose >
<xsl:when test= "count(sqlerg/row) = 0" >
<!-- saxon verlangt hier mind. eine Zeile -->
<fo:table-body >
<fo:table-row >
<fo:table-cell > <fo:block > </fo:block> </fo:table-cell> </fo:table-row>
</fo:table-body>
</xsl:when>
<xsl:otherwise >
<fo:table-body >
<xsl:variable name= "erglevelmax" >
<xsl:if test= "count(sqlerg/row/col [ f_name = 'ebene' ]) > 0" >
<xsl:choose >
<xsl:when test= "count(sqlerg/row/col [ f_name = 'ebene' ] /wert [ . = '4']) > 0" >
<xsl:text > 4</xsl:text>
</xsl:when>
<xsl:when test= "count(sqlerg/row/col [ f_name = 'ebene' ] /wert [ . = '3']) > 0" >
<xsl:text > 3</xsl:text>
</xsl:when>
<xsl:when test= "count(sqlerg/row/col [ f_name = 'ebene' ] /wert [ . = '2']) > 0" >
<xsl:text > 2</xsl:text>
</xsl:when>
<xsl:when test= "count(sqlerg/row/col [ f_name = 'ebene' ] /wert [ . = '1']) > 0" >
<xsl:text > 1</xsl:text>
</xsl:when>
<xsl:otherwise >
<xsl:text > 5</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:variable>
<xsl:for-each select= "sqlerg/row" >
<fo:table-row >
<xsl:choose >
<xsl:when test= "col/f_name = 'ebene'" >
<!-- DQ 14.12.07 In Zukunft noch erglevelmax auswerten when$erglevelmax = 5 and -->
<xsl:choose >
<xsl:when test= "6-$erglevelmax+col[ f_name = 'ebene' ] /wert='1'" >
<xsl:attribute name= "background-color" > <xsl:text > #cccccc</xsl:text> </xsl:attribute>
<xsl:attribute name= "border-width" > <xsl:text > 1mm</xsl:text> </xsl:attribute>
</xsl:when>
<xsl:when test= "6-$erglevelmax+col[ f_name = 'ebene' ] /wert='2'" >
<xsl:attribute name= "border-width" > <xsl:text > 1mm</xsl:text> </xsl:attribute>
</xsl:when>
<xsl:when test= "6-$erglevelmax+col[ f_name = 'ebene' ] /wert='3'" >
<xsl:attribute name= "border-width" > <xsl:text > 0.5mm</xsl:text> </xsl:attribute>
<xsl:attribute name= "background-color" > <xsl:text > #cccccc</xsl:text> </xsl:attribute>
</xsl:when>
<xsl:when test= "6-$erglevelmax+col[ f_name = 'ebene' ] /wert='4'" >
<xsl:attribute name= "background-color" > <xsl:text > #e6e6e6</xsl:text> </xsl:attribute>
<xsl:attribute name= "border-width" > <xsl:text > 0.5mm</xsl:text> </xsl:attribute>
</xsl:when>
<xsl:when test= "6-$erglevelmax+ col[ f_name = 'ebene' ] /wert='5'" >
<xsl:attribute name= "background-color" > <xsl:text > #e6e6e6</xsl:text> </xsl:attribute>
</xsl:when>
<xsl:otherwise >
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test= "@issumme='true'" >
<xsl:attribute name= "background-color" > <xsl:text > #cccccc</xsl:text> </xsl:attribute>
<xsl:attribute name= "border-width" > <xsl:text > 1mm</xsl:text> </xsl:attribute>
</xsl:when>
</xsl:choose>
<xsl:text >
</xsl:text>
<xsl:for-each select= "col" >
<xsl:if test= "starts-with(f_name,'next') = false" > <!-- MB 10.6.09 keine Linkspalten -->
<xsl:call-template name= "spalte" /> <xsl:text >
</xsl:text>
</xsl:if>
</xsl:for-each>
</fo:table-row> <xsl:text >
</xsl:text>
</xsl:for-each>
<!-- end body -->
</fo:table-body>
</xsl:otherwise>
</xsl:choose>
</fo:table>
</xsl:when>
<xsl:otherwise >
<xsl:text >
Nicht unterstützter Ergebnistyp </xsl:text> <xsl:value-of select= "@type" />
</xsl:otherwise>
</xsl:choose>
<!-- end Tabelle -->
<xsl:call-template name= "datensatzzaehler" />
</xsl:for-each>
<!-- end Tabelle -->
<!-- Ende des Dokuments zur Ermitttlung der maximalen Seitenzahl zu Speicherintensiv -->
<fo:block id= "endofdoc" />
</fo:flow>
</fo:page-sequence>
<!-- end Seite -->
</fo:root>
</xsl:template>
<!-- start template spalte wird für Linkspalten gar nicht aufgerufen!! -->
<xsl:template name= "spalte" >
<fo:table-cell border-width= "0.1mm" border-style= "solid" padding-left= "0.5mm" padding-right= "0.5mm" >
<xsl:if test= "starts-with(f_name,'next') = false" >
<fo:block font-size= "10pt" font-family= "serif" line-height= "9pt" space-before.optimum= "6pt" space-after.optimum= "6pt"
language="en" hyphenate="true">
<xsl:choose >
<xsl:when test= "@typ='2' or @typ='8' or @typ='3'" > <!-- DecimalFormat -->
<xsl:attribute name= "text-align" > end</xsl:attribute>
<xsl:value-of select= "format-number(wert,'###.###.###.###.##0,00','German')" />
</xsl:when>
<xsl:when test= "@typ='4'" > <!-- Integer -->
<xsl:attribute name= "text-align" > end</xsl:attribute>
<!-- <xsl:attribute name="class">integer</xsl:attribute> -->
<!-- <xsl:value - of select="wert" /> -->
<xsl:value-of select= "format-number(wert,'###.###.###.###.###','German')" />
</xsl:when>
<xsl:otherwise >
<!-- Typ=1 ist string und wird defaultmäßig behandelt -->
<xsl:attribute name= "text-align" > start</xsl:attribute>
<xsl:choose >
<xsl:when test= "f_name='email'" >
<xsl:value-of select= "wert" />
</xsl:when>
<xsl:when test= "f_name='url'" >
<!-- <a target="_blank"><xsl:attribute name="href"><xsl:value - of select="wert" /></xsl:attribute> -->
<xsl:value-of select= "wert" /> <!-- </a> -->
</xsl:when>
<xsl:when test= "f_name='nextmask'" >
</xsl:when>
<xsl:when test= "f_name='nexttable'" >
</xsl:when>
<xsl:otherwise >
<xsl:value-of select= "wert" />
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</fo:block>
</xsl:if>
</fo:table-cell> <xsl:text >
</xsl:text>
</xsl:template>
<!-- end template -->
<!-- start legende -->
<xsl:template name= "legende_fo" >
<fo:block font-family= "sans-serif" line-height= "20pt" font-size= "14pt" border-width= "0.5mm" border-style= "solid" border-color= "gray" space-after= "10mm" >
<xsl:for-each select= "../felder/feld" >
<xsl:if test= "(value !='' or sicht/@isFirstInGroup='false' or @isstandtoday='false') and @varname != 'sort' and @varname != 'maxoffset'" >
<fo:inline >
<xsl:choose >
<xsl:when test= "string-length(caption_short) > 0 and caption_short != 'null'" >
<![CDATA[]]> <xsl:value-of select= "caption_short" /> <![CDATA[]]>
</xsl:when>
<xsl:otherwise >
<xsl:value-of select= "@varname" />
</xsl:otherwise>
</xsl:choose> </fo:inline> <fo:inline > :  </fo:inline>
<fo:inline font-style= "italic" font-weight= "bold" >
<![CDATA[]]> <xsl:value-of select= "value_caption" /> <![CDATA[]]>
<!-- MB 12.6.09 bei Mehrfachauswahl werden alle Auswahl benötigt in Legende
<xsl:if test= "string-length(value_caption) < 50" >
<![CDATA[]]> <xsl:value-of select= "value_caption" /> <![CDATA[]]>
</xsl:if>
<xsl:if test= "string-length(value_caption) > 49" >
<![CDATA[]]> <xsl:value-of select= "substring(value_caption,0,50)" /> ...<![CDATA[]]>
</xsl:if> -->
<xsl:if test= "sicht!=''" >
<![CDATA[]]> <xsl:text > (</xsl:text> <xsl:value-of select= "sicht" />
<xsl:if test= "@stand!=''" > <xsl:text > - Stand:</xsl:text> <xsl:value-of select= "@stand" /> </xsl:if>
<xsl:text > )</xsl:text> <![CDATA[]]>
</xsl:if>
;  </fo:inline>
</xsl:if>
</xsl:for-each>
<xsl:text > User: </xsl:text> <xsl:value-of select= "/ergebnisse/user" />
<xsl:text > ; Stand: </xsl:text> <xsl:value-of select= "../stand" />
</fo:block>
<!--
<xsl:for-each select= "/ergebnis/felder/msgs/msg" >
<xsl:if test= "wert !=''" >
<fo:block space-after= "10mm" font-family= "sans-serif" line-height= "16pt" font-size= "14pt" >
<xsl:value-of select= "wert" />
</fo:block>
</xsl:if>
</xsl:for-each> -->
</xsl:template>
<!-- end legende -->
<!-- start foheader -->
<xsl:template name= "foheader" >
<xsl:param name= "derwert" />
<fo:table-cell border-width= "0.5mm" padding-left= "1mm" border-style= "solid" > <xsl:text >
</xsl:text>
<fo:block font-size= "9pt"
font-weight="bold"
language="en" hyphenate="true">
<xsl:variable name= "header1" >
<xsl:choose >
<xsl:when test= "(contains(string($derwert),'\n'))" >
<xsl:value-of select= "substring-before($derwert,'\n') " />
<xsl:text >
</xsl:text>
<xsl:value-of select= "substring-after($derwert,'\n') " />
</xsl:when>
<xsl:otherwise >
<xsl:copy-of select= "$derwert" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "header2" >
<xsl:choose >
<xsl:when test= "(contains(string($header1),'\n'))" >
<xsl:value-of select= "substring-before($header1,'\n') " />
<xsl:text >
</xsl:text>
<xsl:value-of select= "substring-after($header1,'\n') " />
</xsl:when>
<xsl:otherwise >
<xsl:value-of select= "$header1" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose >
<xsl:when test= "(contains(string($header2),'\000'))" >
<xsl:value-of select= "substring-before($header2,'\000') " />
<xsl:text >
</xsl:text>
<xsl:value-of select= "substring-after($header2,'\000') " />
</xsl:when>
<xsl:otherwise >
<xsl:value-of select= "$header2" />
</xsl:otherwise>
</xsl:choose> <xsl:text >
</xsl:text>
</fo:block>
</fo:table-cell> <xsl:text >
</xsl:text>
</xsl:template>
<!-- end foheader -->
</xsl:stylesheet>