<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://jasperreports.sourceforge.net/jasperreports"> <xsl:param name="font" select="'Liberation Sans'" /><!--TODO {$font} als style--> <xsl:output method="xml" encoding="UTF-8"/> <xsl:template name="generateJasperReport"> <xsl:param name="isMainReport" select="'true'" /> <xsl:param name="ergebniselementOrdnr" select="0" /> <xsl:param name="druckbreite" select="812" /> <xsl:param name="seitenbreite" select="842" /> <xsl:param name="seitenhoehe" select="595" /> <xsl:param name="seitenrand" select="12" /> <xsl:param name="topMargin" select="12" /> <xsl:param name="bottomMargin" select="12" /> <xsl:param name="isIgnorePagination" select="'true'" /> <xsl:param name="orientation" select="'Landscape'" /> <xsl:param name="stylesFile" select="'simple_table.jrtx'" /> <xsl:param name="font" select="'Liberation Sans'" /><!--TODO Arial als style--> <!--Die Breite der Tabelle in pixel bei A4 Querformat:--> <!-- Wenn keine Spaltenbreite definiert ist, wird 12 (Einheit Applet-Breite) verwendet. --> <xsl:param name="std_spaltenbreite" select="'12'" /> <xsl:param name="std_zeilenhoehe_header" select="30" /> <xsl:param name="std_zeilenhoehe_tablerow" select="25" /> <xsl:variable name="isMacroReport" select="/ergebnisse/@isMakro" /> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="{/ergebnisse/ergebnis[@ordnr=$ergebniselementOrdnr]/maskenname}" language="groovy" pageWidth="{$seitenbreite}" pageHeight="{$seitenhoehe}" orientation="{$orientation}" columnWidth="{$druckbreite}" leftMargin="{$seitenrand}" rightMargin="{$seitenrand}" topMargin="{$topMargin}" bottomMargin="{$bottomMargin}" isIgnorePagination="{$isIgnorePagination}" > <xsl:call-template name="jr_properties" /> <property name="net.sf.jasperreports.export.xls.exclude.origin.band.1" value="pageHeader"/> <property name="net.sf.jasperreports.export.xls.exclude.origin.band.2" value="pageFooter"/> <property name="net.sf.jasperreports.export.xlsx.exclude.origin.band.1" value="pageHeader"/> <property name="net.sf.jasperreports.export.xlsx.exclude.origin.band.2" value="pageFooter"/> <!-- zum Testen--> <property name="com.jaspersoft.studio.data.defaultdataadapter" value="TUHH_kennz_bericht_ba"/> <!--<property name="com.jaspersoft.studio.property.dataset.dialog.DatasetDialog.sash.w1" value="466"/> <property name="com.jaspersoft.studio.property.dataset.dialog.DatasetDialog.sash.w2" value="522"/>--> <template><xsl:value-of select="concat('"',$stylesFile,'"')" /></template> <xsl:call-template name="jr_styles" > <xsl:with-param name="ergebniselementOrdnr" select="$ergebniselementOrdnr" /> </xsl:call-template> <xsl:call-template name="querystring"> <xsl:with-param name="ordnr" select="$ergebniselementOrdnr" /> </xsl:call-template> <xsl:if test="$isMainReport='true'"> <xsl:call-template name="jr_fields_report_level" /> </xsl:if> <xsl:call-template name="jr_fields" > <xsl:with-param name="ergebniselementOrdnr" select="$ergebniselementOrdnr"/> <xsl:with-param name="isMacroReport" select="$isMacroReport" /> <xsl:with-param name="isMainReport" select="$isMainReport" /> </xsl:call-template> <variable name="tabellennr" class="java.lang.Integer"> <variableExpression><xsl:value-of select="$ergebniselementOrdnr"/></variableExpression> </variable> <xsl:call-template name="generateGroupHeaderBandSimple"> <xsl:with-param name="ergebniselementOrdnr" select="$ergebniselementOrdnr" /> <xsl:with-param name="std_zeilenhoehe_header" select="$std_zeilenhoehe_header" /> <xsl:with-param name="druckbreite" select="$druckbreite" /> <xsl:with-param name="std_spaltenbreite" select="$std_spaltenbreite" /> </xsl:call-template> <xsl:if test="$isMainReport='true'"> <xsl:call-template name="generateTitleBand" > <xsl:with-param name="druckbreite" select="$druckbreite" /> </xsl:call-template> </xsl:if> <detail> <xsl:for-each select="/ergebnisse/ergebnis/ergebniselement[@ordnr=$ergebniselementOrdnr]"> <xsl:variable name="flavorTableRowStyle"> <xsl:choose> <xsl:when test="sqlerg/@istreetable='true'"> <xsl:text>treeTable</xsl:text> </xsl:when> <xsl:otherwise> <xsl:text>listAlternatingBg</xsl:text> </xsl:otherwise> </xsl:choose> </xsl:variable> <band height="{$std_zeilenhoehe_tablerow}" splitType="Stretch"> <xsl:variable name="colCount"><xsl:value-of select="count(sqlerg/headers/header[not(starts-with(f_name,'hidden')) and not(starts-with(f_name,'next')) ])"/></xsl:variable> <xsl:for-each select="sqlerg/headers/header[not(starts-with(f_name,'hidden')) and not(starts-with(f_name,'next')) ]"> <xsl:variable name="columnX"> <xsl:call-template name="getColumnX"> <xsl:with-param name="druckbreite" select="$druckbreite"/> <xsl:with-param name="std_spaltenbreite" select="$std_spaltenbreite"/> <xsl:with-param name="ergebniselementOrdnr" select="$ergebniselementOrdnr"/> <xsl:with-param name="colId" select="@id" /> <xsl:with-param name="colCount" select="$colCount"/> </xsl:call-template> </xsl:variable> <xsl:variable name="columnWidth"> <xsl:call-template name="getColumnwidth"> <xsl:with-param name="druckbreite" select="$druckbreite"/> <xsl:with-param name="std_spaltenbreite" select="$std_spaltenbreite"/> <xsl:with-param name="ergebniselementOrdnr" select="$ergebniselementOrdnr"/> <xsl:with-param name="colId" select="@id" /> <xsl:with-param name="colCount" select="$colCount"/> <xsl:with-param name="previousX" select="$columnX"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$flavorTableRowStyle='listAlternatingBg'"> <xsl:call-template name="jr_textField"> <xsl:with-param name="ergebnisElementOrdnr" select="$ergebniselementOrdnr" /> <xsl:with-param name="fieldName" select="wert" /> <xsl:with-param name="colName" select="f_name" /> <xsl:with-param name="colId" select="@id" /> <xsl:with-param name="x" select="$columnX" /> <xsl:with-param name="width" select="$columnWidth" /> <xsl:with-param name="height" select="$std_zeilenhoehe_tablerow" /> <xsl:with-param name="flavorTableRowStyle" select="'listAlternatingBg'" /> <xsl:with-param name="tableRowLevel" select="10" /> </xsl:call-template> </xsl:when> <xsl:when test="$flavorTableRowStyle='treeTable'"> <!--10 Ebenen in einer Schleife --> <xsl:call-template name="jr_textfield_levelx"> <xsl:with-param name="ergebnisElementOrdnr" select="$ergebniselementOrdnr" /> <xsl:with-param name="fieldName" select="wert" /> <xsl:with-param name="colName" select="f_name" /> <xsl:with-param name="colId" select="@id" /> <xsl:with-param name="x" select="$columnX" /> <xsl:with-param name="width" select="$columnWidth" /> <xsl:with-param name="std_zeilenhoehe_tablerow" select="$std_zeilenhoehe_tablerow" /> <xsl:with-param name="flavorTableRowStyle" select="'treeTable'" /> <xsl:with-param name="tableRowLevel" select="1" /> <xsl:with-param name="maxLevel" select="10"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <!-- ggf. weitere styles--> </xsl:otherwise> </xsl:choose> </xsl:for-each> </band> </xsl:for-each> </detail> </jasperReport> </xsl:template> <xsl:template name="jr_properties"><xsl:text> </xsl:text> <xsl:comment>Import von jr_properties</xsl:comment> <property xmlns="http://jasperreports.sourceforge.net/jasperreports" name="net.sf.jasperreports.export.xls.create.custom.palette" value="true"/> <property xmlns="http://jasperreports.sourceforge.net/jasperreports" name="net.sf.jasperreports.export.xls.detect.cell.type" value="true"/> <property xmlns="http://jasperreports.sourceforge.net/jasperreports" name="net.sf.jasperreports.export.xls.remove.empty.space.between.columns" value="true"/> <property xmlns="http://jasperreports.sourceforge.net/jasperreports" name="net.sf.jasperreports.export.xls.remove.empty.space.between.rows " value="true"/> <property name="com.jaspersoft.studio.unit." value="pixel"/> <property name="com.jaspersoft.studio.unit.pageHeight" value="pixel"/> <property name="com.jaspersoft.studio.unit.pageWidth" value="pixel"/> <property name="com.jaspersoft.studio.unit.topMargin" value="pixel"/> <property name="com.jaspersoft.studio.unit.bottomMargin" value="pixel"/> <property name="com.jaspersoft.studio.unit.leftMargin" value="pixel"/> <property name="com.jaspersoft.studio.unit.rightMargin" value="pixel"/> <property name="com.jaspersoft.studio.unit.columnWidth" value="pixel"/> <property name="com.jaspersoft.studio.unit.columnSpacing" value="pixel"/> <property name="net.sf.jasperreports.print.create.bookmarks" value="true"/> </xsl:template> <xsl:template name="jr_styles"> <xsl:param name="ergebniselementOrdnr" select="0" /> <xsl:variable name="flavorTableRowStyle"> <xsl:choose> <xsl:when test="/ergebnisse/ergebnis/ergebniselement[@ordnr=$ergebniselementOrdnr]/sqlerg/@istreetable='true'"> <xsl:text>treeTable</xsl:text> </xsl:when> <xsl:otherwise> <xsl:text>listAlternatingBg</xsl:text> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:call-template name="tableRowStyle"> <xsl:with-param name="flavorTableRowStyle" select="$flavorTableRowStyle" /> <xsl:with-param name="ergebniselementOrdnr" select="$ergebniselementOrdnr" /> </xsl:call-template> </xsl:template> <xsl:template name="tableRowStyle"> <xsl:param name="flavorTableRowStyle" select="'listAlternatingBg'" /> <xsl:param name="ergebniselementOrdnr" select="0" /> <!--<xsl:if test="$flavorTableRowStyle='listAlternatingBg'">--> <style name="TableRowDetail" mode="Opaque" forecolor="#000000" backcolor="#FFFFFF" hTextAlign="Right" vTextAlign="Middle" isBlankWhenNull="true" fontName="{$font}" fontSize="8"> <box rightPadding="2"> <pen lineColor="#FFFFFF"/> </box> <paragraph leftIndent="2" rightIndent="1" spacingBefore="0" spacingAfter="0"/> <conditionalStyle> <conditionExpression><![CDATA[Boolean.valueOf( $V{PAGE_COUNT} % 2 == 1 )]]></conditionExpression> <style mode="Opaque" forecolor="#000000" backcolor="#E3E8EB"/> </conditionalStyle> </style> <!--</xsl:if>--> </xsl:template> <xsl:template name="jr_fields_report_level"> <!-- nun die Felder: zuerst der Berichtsname--> <field name="REPORT_HEADING_INSTITUTION" class="java.lang.String"> <fieldDescription><xsl:text><![CDATA[/ergebnisse/generalinfo/REPORT_HEADING_INSTITUTION]]></xsl:text></fieldDescription> </field> <field name="REPORT_HEADING_URL" class="java.lang.String"> <fieldDescription><xsl:text><![CDATA[/ergebnisse/generalinfo/REPORT_HEADING_URL]]></xsl:text></fieldDescription> </field> <field name="REPORT_LOGO_FILE" class="java.lang.String"> <fieldDescription><xsl:text><![CDATA[/ergebnisse/generalinfo/REPORT_LOGO_FILE]]></xsl:text></fieldDescription> </field> <field name="REPORT_HEADING_ADRESS" class="java.lang.String"> <fieldDescription><xsl:text><![CDATA[/ergebnisse/generalinfo/REPORT_HEADING_ADRESS]]></xsl:text></fieldDescription> </field> <field name="REPORT_EMAIL" class="java.lang.String"> <fieldDescription><xsl:text><![CDATA[/ergebnisse/generalinfo/REPORT_EMAIL]]></xsl:text></fieldDescription> </field> <field name="REPORT_DOCUMENTATION_URL" class="java.lang.String"> <fieldDescription><xsl:text><![CDATA[/ergebnisse/generalinfo/REPORT_DOCUMENTATION_URL]]></xsl:text></fieldDescription> </field> </xsl:template> <xsl:template name="jr_fields"> <xsl:param name="ergebniselementOrdnr" select="0"/> <xsl:param name="isMainReport" /> <xsl:param name="isMacroReport" /> <field name="Berichtsname" class="java.lang.String"> <fieldDescription> <xsl:choose> <xsl:when test="$isMacroReport = 'true' and $isMainReport= 'true'"> <xsl:text><![CDATA[/ergebnisse/makro/name]]></xsl:text></xsl:when> <xsl:otherwise><xsl:text><![CDATA[/ergebnisse/ergebnis[ @ordnr=']]></xsl:text> <xsl:value-of select="$ergebniselementOrdnr"/> <xsl:text><![CDATA[']/maskenname]]></xsl:text> </xsl:otherwise> </xsl:choose> </fieldDescription> </field> <!-- dann der Erläuterungstext--> <field name="Erlaeuterung" class="java.lang.String"> <fieldDescription><xsl:text><![CDATA[/ergebnisse/ergebnis[ @ordnr=']]></xsl:text> <xsl:value-of select="$ergebniselementOrdnr"/> <xsl:text><![CDATA[']/explanation]]></xsl:text></fieldDescription> </field> <field name="Hinweis" class="java.lang.String"> <fieldDescription><xsl:text><![CDATA[/ergebnisse/ergebnis[ @ordnr=']]></xsl:text> <xsl:value-of select="$ergebniselementOrdnr"/> <xsl:text><![CDATA[']/hinweis]]></xsl:text></fieldDescription> </field> <xsl:comment> dann die Tabellenspalten </xsl:comment> <xsl:for-each select="/ergebnisse/ergebnis/ergebniselement[@ordnr=$ergebniselementOrdnr]"> <xsl:variable name="ordnr"><xsl:value-of select="@ordnr"/></xsl:variable> <xsl:for-each select="sqlerg/complete_headers/header"> <xsl:variable name="jasperFieldname"> <xsl:call-template name="createJasperFieldname"> <xsl:with-param name="fieldName_orig" select="wert"/> </xsl:call-template> </xsl:variable> <xsl:variable name="fldPrefix"> <xsl:if test="$isMacroReport='true'"> <xsl:text>tab_</xsl:text><xsl:value-of select="$ordnr" /> </xsl:if> </xsl:variable> <xsl:if test="normalize-space($jasperFieldname)!=''"> <!-- keine leeren Feldnamen--> <field name="{concat($fldPrefix,$jasperFieldname)}"> <xsl:attribute name="class"><xsl:call-template name="getJavaType"> <xsl:with-param name="ordnr"><xsl:value-of select="$ordnr"/></xsl:with-param> <xsl:with-param name="col_id"><xsl:value-of select="@id"/></xsl:with-param></xsl:call-template></xsl:attribute> <fieldDescription><xsl:text><![CDATA[col[@id="]]></xsl:text> <xsl:value-of select="@id"/><xsl:text><![CDATA[" and wert!=""]]></xsl:text> <xsl:if test="$isMacroReport='true'"> <xsl:text><![CDATA[ and ../../../@ordnr=']]></xsl:text><xsl:value-of select="$ordnr" /><xsl:text>'</xsl:text> </xsl:if> <xsl:text><![CDATA[]/wert]]></xsl:text> </fieldDescription> </field> </xsl:if> </xsl:for-each> <!-- dann die Legende pro Unterbericht--> <xsl:if test="$isMainReport='false'"> <xsl:for-each select="distinct-values(../completefields/feld/@varname)"> <xsl:variable name="jasperFieldname"> <xsl:call-template name="createJasperFieldname"> <xsl:with-param name="fieldName_orig" select="."/> </xsl:call-template> </xsl:variable> <xsl:variable name="varname"> <xsl:value-of select="." /> </xsl:variable> <!-- zuerst Label --> <field name="{concat('legende_',$jasperFieldname,'_label')}" class="java.lang.String"> <fieldDescription><xsl:text><![CDATA[/ergebnisse/ergebnis[@ordnr=]]></xsl:text><xsl:value-of select="$ordnr"/><xsl:text><![CDATA[]/completefields/feld [@varname="]]></xsl:text><xsl:value-of select="$varname"/><xsl:text><![CDATA["]/@varname]]></xsl:text></fieldDescription> </field> <!--dann Wert--> <field name="{concat('legende_',$jasperFieldname,'_value')}" class="java.lang.String"> <fieldDescription><xsl:text><![CDATA[/ergebnisse/ergebnis[@ordnr=]]></xsl:text><xsl:value-of select="$ordnr"/><xsl:text><![CDATA[]/felder/feld [@varname="]]></xsl:text><xsl:value-of select="$varname"/><xsl:text><![CDATA["]/value_caption]]></xsl:text></fieldDescription> </field> </xsl:for-each> </xsl:if> </xsl:for-each><!-- Ende Ergebniselemente --> <!-- dann die Legende Hauptbericht--> <xsl:if test="$isMainReport='true'"> <xsl:for-each select="distinct-values(/ergebnisse/ergebnis/completefields/feld/@varname)"> <xsl:variable name="jasperFieldname"> <xsl:call-template name="createJasperFieldname"> <xsl:with-param name="fieldName_orig" select="."/> </xsl:call-template> </xsl:variable> <xsl:variable name="varname"> <xsl:value-of select="." /> </xsl:variable> <!-- zuerst Label --> <field name="{concat('legende_',$jasperFieldname,'_label')}" class="java.lang.String"> <fieldDescription><xsl:text><![CDATA[/ergebnisse/ergebnis/completefields/feld [@varname="]]></xsl:text><xsl:value-of select="$varname"/><xsl:text><![CDATA["]/@varname]]></xsl:text></fieldDescription> </field> <!--dann Wert--> <field name="{concat('legende_',$jasperFieldname,'_value')}" class="java.lang.String"> <fieldDescription><xsl:text><![CDATA[/ergebnisse/ergebnis/felder/feld [@varname="]]></xsl:text><xsl:value-of select="$varname"/><xsl:text><![CDATA["]/value_caption]]></xsl:text></fieldDescription> </field> </xsl:for-each> </xsl:if> <!--Standatum und User:--> <field name="standdatum" class="java.lang.String"> <fieldDescription><xsl:text><![CDATA[/ergebnisse/ergebnis[ @ordnr='0']/stand]]></xsl:text></fieldDescription> </field> <field name="user" class="java.lang.String"> <fieldDescription><xsl:text><![CDATA[/ergebnisse/user]]></xsl:text></fieldDescription> </field> </xsl:template> <xsl:template name="getJavaType"> <xsl:param name="ordnr" /> <xsl:param name="col_id" /> <xsl:choose> <xsl:when test="count(/ergebnisse/ergebnis/ergebniselement[ @ordnr=$ordnr]/sqlerg/row)=0"> <xsl:text>java.lang.String</xsl:text> </xsl:when> <xsl:otherwise> <xsl:for-each select="/ergebnisse/ergebnis/ergebniselement[ @ordnr=$ordnr]/sqlerg/row [@no='0']/col [@id=$col_id]"> <!--Transformation: 3=DecimalFormat 4=integer -7=Boolean 6=date 8=timestamp 9=time Default ist 1=string--> <xsl:choose> <xsl:when test="@typ='3'"> <!-- DecimalFormat --> <xsl:text>java.lang.Double</xsl:text> </xsl:when> <xsl:when test="@typ='4'"> <!-- Integer --> <xsl:text>java.lang.Integer</xsl:text> </xsl:when> <xsl:when test="@typ='-7'"> <xsl:text>java.lang.Boolean</xsl:text> </xsl:when> <xsl:when test="@typ='6'"> <xsl:text>java.util.Date</xsl:text> </xsl:when> <xsl:when test="@typ='8'"> <xsl:text>java.sql.Timestamp</xsl:text> </xsl:when> <xsl:when test="@typ='9'"> <xsl:text>java.lang.Time</xsl:text> </xsl:when> <xsl:otherwise> <!--Typ=1 ist string und wird defaultmäßig behandelt --> <xsl:text>java.lang.String</xsl:text> </xsl:otherwise> </xsl:choose> </xsl:for-each> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="createJasperFieldname"> <xsl:param name="fieldName_orig" /> <xsl:variable name="feldname_ohne_umbruch"> <xsl:call-template name="remove_linebreaksAndQuot"><xsl:with-param name="volltext"><xsl:value-of select="$fieldName_orig" /></xsl:with-param></xsl:call-template> </xsl:variable> <xsl:variable name="feldnameOhneBackslashN"> <xsl:call-template name="search_replace"> <xsl:with-param name="string"><xsl:value-of select="$feldname_ohne_umbruch" /></xsl:with-param> <xsl:with-param name="search"><xsl:text>\n</xsl:text></xsl:with-param> <xsl:with-param name="replace"><xsl:text> </xsl:text></xsl:with-param> </xsl:call-template> </xsl:variable> <xsl:call-template name="search_replace"> <xsl:with-param name="string"><xsl:value-of select="$feldnameOhneBackslashN" /></xsl:with-param> <xsl:with-param name="search"><xsl:text>\000</xsl:text></xsl:with-param> <xsl:with-param name="replace"><xsl:text> </xsl:text></xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template name="getColumnX"> <xsl:param name="druckbreite"/> <xsl:param name="std_spaltenbreite"/> <xsl:param name="ergebniselementOrdnr" /> <xsl:param name="colId" /> <xsl:param name="colCount" /> <xsl:param name="isLastVisibleColumInRow" /> <xsl:variable name="x"><xsl:text>0</xsl:text> <xsl:for-each select="/ergebnisse/ergebnis/ergebniselement[@ordnr=$ergebniselementOrdnr]/sqlerg/headers/header[ @width > 0 and not(starts-with(f_name,'hidden')) and not(starts-with(f_name,'next')) and @id < $colId ]"> <xsl:variable name="previousColumnWidth"> <xsl:call-template name="getColumnwidth"> <xsl:with-param name="druckbreite" select="$druckbreite"/> <xsl:with-param name="std_spaltenbreite" select="$std_spaltenbreite"/> <xsl:with-param name="ergebniselementOrdnr" select="$ergebniselementOrdnr"/> <xsl:with-param name="colId" select="@id" /> <xsl:with-param name="colCount" select="$colCount"/> <xsl:with-param name="previousX" select="0"/> <xsl:with-param name="isLastVisibleColumInRow" select="''"/> </xsl:call-template> </xsl:variable> <xsl:text>+</xsl:text><xsl:value-of select ="$previousColumnWidth" /> </xsl:for-each></xsl:variable> <!--<xsl:value-of select="sum(for $s in tokenize('1+2+3','+') return number($s))" />--> <xsl:call-template name="sumStringList"> <xsl:with-param name="pText" select="$x"/> <xsl:with-param name="pSum" select="0"/> <xsl:with-param name="pDelim" select="'+'"/> </xsl:call-template> </xsl:template> <xsl:template name="getColumnwidth"> <xsl:param name="druckbreite" /> <xsl:param name="std_spaltenbreite" /> <xsl:param name="ergebniselementOrdnr" /> <xsl:param name="colId" /> <xsl:param name="colCount" /> <xsl:param name="previousX" /> <xsl:param name="isLastVisibleColumInRow" /> <xsl:variable name="defbreite"><xsl:value-of select="sum(/ergebnisse/ergebnis/ergebniselement[@ordnr=$ergebniselementOrdnr]/sqlerg/headers/header[ @width > 0 and not(starts-with(f_name,'hidden')) and not(starts-with(f_name,'next')) ]/@width )" /></xsl:variable> <xsl:variable name="ndefbreite"><xsl:value-of select="count(/ergebnisse/ergebnis/ergebniselement[@ordnr=$ergebniselementOrdnr]/sqlerg/headers/header[ @width = '' and not(starts-with(f_name,'hidden')) and not(starts-with(f_name,'next'))])" /></xsl:variable> <xsl:variable name="gesamtbreite"><xsl:value-of select="$defbreite+($ndefbreite* $std_spaltenbreite)" /></xsl:variable> <xsl:variable name="width"><xsl:value-of select="/ergebnisse/ergebnis/ergebniselement[@ordnr=$ergebniselementOrdnr]/sqlerg/headers/header[@id=$colId]/@width"/></xsl:variable> <xsl:comment><xsl:value-of select="concat('defbreite=',$defbreite)" /></xsl:comment> <xsl:choose> <xsl:when test="$isLastVisibleColumInRow='+' or ($colCount - 1) =$colId"> <!-- letzte Spalte wird immer vom rechten Seitenrand minus vorherige Spalten gerechnet, weil es Rundungsfehler bei der Spaltenbreite geben kann.--> <xsl:value-of select="$druckbreite - $previousX"/> </xsl:when> <xsl:when test="$width != ''"> <xsl:variable name="spbreite"><xsl:value-of select="$druckbreite*($width div $gesamtbreite)" /> </xsl:variable> <xsl:choose> <xsl:when test="$spbreite > 2"> <xsl:value-of select="round($spbreite)" /> </xsl:when> <xsl:otherwise> <xsl:text>12</xsl:text> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise> <xsl:value-of select="round($druckbreite*($std_spaltenbreite div $gesamtbreite))" /> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="sumStringList"> <xsl:param name="pText" select="."/> <xsl:param name="pSum" select="0"/> <xsl:param name="pDelim" select="'+'"/> <xsl:choose> <xsl:when test="not(string-length($pText) >0)"> <xsl:value-of select="$pSum"/> </xsl:when> <xsl:otherwise> <xsl:variable name="vnewList" select="concat($pText,$pDelim)"/> <xsl:variable name="vHead" select= "substring-before($vnewList, $pDelim)"/> <xsl:call-template name="sumStringList"> <xsl:with-param name="pText" select= "substring-after($pText, $pDelim)"/> <xsl:with-param name="pSum" select="$pSum+$vHead"/> <xsl:with-param name="pDelim" select="$pDelim"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="jr_textField"> <xsl:param name="ergebnisElementOrdnr" /> <xsl:param name="fieldName" /> <xsl:param name="colName" /> <xsl:param name="colId" /> <xsl:param name="x" select="'0'" /> <xsl:param name="width" select="'0'" /> <xsl:param name="height" select="'30'" /> <xsl:param name="flavorTableRowStyle" select="'listAlternatingBg'" /> <xsl:param name="tableRowLevel" select="10" /> <xsl:variable name="jasperFieldname"> <xsl:call-template name="createJasperFieldname"> <xsl:with-param name="fieldName_orig" select="$fieldName"/> </xsl:call-template> </xsl:variable> <xsl:variable name="fldPrefix"> <xsl:choose> <xsl:when test="/ergebnisse/@isMakro='true'"> <xsl:text>tab_</xsl:text><xsl:value-of select="$ergebnisElementOrdnr" /></xsl:when> <xsl:otherwise></xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="fieldType"> <xsl:call-template name="getFieldType"> <xsl:with-param name="ergebnisElementOrdnr" select="$ergebnisElementOrdnr" /> <xsl:with-param name="colId" select="$colId" /> </xsl:call-template> </xsl:variable> <!--start Feldausgabe, zuerst prüfen ob besonderer Feldname--> <xsl:choose> <xsl:when test="normalize-space($jasperFieldname)=''"> <!-- keine leeren Feldnamen--> </xsl:when> <xsl:when test="starts-with($colName,'_graph')"> <xsl:variable name="alignLeft"> <xsl:choose> <xsl:when test="starts-with($colName,'_graphbarright')"> <xsl:text>false</xsl:text> </xsl:when> <xsl:otherwise> <xsl:text>true</xsl:text> </xsl:otherwise> </xsl:choose> </xsl:variable> <image scaleImage="RealSize" evaluationTime="Band"> <reportElement x="{$x}" y="0" width="{$width}" height="{$height}" /> <imageExpression><xsl:text><![CDATA[net.sf.jasperreports.renderers.SimpleDataRenderer.getInstance(de.superx.rpta.SvgProducer.SimpleBarChart($F{]]></xsl:text><xsl:value-of select="$jasperFieldname" /> <xsl:text>},100,</xsl:text> <xsl:value-of select="$width"/><xsl:text>,</xsl:text> <xsl:value-of select="$height"/><xsl:text>,"#cccccc","steelblue",</xsl:text> <xsl:value-of select="$alignLeft"/><xsl:text>).getBytes("UTF-8"))</xsl:text></imageExpression> </image> </xsl:when> <xsl:otherwise> <!-- normales Textfeld: --> <textField isStretchWithOverflow="true" isBlankWhenNull="true"> <reportElement stretchType="ContainerHeight" x="{$x}" y="0" width="{$width}" height="{$height}" > <xsl:attribute name="style"> <xsl:call-template name="getTableRowStyle" > <xsl:with-param name="flavorTableRowStyle" select="$flavorTableRowStyle"/> <xsl:with-param name="tableRowLevel" select="$tableRowLevel"/> <xsl:with-param name="ergebnisElementOrdnr" select="$ergebnisElementOrdnr" /> <xsl:with-param name="fieldType" select="$fieldType" /> </xsl:call-template> </xsl:attribute> <xsl:if test="$flavorTableRowStyle='treeTable'"> <xsl:variable name="ColNameEbene"> <xsl:call-template name="getColNameEbene"> <xsl:with-param name="ergebnisElementOrdnr" select="$ergebnisElementOrdnr" /> </xsl:call-template> </xsl:variable> <printWhenExpression><xsl:value-of select="concat('$F{',$ColNameEbene,'}==',$tableRowLevel)" /></printWhenExpression> </xsl:if> </reportElement> <xsl:if test="$fieldType!='3' and $fieldType!='4' "><!--Zahlen immer rechtsbündig, alles andere links--> <textElement textAlignment="Left"/> </xsl:if> <textFieldExpression><xsl:value-of select="concat('$F{',$fldPrefix,$jasperFieldname,'}')" /></textFieldExpression> <xsl:call-template name="tableCellPatternExpression"> <xsl:with-param name="fieldType" select="$fieldType" /> <xsl:with-param name="ergebnisElementOrdnr" select="$ergebnisElementOrdnr"/> <xsl:with-param name="fieldName" select="$fieldName" /> </xsl:call-template> </textField> </xsl:otherwise><!-- ende normales Textfeld--> </xsl:choose> </xsl:template> <xsl:template name="getFieldType"> <xsl:param name="ergebnisElementOrdnr" /> <xsl:param name="colId" /> <xsl:value-of select="/ergebnisse/ergebnis/ergebniselement[@ordnr=$ergebnisElementOrdnr]/sqlerg/row[@no='0']/col[@id=$colId]/@typ" /> </xsl:template> <xsl:template name="getLegendExpression"> <xsl:param name="ergebniselementOrdnr" select="0"/> <xsl:text>""</xsl:text> <!-- <xsl:for-each select="distinct-values(//ergebnisse/ergebnis[@ordnr = 1 ]/completefields/feld/@varname)">--> <xsl:for-each select="/ergebnisse/ergebnis[@ordnr = $ergebniselementOrdnr ]/felder/feld/@varname"> <xsl:variable name="jasperFieldname"> <xsl:call-template name="createJasperFieldname"> <xsl:with-param name="fieldName_orig" select="."/> </xsl:call-template> </xsl:variable> <xsl:variable name="varname"> <xsl:value-of select="." /> </xsl:variable> <xsl:value-of select="concat('+(($F{','legende_',$jasperFieldname,'_value','}==null || $F{','legende_',$jasperFieldname,'_value','}=="")?','"":(')" /> <xsl:value-of select="concat('$F{','legende_',$jasperFieldname,'_label','}')" /><xsl:text>+": "+</xsl:text> <xsl:value-of select="concat('$F{','legende_',$jasperFieldname,'_value','}')" /><xsl:text>+"; ")) </xsl:text> </xsl:for-each> </xsl:template> <xsl:template name="generateTableHeader"> <xsl:param name="druckbreite" /> <xsl:param name="std_spaltenbreite" /> <xsl:param name="zeilenhoehe" select="30" /> <xsl:param name="ordnr" select="0"/> <xsl:param name="y_offset" select="0"/> <xsl:for-each select="/ergebnisse/ergebnis/ergebniselement[@ordnr=$ordnr]"> <xsl:choose> <xsl:when test="sqlerg/headers/@hasAggregationHeaders='true'" > <!-- verschachtelter Header --> <xsl:variable name="totalColCount"><xsl:value-of select="sqlerg/headers/@count"/></xsl:variable> <xsl:variable name="rowCount"><xsl:value-of select="count(sqlerg/aggregationHeaders/tr)"/></xsl:variable> <xsl:for-each select="sqlerg/aggregationHeaders/tr"> <xsl:variable name="rowCounter" select="position()-1" /> <xsl:variable name="currentRowColCount"><xsl:value-of select="count(th[ @isHidden='false'])"/></xsl:variable> <xsl:variable name="colCount"> <xsl:choose> <xsl:when test="($rowCounter - 1)=$rowCount"> <xsl:value-of select="$currentRowColCount"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$totalColCount"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:for-each select="th" > <xsl:variable name="colId"><xsl:value-of select="position()-1" /></xsl:variable> <xsl:if test="@isHidden='false'"> <xsl:variable name="isLastVisibleColumInRow"> <xsl:call-template name="getLastVisibleColumInRow"> <xsl:with-param name="currentColId" select="$colId" /> <xsl:with-param name="remainingRows" select="$rowCount - ($rowCounter + 1)" /> </xsl:call-template> </xsl:variable> <xsl:comment><xsl:text>colId=</xsl:text><xsl:value-of select="$colId"/> <xsl:text> isLastVisibleColumInRow=</xsl:text><xsl:value-of select="$isLastVisibleColumInRow"/> </xsl:comment> <xsl:variable name="columnX"> <xsl:call-template name="getColumnX"> <xsl:with-param name="druckbreite" select="$druckbreite"/> <xsl:with-param name="std_spaltenbreite" select="$std_spaltenbreite"/> <xsl:with-param name="ergebniselementOrdnr" select="$ordnr"/> <xsl:with-param name="colId" select="$colId" /> <xsl:with-param name="colCount" select="$colCount"/> <xsl:with-param name="isLastVisibleColumInRow" select="$isLastVisibleColumInRow"/> </xsl:call-template> </xsl:variable> <xsl:comment><xsl:text>columnX=</xsl:text><xsl:value-of select="$columnX"/></xsl:comment> <xsl:comment><xsl:text>colCount=</xsl:text><xsl:value-of select="$colCount"/></xsl:comment> <xsl:comment><xsl:text>druckbreite=</xsl:text><xsl:value-of select="$druckbreite"/></xsl:comment> <xsl:variable name="columnWidth"> <xsl:call-template name="getColumnwidth"> <xsl:with-param name="druckbreite" select="$druckbreite"/> <xsl:with-param name="std_spaltenbreite" select="$std_spaltenbreite"/> <xsl:with-param name="ergebniselementOrdnr" select="$ordnr"/> <xsl:with-param name="colId" select="$colId" /> <xsl:with-param name="colCount" select="$colCount"/> <xsl:with-param name="previousX" select="$columnX"/> <xsl:with-param name="isLastVisibleColumInRow" select="$isLastVisibleColumInRow"/> </xsl:call-template> </xsl:variable> <xsl:comment><xsl:text>columnWidth=</xsl:text><xsl:value-of select="$columnWidth"/></xsl:comment> <xsl:variable name="rowspan"> <xsl:choose> <xsl:when test="@rowspan >1"> <xsl:value-of select="@rowspan"/> </xsl:when> <xsl:otherwise> <xsl:text>1</xsl:text> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="colspan"> <xsl:choose> <xsl:when test="@colspan >1"> <xsl:value-of select="@colspan"/> </xsl:when> <xsl:otherwise> <xsl:text>1</xsl:text> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="computedWidth"> <!--wenn eine Spalte die letzte sichtbare ist, wird der berechnete Wert genommen. Wenn nicht, wird mit colspan multipliziert.--> <xsl:choose> <xsl:when test="$isLastVisibleColumInRow='+'"> <xsl:value-of select="$columnWidth"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$columnWidth * $colspan"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <textField isStretchWithOverflow="true"> <!--<xsl:comment><xsl:value-of select="concat('ROW ' ,$rowCounter ,'-', $rowspan)"/> </xsl:comment>--> <reportElement style="TableColumnHeader" mode="Opaque" x="{$columnX}" y="{$y_offset+( $rowCounter * $zeilenhoehe )}" width="{$computedWidth}" height="{$zeilenhoehe*$rowspan}"> <xsl:if test="$rowCounter >0 or $rowspan >1"> <!-- verschachtelte Überschriften: oberste Zeile darf keinen stretchType haben, wenn darunter Zellen sind. Sonst zeigt Excel das nicht an.--> <xsl:attribute name="stretchType"><xsl:text>ContainerHeight</xsl:text></xsl:attribute> </xsl:if> </reportElement> <textFieldExpression><xsl:text>"</xsl:text> <xsl:call-template name="newline_to_backslash_n"> <xsl:with-param name="string" select="."/> </xsl:call-template> <xsl:text>"</xsl:text> </textFieldExpression> </textField> </xsl:if> </xsl:for-each> </xsl:for-each> </xsl:when> <xsl:otherwise> <xsl:variable name="colCount"><xsl:value-of select="count(sqlerg/headers/header[not(starts-with(f_name,'hidden')) and not(starts-with(f_name,'next')) ])"/></xsl:variable> <xsl:for-each select="sqlerg/headers/header[not(starts-with(f_name,'hidden')) and not(starts-with(f_name,'next')) ]"> <xsl:variable name="columnX"> <xsl:call-template name="getColumnX"> <xsl:with-param name="druckbreite" select="$druckbreite"/> <xsl:with-param name="std_spaltenbreite" select="$std_spaltenbreite"/> <xsl:with-param name="ergebniselementOrdnr" select="$ordnr"/> <xsl:with-param name="colId" select="@id" /> <xsl:with-param name="colCount" select="$colCount"/> </xsl:call-template> </xsl:variable> <xsl:variable name="columnWidth"> <xsl:call-template name="getColumnwidth"> <xsl:with-param name="druckbreite" select="$druckbreite"/> <xsl:with-param name="std_spaltenbreite" select="$std_spaltenbreite"/> <xsl:with-param name="ergebniselementOrdnr" select="$ordnr"/> <xsl:with-param name="colId" select="@id" /> <xsl:with-param name="colCount" select="$colCount"/> <xsl:with-param name="previousX" select="$columnX"/> </xsl:call-template> </xsl:variable> <textField isStretchWithOverflow="true"> <reportElement positionType="Float" style="TableColumnHeader" mode="Opaque" stretchType="ContainerHeight" x="{$columnX}" y="{$y_offset}" width="{$columnWidth}" height="{$zeilenhoehe}" /> <textFieldExpression><xsl:text>"</xsl:text><!--<xsl:call-template name="getColHeaderText"> <xsl:with-param name="header_wert" select="." /></xsl:call-template>--> <xsl:call-template name="newline_to_backslash_n"> <xsl:with-param name="string" select="wert"/> </xsl:call-template> <xsl:text>"</xsl:text> </textFieldExpression> </textField> </xsl:for-each> </xsl:otherwise> </xsl:choose> </xsl:for-each> </xsl:template> <xsl:template name="getZeilenhoeheTableHeader"> <xsl:param name="ordnr" select="0" /> <xsl:param name="std_zeilenhoehe_header" select="30" /> <xsl:param name="y_offset" select="0" /> <xsl:choose> <xsl:when test="/ergebnisse/ergebnis/ergebniselement[@ordnr=$ordnr]/sqlerg/headers/@hasAggregationHeaders='true'"> <xsl:variable name="maxRownumberTableHeader"> <xsl:value-of select="count(/ergebnisse/ergebnis/ergebniselement[@ordnr=$ordnr]/sqlerg/aggregationHeaders/tr)"/> </xsl:variable> <xsl:value-of select="$y_offset + ( $std_zeilenhoehe_header * $maxRownumberTableHeader )"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$y_offset + $std_zeilenhoehe_header "/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="generateGroupHeaderBandSimple"> <xsl:param name="ergebniselementOrdnr" select="0" /> <xsl:param name="std_zeilenhoehe_header" /> <xsl:param name="druckbreite" /> <xsl:param name="std_spaltenbreite" /> <xsl:variable name="isMacroReport" select="/ergebnisse/@isMakro" /> <xsl:variable name="legendLabelHeight" select="20" /> <xsl:variable name="legendContentHeight" select="10" /> <xsl:variable name="hinweisContentHeight" select="10" /> <xsl:variable name="subReportTitleHeight"> <xsl:choose> <xsl:when test="$isMacroReport='false'"> <xsl:text>0</xsl:text> </xsl:when> <xsl:otherwise> <xsl:text>20</xsl:text> </xsl:otherwise> </xsl:choose> </xsl:variable> <group name="tabellennr"> <groupExpression><![CDATA[$V{tabellennr}]]></groupExpression> <groupHeader> <band height="{$legendLabelHeight+$legendContentHeight + $subReportTitleHeight}"> <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.spreadsheet.SpreadsheetLayout"/> <!--subReportTitle--> <xsl:if test="$isMacroReport = 'true'"> <textField> <reportElement style="subReportTitle" x="0" y="0" width="{$druckbreite}" height="{$subReportTitleHeight}" /> <textFieldExpression><xsl:text>"</xsl:text><xsl:value-of select="/ergebnisse/ergebnis[@ordnr=$ergebniselementOrdnr]/maskenname"/><xsl:text>"</xsl:text></textFieldExpression> </textField> </xsl:if> <!--Legende --> <xsl:call-template name="legendLabelAndContent"> <xsl:with-param name="ergebniselementOrdnr" select="$ergebniselementOrdnr" /> <xsl:with-param name="subReportTitleHeight" select="$subReportTitleHeight" /> <xsl:with-param name="druckbreite" select="$druckbreite" /> <xsl:with-param name="legendLabelHeight" select="$legendLabelHeight" /> <xsl:with-param name="legendContentHeight" select="$legendContentHeight" /> </xsl:call-template> </band> <band height="{$hinweisContentHeight}"> <printWhenExpression><![CDATA[$F{Hinweis}.length() >0]]></printWhenExpression> <!-- hinweis--> <textField isStretchWithOverflow="true"> <reportElement style="HinweisContent" positionType="Float" isPrintWhenDetailOverflows="true" x="0" y="0" width="{$druckbreite}" height="{$hinweisContentHeight}" /> <box topPadding="10" leftPadding="2" bottomPadding="10" rightPadding="2"/> <textElement verticalAlignment="Middle"/> <textFieldExpression> <xsl:text disable-output-escaping="yes"><![CDATA[$F{Hinweis}]]></xsl:text></textFieldExpression> </textField> </band> <!--nun Spaltenüberschriften--> <band splitType="Stretch"> <xsl:attribute name="height"> <xsl:call-template name="getZeilenhoeheTableHeader"> <xsl:with-param name="ordnr" select="$ergebniselementOrdnr" /> <xsl:with-param name="std_zeilenhoehe_header" select="$std_zeilenhoehe_header" /> <xsl:with-param name="y_offset" select="0"/> </xsl:call-template> </xsl:attribute> <xsl:call-template name="generateTableHeader"> <xsl:with-param name="druckbreite" select="$druckbreite" /> <xsl:with-param name="std_spaltenbreite" select="$std_spaltenbreite"/> <xsl:with-param name="zeilenhoehe" select="$std_zeilenhoehe_header" /> <xsl:with-param name="ordnr" select="$ergebniselementOrdnr"/> <xsl:with-param name="y_offset" select="0"/> </xsl:call-template> </band> </groupHeader> </group> </xsl:template> <xsl:template name="generateTitleBand"> <xsl:param name="druckbreite" select="812" /> <title> <band height="75"> <textField> <reportElement x="0" y="0" width="{$druckbreite}" height="30" style="ReportHeadingInstitution"/> <textFieldExpression><![CDATA[$F{REPORT_HEADING_INSTITUTION} + " | "+ $F{user}]]></textFieldExpression> </textField> <textField> <reportElement style="ReportTitle" x="0" y="30" width="{$druckbreite}" height="45" /> <textFieldExpression><![CDATA[$F{Berichtsname}]]></textFieldExpression> </textField> </band> </title> </xsl:template> <!-- start value--> <xsl:template name="jr_textfield_levelx"> <xsl:param name="ergebnisElementOrdnr" /> <xsl:param name="fieldName" /> <xsl:param name="colName" /> <xsl:param name="colId" /> <xsl:param name="x" /> <xsl:param name="width" /> <xsl:param name="flavorTableRowStyle" /> <xsl:param name="tableRowLevel" /> <xsl:param name="std_zeilenhoehe_tablerow" select="25" /> <xsl:param name="maxLevel" select="10"/> <xsl:if test="$tableRowLevel <= $maxLevel"> <xsl:call-template name="jr_textField"> <xsl:with-param name="tableRowLevel" select="$tableRowLevel" /> <xsl:with-param name="ergebnisElementOrdnr" select="$ergebnisElementOrdnr" /> <xsl:with-param name="fieldName" select="$fieldName" /> <xsl:with-param name="colName" select="$colName" /> <xsl:with-param name="colId" select="$colId" /> <xsl:with-param name="x" select="$x" /> <xsl:with-param name="width" select="$width" /> <xsl:with-param name="height" select="$std_zeilenhoehe_tablerow" /> <xsl:with-param name="flavorTableRowStyle" select="$flavorTableRowStyle" /> </xsl:call-template> <xsl:call-template name="jr_textfield_levelx"> <xsl:with-param name="maxLevel" select="$maxLevel"/> <xsl:with-param name="ergebnisElementOrdnr" select="$ergebnisElementOrdnr" /> <xsl:with-param name="fieldName" select="$fieldName" /> <xsl:with-param name="colName" select="$colName" /> <xsl:with-param name="colId" select="$colId" /> <xsl:with-param name="x" select="$x" /> <xsl:with-param name="width" select="$width" /> <xsl:with-param name="std_zeilenhoehe_tablerow" select="$std_zeilenhoehe_tablerow" /> <xsl:with-param name="flavorTableRowStyle" select="$flavorTableRowStyle" /> <xsl:with-param name="tableRowLevel" select="$tableRowLevel + 1" /> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="getTableRowStyle"> <xsl:param name="flavorTableRowStyle"/> <xsl:param name="tableRowLevel"/> <xsl:param name="ergebnisElementOrdnr" select="0" /> <xsl:param name="fieldType" /> <xsl:choose> <xsl:when test="$flavorTableRowStyle='listAlternatingBg'"> <xsl:text>TableRowDetail</xsl:text> </xsl:when> <xsl:when test="$flavorTableRowStyle='treeTable'"> <xsl:value-of select="concat('TableRowLevel',$tableRowLevel)" /> </xsl:when> <xsl:otherwise></xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="querystring"> <xsl:param name="ordnr" select="'0'" /> <xsl:param name="rownr" /> <xsl:variable name="quote"><xsl:text>'</xsl:text></xsl:variable> <xsl:variable name="rowfilter"> <xsl:choose> <xsl:when test="$rownr > 0"> <xsl:text>[position() = </xsl:text><xsl:value-of select="$rownr"/><xsl:text> ]</xsl:text> </xsl:when> <xsl:otherwise> </xsl:otherwise> </xsl:choose> </xsl:variable> <queryString language="xPath"><xsl:value-of select="concat('/ergebnisse/ergebnis/ergebniselement[@ordnr=',$quote,$ordnr,$quote,']/sqlerg/row',$rowfilter)" /> </queryString> </xsl:template> <xsl:template name="createExcelSheetname"> <!-- kopiert von de.superx.servlet.XmlTransformer.createExcelSheetname(String)--> <xsl:param name="mystring" /> <xsl:variable name="s1"> <xsl:call-template name="search_replace"> <xsl:with-param name="string" select="$mystring" /> <xsl:with-param name="search" select="'/'" /> <xsl:with-param name="replace" select="'_'" /> </xsl:call-template> </xsl:variable> <xsl:variable name="s2"> <xsl:call-template name="search_replace"> <xsl:with-param name="string" select="$s1" /> <xsl:with-param name="search" select="'\'" /> <xsl:with-param name="replace" select="'_'" /> </xsl:call-template> </xsl:variable> <xsl:variable name="s3"> <xsl:call-template name="search_replace"> <xsl:with-param name="string" select="$s2" /> <xsl:with-param name="search" select="'?'" /> <xsl:with-param name="replace" select="'_'" /> </xsl:call-template> </xsl:variable> <xsl:variable name="s4"> <xsl:call-template name="search_replace"> <xsl:with-param name="string" select="$s3" /> <xsl:with-param name="search" select="'*'" /> <xsl:with-param name="replace" select="'_'" /> </xsl:call-template> </xsl:variable> <xsl:variable name="s5"> <xsl:call-template name="search_replace"> <xsl:with-param name="string" select="$s4" /> <xsl:with-param name="search" select="'['" /> <xsl:with-param name="replace" select="'('" /> </xsl:call-template> </xsl:variable> <xsl:variable name="s6"> <xsl:call-template name="search_replace"> <xsl:with-param name="string" select="$s5" /> <xsl:with-param name="search" select="']'" /> <xsl:with-param name="replace" select="')'" /> </xsl:call-template> </xsl:variable> <xsl:call-template name="trunc_string"> <xsl:with-param name="maxlength" select="27" /> <xsl:with-param name="mystring" select="$s6"/> </xsl:call-template> </xsl:template> <xsl:template name="trunc_string"> <xsl:param name="maxlength" select="28" /> <xsl:param name="mystring" /> <xsl:choose><xsl:when test="string-length($mystring) > $maxlength"> <xsl:variable name="ceiling_length"><xsl:value-of select="$maxlength - 3"/></xsl:variable> <xsl:value-of select="concat(substring($mystring,0,$ceiling_length ),'...')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$mystring"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="getColNameEbene"> <xsl:param name="ergebnisElementOrdnr" select="0" /> <xsl:choose> <xsl:when test="/ergebnisse/@isMakro='true'"> <xsl:value-of select="concat('tab_',$ergebnisElementOrdnr,/ergebnisse/ergebnis/ergebniselement[@ordnr=$ergebnisElementOrdnr]/sqlerg/headers/header[f_name='ebene']/wert)" /> </xsl:when> <xsl:otherwise> <xsl:value-of select="/ergebnisse/ergebnis/ergebniselement[@ordnr=$ergebnisElementOrdnr]/sqlerg/headers/header[f_name='ebene']/wert" /> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="getColHeaderText"> <xsl:param name="header_wert" /> <xsl:choose> <xsl:when test="contains($header_wert,'\n')"> <xsl:call-template name="search_replace"> <xsl:with-param name="string" select="$header_wert" /> <xsl:with-param name="search" select="'\n'"/> <xsl:with-param name="replace" select="' '"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$header_wert" /> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="tableCellPatternExpression"> <xsl:param name="fieldType" /> <xsl:param name="ergebnisElementOrdnr"/> <xsl:param name="fieldName" /> <patternExpression> <xsl:choose> <xsl:when test="$fieldType='4'"> <!--integer--> <xsl:text>"#,##0"</xsl:text> </xsl:when> <xsl:when test="$fieldType='3'"> <!--decimal--> <xsl:text>"#,##0.00;-#,##0.00"</xsl:text> </xsl:when> <xsl:when test="$fieldType='6'"> <!--date--> <xsl:text>"dd.MM.yyyy"</xsl:text> </xsl:when> <xsl:when test="$fieldType='8'"> <!--timestamp--> <xsl:text>"dd.MM.yyyy hh:mm:ss"</xsl:text> </xsl:when> <xsl:when test="$fieldType='9'"> <!--time--> <xsl:text>"hh:mm:ss"</xsl:text> </xsl:when> <xsl:otherwise> </xsl:otherwise> </xsl:choose> </patternExpression> </xsl:template> <xsl:template name="newline_to_backslash_n"> <xsl:param name="string"/> <xsl:choose> <xsl:when test="contains($string,' ')"> <xsl:value-of select="substring-before($string,' ')"/> <xsl:text>\n</xsl:text> <xsl:call-template name="newline_to_backslash_n"> <xsl:with-param name="string" select="substring-after($string,' ')"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$string"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="legendLabelAndContent"> <xsl:param name="ergebniselementOrdnr" select="0" /> <xsl:param name="subReportTitleHeight" select="10" /> <xsl:param name="druckbreite" select="842" /> <xsl:param name="legendLabelHeight" select="10" /> <xsl:param name="legendContentHeight" select="50" /> <textField> <reportElement style="LegendLabel" x="0" y="{$subReportTitleHeight}" width="{$druckbreite}" height="{$legendLabelHeight}" /> <textElement verticalAlignment="Bottom"> <font isBold="true"/> </textElement> <textFieldExpression><![CDATA["Filterkriterien: "]]></textFieldExpression> </textField> <textField isStretchWithOverflow="true"> <reportElement style="LegendContent" isPrintWhenDetailOverflows="true" x="0" y="{$subReportTitleHeight + $legendLabelHeight}" width="{$druckbreite}" height="{$legendContentHeight}" /> <box topPadding="10" leftPadding="2" bottomPadding="10" rightPadding="2"/> <textFieldExpression> <xsl:call-template name="getLegendExpression"> <xsl:with-param name="ergebniselementOrdnr" select="$ergebniselementOrdnr"/> </xsl:call-template> <xsl:text disable-output-escaping="yes"><![CDATA[ +"Datenstand: "+ $F{standdatum} + "; " + "Erstellt: "+ DATEFORMAT( TODAY(), "dd.MM.YYYY")]]></xsl:text></textFieldExpression> </textField> </xsl:template> <xsl:template name="getLastVisibleColumInRow"> <xsl:param name="currentColId" /> <xsl:param name="remainingRows" /> <!--ermittelt ob eine Spalte die letzte sichtbare ist bei verknüpften Spalten ist die letzte Header-Zeile immer relevant, egal ob sichtbar oder nicht. Zurückgegeben werden die Anzahl der sichtbaren Zellen als "+", d.h. genau ein "+" bedeutet, dass es die letzte Spalte ist. --> <xsl:for-each select="../th"> <xsl:variable name="nr" select="position()" /> <xsl:if test="$nr > $currentColId and (@isHidden='false' or $remainingRows=0)"> <xsl:text>+</xsl:text> </xsl:if> </xsl:for-each> </xsl:template> </xsl:stylesheet>