Untitled

                Never    
XML
       
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:key name="w" match="Writer" use="@writer_id"></xsl:key>
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
    <xsl:template match="/">
        <xsl:element name="report">
            <xsl:apply-templates select="Collection/Books"/>
            
            <xsl:element name="Collection_summary">
                
                
                <xsl:variable name="Saulski_Counts" select="count(Collection/Books/Book[@writer_id='w01'])"/>
                <xsl:variable name="Sapkowski_Counts" select="count(Collection/Books/Book[@writer_id='w02'])"/>
                <xsl:variable name="Tolkien_Counts" select="count(Collection/Books/Book[@writer_id='w03'])"/>
                <xsl:variable name="King_Counts" select="count(Collection/Books/Book[@writer_id='w04'])"/>
                <xsl:variable name="Gaiman_Counts" select="count(Collection/Books/Book[@writer_id='w05'])"/>
                <xsl:variable name="Gale_Counts" select="count(Collection/Books/Book[@writer_id='w06'])"/>
                <xsl:variable name="Pratchett_Counts" select="count(Collection/Books/Book[@writer_id='w07'])"/>
                <xsl:variable name="Malerman_Counts" select="count(Collection/Books/Book[@writer_id='w08'])"/>
                <xsl:variable name="Stiefvater_Counts" select="count(Collection/Books/Book[@writer_id='w09'])"/>
                <xsl:variable name="Miszczuk_Counts" select="count(Collection/Books/Book[@writer_id='w10'])"/>
                <xsl:variable name="Novik_Counts" select="count(Collection/Books/Book[@writer_id='w11'])"/>
                <xsl:variable name="Chokshi_Counts" select="count(Collection/Books/Book[@writer_id='w12'])"/>
                <xsl:variable name="Writers_Counts" select="count(Collection/Writers/Writer)"/>
                <xsl:variable name="Books_Counts" select="count(Collection/Books/Book)"/>
                <xsl:variable name="Pages_Sum" select="sum(Collection/Books/Book/Pages)"/>
                <xsl:variable name="Prize_Sum" select="sum(Collection/Books/Book/Prize)"/>
                <xsl:variable name="Age_Sum" select="sum(Collection/Writers/Writer/Age)"/>
                
                
                <xsl:element name="Saulski_Count">
                    <xsl:value-of select="count(Collection/Books/Book[@writer_id='w01'])"/>
                </xsl:element>			
                <xsl:element name="Sapkowski_Count">
                    <xsl:value-of select="count(Collection/Books/Book[@writer_id='w02'])"/>
                </xsl:element>			
                <xsl:element name="Tolkien_Count">
                    <xsl:value-of select="count(Collection/Books/Book[@writer_id='w03'])"/>
                </xsl:element>			
                <xsl:element name="King_Count">
                    <xsl:value-of select="count(Collection/Books/Book[@writer_id='w04'])"/>
                </xsl:element>			
                <xsl:element name="Gaiman_Count">
                    <xsl:value-of select="count(Collection/Books/Book[@writer_id='w05'])"/>
                </xsl:element>			
                <xsl:element name="Gale_Count">
                    <xsl:value-of select="count(Collection/Books/Book[@writer_id='w06'])"/>
                </xsl:element>			
                <xsl:element name="Pratchett_Count">
                    <xsl:value-of select="count(Collection/Books/Book[@writer_id='w07'])"/>
                </xsl:element>			
                <xsl:element name="Malerman_Count">
                    <xsl:value-of select="count(Collection/Books/Book[@writer_id='w08'])"/>
                </xsl:element>			
                <xsl:element name="Stiefvater_Count">
                    <xsl:value-of select="count(Collection/Books/Book[@writer_id='w09'])"/>
                </xsl:element>			
                <xsl:element name="Miszczuk_Count">
                    <xsl:value-of select="count(Collection/Books/Book[@writer_id='w10'])"/>
                </xsl:element>			
                <xsl:element name="Novik_Count">
                    <xsl:value-of select="count(Collection/Books/Book[@writer_id='w11'])"/>
                </xsl:element>			
                <xsl:element name="Chokshi_Count">
                    <xsl:value-of select="count(Collection/Books/Book[@writer_id='w12'])"/>
                </xsl:element>
                
                
                
                <xsl:element name="Books_Count">
                    <xsl:value-of select="$Books_Counts"/>
                </xsl:element>
                <xsl:element name="Writers_Count">
                    <xsl:value-of select="$Writers_Counts"/>
                </xsl:element>
                <xsl:element name="Average_Age">
                    <xsl:value-of select="concat(($Age_Sum div $Writers_Counts), ' lat')"/>
                </xsl:element>
                <xsl:element name="Average_Prize">
                    <xsl:value-of select="concat(($Prize_Sum div $Books_Counts), ' PLN')"/>
                </xsl:element>
                <xsl:element name="Average_Pages">
                    <xsl:value-of select="concat(($Pages_Sum div $Books_Counts), ' stron')"/>
                </xsl:element>
                
                <xsl:element name="Smallest_Prize">
                    <xsl:value-of select="concat(min(Collection/Books/Book/Prize), ' PLN')"/>
                </xsl:element>
                <xsl:element name="Max_Pages">
                    <xsl:value-of select="concat(max(Collection/Books/Book/Pages), ' stron')"/>
                </xsl:element>
                <xsl:element name="AverageBooksPerWriter">
                    <xsl:value-of select="round(count(Collection/Books/Book) div $Writers_Counts * 100) div 100"/>
                </xsl:element>
                
                
            </xsl:element>
        </xsl:element>
    </xsl:template>
    
    <xsl:template match="Collection/Books">
        <xsl:element name="sort">
            <xsl:for-each select="Books/Book">
                <xsl:sort data-type="number" select="Prize" order="descending"/>
                <xsl:element name="Book">
                    <xsl:attribute name="Prize">
                        <xsl:value-of select="Prize"/>
                    </xsl:attribute>
                    <xsl:attribute name="Writer">
                        <xsl:value-of select="key('w',../../@writer_id)"></xsl:value-of>
                    </xsl:attribute>
                    <xsl:attribute name="Title">
                        <xsl:value-of select="Title"/>
                    </xsl:attribute>
                </xsl:element>
            </xsl:for-each>
        </xsl:element>
    </xsl:template>
    
</xsl:stylesheet>

Raw Text