View stylesheet

XML schema http://dd.eionet.europa.eu/schemas/fgases/FGasesReporting.xsd
Output type SQL
Description SQL insert
XSL file fgases-sql.xsl (Last modified: 11 Feb 2014 09:17 )
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns="http://www.w3.org/1999/XSL/Transform">

<xsl:import href="common.xsl"/>

<xsl:output method="text" />

<xsl:param name="envelopeurl" />
<xsl:param name="isreleased" value="1"/>
<xsl:param name="filename" />
<xsl:param name="releasetime" />

<xsl:variable name="reportid" select="concat($envelopeurl, '/', $filename , '#', $releasetime)"/>

<xsl:template match="FGasesReporting">
    <xsl:text></xsl:text>
    <xsl:apply-templates/>
</xsl:template>

<xsl:template match="GeneralReportData">
    <xsl:text>
INSERT INTO data_report VALUES (</xsl:text>
        <xsl:call-template name="string"><xsl:with-param name="value" select="$reportid"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="string"><xsl:with-param name="value" select="$envelopeurl"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="string"><xsl:with-param name="value" select="$isreleased"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="datetime"><xsl:with-param name="value" select="$releasetime"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="string"><xsl:with-param name="value" select="$filename"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="string"><xsl:with-param name="value" select="@status"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="string"><xsl:with-param name="value" select="Company/CompanyId"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="string"><xsl:with-param name="value" select="Company/CompanyName"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="string"><xsl:with-param name="value" select="Company/PostalAddress/StreetAddress"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="string"><xsl:with-param name="value" select="Company/PostalAddress/City"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="string"><xsl:with-param name="value" select="Company/PostalAddress/Region"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="string"><xsl:with-param name="value" select="Company/PostalAddress/PostalCode"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="string"><xsl:with-param name="value" select="Company/Country"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="string"><xsl:with-param name="value" select="Company/EoriCode"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="string"><xsl:with-param name="value" select="Company/VatCode"/></xsl:call-template><xsl:text>,</xsl:text>		
        <xsl:call-template name="string"><xsl:with-param name="value" select="SubmissionDate"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="string"><xsl:with-param name="value" select="TransactionYear"/></xsl:call-template><xsl:text>,</xsl:text>
    <!-- Activities -->
        <xsl:call-template name="boolean"><xsl:with-param name="value" select="Company/Activities/Production[@gasGroup='HFC']"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="boolean"><xsl:with-param name="value" select="Company/Activities/Production[@gasGroup='PFC']"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="boolean"><xsl:with-param name="value" select="Company/Activities/Production[@gasGroup='SF6']"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="boolean"><xsl:with-param name="value" select="Company/Activities/Import[@gasGroup='HFC']"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="boolean"><xsl:with-param name="value" select="Company/Activities/Import[@gasGroup='PFC']"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="boolean"><xsl:with-param name="value" select="Company/Activities/Import[@gasGroup='SF6']"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="boolean"><xsl:with-param name="value" select="Company/Activities/Export"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="boolean"><xsl:with-param name="value" select="Company/Activities/NoReporting"/></xsl:call-template><xsl:text>,</xsl:text>
		<xsl:text>''</xsl:text><!-- comments -->
        <xsl:text>);</xsl:text>
    <xsl:apply-templates/>
</xsl:template>
<xsl:template match="ContactInfo">
    <xsl:text>
INSERT INTO data_company_contacts VALUES (</xsl:text>
        <xsl:call-template name="string"><xsl:with-param name="value" select="$reportid"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="string"><xsl:with-param name="value" select="Telephone"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="string"><xsl:with-param name="value" select="FaxNumber"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="string"><xsl:with-param name="value" select="Email"/></xsl:call-template><xsl:text>,</xsl:text>
        <xsl:call-template name="string"><xsl:with-param name="value" select="ContactPerson"/></xsl:call-template>
        <xsl:text>);</xsl:text>
</xsl:template>


<xsl:template match="Report">

    <xsl:variable name="gasGroup" select="../@gasGroup"/>
    <xsl:variable name="gas" select="Gas"/>

    <xsl:for-each select="Transactions/Transaction">
        <xsl:if test="string-length(ValueInTons) &gt; 0 or string-length(Description) &gt; 0">
            <xsl:text>
