SuperX-Kernmodul
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

358 lines
14 KiB

<?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>
<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="285" height="12"/>
<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="285" 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="303" 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="100" 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.yyy">
<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.lang.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>