<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:import href="xsl_functions.xsl" /> <xml:output method="xml" /> <xsl:template match="/"> <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" language="groovy" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="782" leftMargin="16" rightMargin="16" topMargin="14" bottomMargin="16"> <xsl:attribute name="name"><xsl:value-of select="/ergebnisse/ergebnis/maskenname"/></xsl:attribute> <xsl:text> </xsl:text> <property name="ireport.zoom" value="1.0"/><xsl:text> </xsl:text> <property name="ireport.x" value="0"/><xsl:text> </xsl:text> <property name="ireport.y" value="0"/><xsl:text> </xsl:text> <property name="net.sf.jasperreports.export.xls.detect.cell.type" value="true"/><xsl:text> </xsl:text> <queryString language="xPath"><xsl:text><![CDATA[/ergebnisse/ergebnis/ergebniselement/sqlerg/row]]></xsl:text> </queryString><xsl:text> </xsl:text> <!-- nun die Felder: zuerst der Berichtsname--> <field name="Berichtsname" class="java.lang.String"> <xsl:text> </xsl:text> <fieldDescription> <xsl:choose> <xsl:when test="/ergebnisse/@isMakro='true'"> <xsl:text><![CDATA[/ergebnisse/makro/name]]></xsl:text></xsl:when> <xsl:otherwise><xsl:text><![CDATA[/ergebnisse/ergebnis[ @ordnr='0']/maskenname]]></xsl:text></xsl:otherwise> </xsl:choose> </fieldDescription><xsl:text> </xsl:text> </field><xsl:text> </xsl:text> <!-- dann der Erläuterungstext--> <field name="Erlaeuterung" class="java.lang.String"> <xsl:text> </xsl:text> <fieldDescription><xsl:text><![CDATA[/ergebnisse/ergebnis[ @ordnr='0']/explanation]]></xsl:text></fieldDescription><xsl:text> </xsl:text> </field><xsl:text> </xsl:text> <field name="REPORT_HEADING_INSTITUTION" class="java.lang.String"> <xsl:text> </xsl:text> <fieldDescription><xsl:text><![CDATA[/ergebnisse/generalinfo/REPORT_HEADING_INSTITUTION]]></xsl:text></fieldDescription><xsl:text> </xsl:text> </field><xsl:text> </xsl:text> <field name="REPORT_HEADING_URL" class="java.lang.String"> <xsl:text> </xsl:text> <fieldDescription><xsl:text><![CDATA[/ergebnisse/generalinfo/REPORT_HEADING_URL]]></xsl:text></fieldDescription><xsl:text> </xsl:text> </field><xsl:text> </xsl:text> <field name="REPORT_LOGO_FILE" class="java.lang.String"> <xsl:text> </xsl:text> <fieldDescription><xsl:text><![CDATA[/ergebnisse/generalinfo/REPORT_LOGO_FILE]]></xsl:text></fieldDescription><xsl:text> </xsl:text> </field><xsl:text> </xsl:text> <field name="REPORT_HEADING_ADRESS" class="java.lang.String"> <xsl:text> </xsl:text> <fieldDescription><xsl:text><![CDATA[/ergebnisse/generalinfo/REPORT_HEADING_ADRESS]]></xsl:text></fieldDescription><xsl:text> </xsl:text> </field><xsl:text> </xsl:text> <field name="REPORT_EMAIL" class="java.lang.String"> <xsl:text> </xsl:text> <fieldDescription><xsl:text><![CDATA[/ergebnisse/generalinfo/REPORT_EMAIL]]></xsl:text></fieldDescription><xsl:text> </xsl:text> </field><xsl:text> </xsl:text> <field name="REPORT_DOCUMENTATION_URL" class="java.lang.String"> <xsl:text> </xsl:text> <fieldDescription><xsl:text><![CDATA[/ergebnisse/generalinfo/REPORT_DOCUMENTATION_URL]]></xsl:text></fieldDescription><xsl:text> </xsl:text> </field><xsl:text> </xsl:text> <!-- dann die Tabellenspalten --> <xsl:for-each select="/ergebnisse/ergebnis/ergebniselement"> <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:choose> <xsl:when test="/ergebnisse/@isMakro='true'"> <xsl:text>tab_</xsl:text><xsl:value-of select="$ordnr" /></xsl:when> <xsl:otherwise><xsl:text></xsl:text></xsl:otherwise> </xsl:choose> </xsl:variable> <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> <xsl:text> </xsl:text> <fieldDescription><xsl:text><![CDATA[col[@id="]]></xsl:text> <xsl:value-of select="@id"/><xsl:text><![CDATA[" and wert!=""]]></xsl:text> <xsl:if test="/ergebnisse/@isMakro='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><xsl:text> </xsl:text> </field><xsl:text> </xsl:text> </xsl:for-each> </xsl:for-each> <!-- dann die Legende--> <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"> <xsl:text> </xsl:text> <fieldDescription><xsl:text><![CDATA[/ergebnisse/ergebnis/completefields/feld [@varname="]]></xsl:text><xsl:value-of select="$varname"/><xsl:text><![CDATA["]/@varname]]></xsl:text></fieldDescription><xsl:text> </xsl:text> </field><xsl:text> </xsl:text> <!--dann Wert--> <field name="{concat('legende_',$jasperFieldname,'_value')}" class="java.lang.String"> <xsl:text> </xsl:text> <fieldDescription><xsl:text><![CDATA[/ergebnisse/ergebnis/felder/feld [@varname="]]></xsl:text><xsl:value-of select="$varname"/><xsl:text><![CDATA["]/value_caption]]></xsl:text></fieldDescription><xsl:text> </xsl:text> </field><xsl:text> </xsl:text> </xsl:for-each> <!--Standatum und User:--> <field name="standdatum" class="java.lang.String"> <xsl:text> </xsl:text> <fieldDescription><xsl:text><![CDATA[/ergebnisse/ergebnis[ @ordnr='0']/stand]]></xsl:text></fieldDescription><xsl:text> </xsl:text> </field><xsl:text> </xsl:text> <field name="user" class="java.lang.String"> <xsl:text> </xsl:text> <fieldDescription><xsl:text><![CDATA[/ergebnisse/user]]></xsl:text></fieldDescription><xsl:text> </xsl:text> </field><xsl:text> </xsl:text> <background><xsl:text> </xsl:text> <band splitType="Stretch"/><xsl:text> </xsl:text> </background><xsl:text> </xsl:text> <!-- <detail><xsl:text> </xsl:text> <band height="290" splitType="Stretch"><xsl:text> </xsl:text> </band><xsl:text> </xsl:text> </detail><xsl:text> </xsl:text> --> <title> <band height="76"> <textField> <reportElement x="0" y="0" width="729" height="20"/> <textElement> <font fontName="Liberation Sans"/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$F{REPORT_HEADING_INSTITUTION}]]></textFieldExpression> </textField> <textField> <reportElement x="0" y="20" width="729" height="12"/> <textElement> <font fontName="Liberation Sans"/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$F{REPORT_HEADING_URL}]]></textFieldExpression> </textField> <textField> <reportElement x="0" y="44" width="809" height="18"/> <textElement> <font fontName="Liberation Sans" size="14" isBold="true"/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$F{Berichtsname}]]></textFieldExpression> </textField> <textField> <reportElement x="24" y="62" width="809" height="10"/> <textElement> <font fontName="Liberation Sans" size="8"/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$F{standdatum}]]></textFieldExpression> </textField> <staticText> <reportElement mode="Transparent" x="0" y="62" width="24" height="10" forecolor="#000000" backcolor="#FFFFFF"/> <textElement textAlignment="Left" verticalAlignment="Top" rotation="None" lineSpacing="Single" markup="none"> <font fontName="Liberation Sans" size="8" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Liberation Sans" pdfEncoding="Cp1252" isPdfEmbedded="false"/> </textElement> <text><![CDATA[Stand:]]></text> </staticText> <image> <reportElement x="730" y="0" width="80" height="32"> <printWhenExpression><![CDATA[$F{REPORT_LOGO_FILE}!=null && !$F{REPORT_LOGO_FILE}.equals("") && !$F{REPORT_LOGO_FILE}.equals("@@REPORT_LOGO_FILE@@")]]></printWhenExpression> </reportElement> <imageExpression class="java.lang.String"><![CDATA["../"+$F{REPORT_LOGO_FILE}]]></imageExpression> </image> </band> </title> <detail> <band height="323" splitType="Stretch"/> </detail> <pageFooter> <band height="15"> <staticText> <reportElement mode="Transparent" x="0" y="3" width="89" height="12" forecolor="#000000" backcolor="#FFFFFF"/> <textElement textAlignment="Left" verticalAlignment="Top" rotation="None" lineSpacing="Single" markup="none"> <font fontName="Liberation Sans" size="10" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Liberation Sans" pdfEncoding="Cp1252" isPdfEmbedded="false"/> </textElement> <text><xsl:text><![CDATA[Erzeugungsdatum:]]></xsl:text></text> </staticText> <textField pattern="dd.MM.yyyy"> <reportElement mode="Transparent" x="89" y="3" width="96" height="12" forecolor="#000000" backcolor="#FFFFFF"/> <textElement textAlignment="Left" verticalAlignment="Top" rotation="None" lineSpacing="Single" markup="none"> <font fontName="Liberation Sans" size="10" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Liberation Sans" pdfEncoding="Cp1252" isPdfEmbedded="false"/> </textElement> <textFieldExpression class="java.util.Date"><xsl:text><![CDATA[new java.util.Date()]]></xsl:text></textFieldExpression> </textField> <textField evaluationTime="Report" isBlankWhenNull="false"> <reportElement key="textField" x="770" y="3" width="39" height="12"/> <box> <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <bottomPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> </box> <textElement> <font fontName="Liberation Sans"/> </textElement> <textFieldExpression class="java.lang.String"><xsl:text><![CDATA["" + $V{PAGE_NUMBER} + ""]]></xsl:text></textFieldExpression> </textField> <textField isBlankWhenNull="false"> <reportElement key="textField" x="676" y="3" width="94" height="12"/> <box> <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <bottomPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> </box> <textElement textAlignment="Right"> <font fontName="Liberation Sans"/> </textElement> <textFieldExpression class="java.lang.String"><xsl:text><![CDATA["Seite " + $V{PAGE_NUMBER} + " von "]]></xsl:text></textFieldExpression> </textField> </band> </pageFooter> </jasperReport><xsl:text> </xsl:text> </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:call-template name="ohne_umlaut"> <xsl:with-param name="s1"><xsl:value-of select="$feldname_ohne_umbruch" /></xsl:with-param> </xsl:call-template>--> </xsl:template> </xsl:stylesheet>