INSERT INTO data_report_values VALUES (</xsl:text>
            <xsl:call-template name="string"><xsl:with-param name="value" select="$reportid"/></xsl:call-template><xsl:text>,</xsl:text>
            <xsl:call-template name="string"><xsl:with-param name="value" select="../@type"/></xsl:call-template><xsl:text>,</xsl:text>
            <xsl:call-template name="string"><xsl:with-param name="value" select="$gasGroup"/></xsl:call-template><xsl:text>,</xsl:text>
            <xsl:call-template name="number"><xsl:with-param name="value" select="$gas/GasId"/></xsl:call-template><xsl:text>,</xsl:text>
            <xsl:call-template name="string"><xsl:with-param name="value" select="$gas/Code"/></xsl:call-template><xsl:text>,</xsl:text>
            <xsl:call-template name="boolean"><xsl:with-param name="value" select="$gas/IsBlend"/></xsl:call-template><xsl:text>,</xsl:text>
            <xsl:call-template name="boolean"><xsl:with-param name="value" select="$gas/IsNew"/></xsl:call-template><xsl:text>,</xsl:text>
            <xsl:call-template name="string"><xsl:with-param name="value" select="$gas/PreparationComposition"/></xsl:call-template><xsl:text>,</xsl:text>
            <xsl:call-template name="string"><xsl:with-param name="value" select="Name"/></xsl:call-template><xsl:text>,</xsl:text>
            <xsl:call-template name="number"><xsl:with-param name="value" select="ValueInTons"/></xsl:call-template><xsl:text>,</xsl:text>
            <xsl:text>'',</xsl:text>
            <xsl:call-template name="string"><xsl:with-param name="value" select="Description"/></xsl:call-template>
            <xsl:text>);</xsl:text>
        </xsl:if>
    </xsl:for-each>
    <xsl:apply-templates/>
</xsl:template>

<xsl:template match="CoProducerReport">

    <xsl:variable name="gasGroup" select="../@gasGroup"/>
    <xsl:variable name="coProducer" select="CoProducer"/>
    <xsl:variable name="reportType" select="concat('CoProducer-',@type)"/>
    <xsl:variable name="transactionName">
        <xsl:choose>
            <xsl:when test="@type='sale'">Co-Producer_Sales_to</xsl:when>
            <xsl:otherwise>Co-Producer_Purchases_from</xsl:otherwise>
        </xsl:choose>
    </xsl:variable>

    <xsl:for-each select="Transactions/Transaction">
        <xsl:if test="string-length(ValueInTons) &gt; 0 and string-length(GasCode) &gt; 0 and string-length($coProducer) &gt; 0">
            <xsl:text>
INSERT INTO data_report_values VALUES (</xsl:text>
            <xsl:call-template name="string"><xsl:with-param name="value" select="$reportid"/></xsl:call-template><xsl:text>,</xsl:text>
            <xsl:call-template name="string"><xsl:with-param name="value" select="$reportType"/></xsl:call-template><xsl:text>,</xsl:text>
            <xsl:call-template name="string"><xsl:with-param name="value" select="$gasGroup"/></xsl:call-template><xsl:text>,</xsl:text>
            <xsl:text>0 ,</xsl:text>
            <xsl:call-template name="string"><xsl:with-param name="value" select="GasCode"/></xsl:call-template><xsl:text>,</xsl:text>
            <xsl:text>0, 0, '',</xsl:text>
            <xsl:call-template name="string"><xsl:with-param name="value" select="$transactionName"/></xsl:call-template><xsl:text>,</xsl:text>
            <xsl:call-template name="number"><xsl:with-param name="value" select="ValueInTons"/></xsl:call-template><xsl:text>,</xsl:text>
            <xsl:call-template name="string"><xsl:with-param name="value" select="$coProducer"/></xsl:call-template><xsl:text>,</xsl:text>
            <xsl:text>''</xsl:text>
            <xsl:text>);</xsl:text>
        </xsl:if>
    </xsl:for-each>
</xsl:template>

<!--  New blends -->
<xsl:template match="Gas">
    <xsl:if test="IsNew = 'true' and
        count(BlendComponents/Component[string-length(Code) &gt; 0 and string-length(Percentage) &gt; 0]) &gt; 0">
        <xsl:variable name="blendName" select="Code" />
        <xsl:for-each select="BlendComponents/Component">
            <xsl:text>
INSERT INTO data_blend_components VALUES (</xsl:text>
            <xsl:call-template name="string"><xsl:with-param name="value" select="$reportid"/></xsl:call-template><xsl:text>,</xsl:text>
            <xsl:call-template name="string"><xsl:with-param name="value" select="$blendName"/></xsl:call-template><xsl:text>,</xsl:text>
            <xsl:call-template name="number"><xsl:with-param name="value" select="GasId"/></xsl:call-template><xsl:text>,</xsl:text>
            <xsl:call-template name="string"><xsl:with-param name="value" select="Code"/></xsl:call-template><xsl:text>,</xsl:text>
            <xsl:call-template name="number"><xsl:with-param name="value" select="Percentage"/></xsl:call-template>
            <xsl:text>);</xsl:text>
        </xsl:for-each>
    </xsl:if>
</xsl:template>
<xsl:template match="text()"/>

</xsl:stylesheet>