XML

Genevieve Bienvenue & Alexandre Cavalcante & Virginie Poadey

XSLT

Résultats Dpt_13

Résultats Dpt_19

XSLT #1

    <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
    xmlns="http://www.w3.org/1999/xhtml" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xsl:output name="csv-out" method="text" encoding="UTF-8" media-type="text/csv"/>

    <xsl:output indent="yes" method="html" encoding="UTF-8"
        doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
        doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>

    <xsl:output name="css-out" indent="no" method="text" encoding="UTF-8" media-type="text/css"/>

    <xsl:template match="/">
        <xsl:message>Début de la transformation</xsl:message>
        <html>
            <head>
                <link rel="stylesheet" type="text/css" href="semantic.min.css"/>
                <link rel="stylesheet" href="style.css" media="all" type="text/css"/>
                <link rel="shortcut icon" href="images/favicon.ico"/>
                <link href="http://fonts.googleapis.com/css?family=Cinzel" rel="stylesheet"
                    type="text/css"/>
                <!-- créer le lien vers le css. html est créé à côté du fichier exécutable. css aussi -->
                <title>XML</title>
            </head>
            <body>
                <div class="leaderboard" data-text="Leaderboard">
                    <h1>XML</h1>
                    <h4>Genevieve Bienvenue & Alexandre Cavalcante & Virginie Poadey</h4>
                </div>
                <div class="ui raised very padded text container segment">
                    <p>Nombre total d'accidents : <xsl:value-of select="count(//accident)"/>
                    </p>
                    <p>Nombre de personnes tuées qui n'avaient pas leur dispositif de sécurité :
                            <xsl:value-of
                            select="count(//gravite[text() = ' Tué' and following::securite/utilistion[text() = 'Non']])"
                        />
                    </p>
                    <p>Nombre de personnes tuées qui étaient mineures : <xsl:value-of
                            select="count(//anNaissanceUsager[number(text()) > 1998 and preceding-sibling::gravite[text() = ' Tué']])"
                        />
                    </p>
                    <p> Nombre d'hommes qui ont subi un accident en 2014 : <xsl:value-of
                            select="count(//accident[starts-with(@id, '2014')]/usagers/usager/sexe[text() = 'Masculin'])"
                        />
                    </p>

                    <p> Nombre de femmes qui ont subi un accident en 2014 : <xsl:value-of
                            select="count(//accident[starts-with(@id,'2014')]/usagers/usager/sexe[text() = 'Fémin'])"
                        />
                    </p>
                </div>
            <!-- <xsl:apply-templates/>-->
            </body>
        </html>


        <xsl:message>Écriture de la CSS</xsl:message>
        <xsl:result-document href="style.css" format="css-out">
            <!--se trouvera pas ds sortie principale. href : enregistrer. chemin relatif/absolu -->
            <!-- format fait référence à name de xsl:output -->
            <xsl:text>html, body {
    height: 100%;
    width: 100%;
}

.leaderboard {
    width: 100%;
    min-height: 20%;
    background-color: #232323;
}

.leaderboard h1 {
    padding-top: 40px;
    font-family: Cinzel;
    color: #00b5ad;
    text-align: center;
    font-size: 86px;
}

.leaderboard h4 {
    font-family: Cinzel;
    color: #00b5ad;
    text-align: center;
    padding-bottom: 40px;
}

.item .content {
    text-align: justify;
    padding-top: 20px !important;
    padding-bottom: 20px !important;
    padding-right: 20px !important;
    padding-left: 20px !important;
}

body {
    background: #333 url(images/footer_lodyas.png) center center;
    background-attachment: fixed;
}

.ui.items > .item > .content > span.header {
    font-family: Cinzel;
    color: #00b5ad;
}

p {
    color: #8a8888;
}

.ui.items > .item .meta {
    color: #5c5a5b;
}

.ui.divided.items>.item {
    border-top: 2px solid #00b5ad;
}

.ui.items>.item a {
    color: #00b5ad;
}

.ui.segment {
    background: rgba(132, 132, 132, 0.3);
}

.ui.segment h2 {
    text-align: center;
    font-family: Cinzel;
    color: #00b5ad;
}

.ui.segment p {
    text-align: justify;
}
            </xsl:text>
        </xsl:result-document>

        <xsl:message>Écriture de la CSV</xsl:message>
        <xsl:result-document href="map.csv" format="csv-out">
            <xsl:apply-templates select="/data/periode/accidents/accident/localisation"
                mode="out_csv"/>
        </xsl:result-document>
    </xsl:template>

    <!-- affiche latitude,longitude pour une sortie csv qui marche pour google maps -->
    <xsl:template match="localisation" mode="out_csv">
        <xsl:if test="number(latitude) > 0">
            <xsl:value-of select="adresse"/>
            <xsl:text>,</xsl:text>
            <xsl:value-of select="replace(latitude, '(\d\d)(\d+)', '$1.$2')"/>
            <xsl:text>,</xsl:text>
            <xsl:value-of select="replace(longitude, '(\d)(\d+)', '$1.$2')"/>
            <xsl:text>
</xsl:text>
        </xsl:if>
    </xsl:template>
    
    <xsl:template match="text()" mode="#all"/>

</xsl:stylesheet>


    
XSLT #2

    <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns="http://www.w3.org/1999/xhtml" xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs" version="2.0">

    <!-- ALL_DPT.xsl == pour la transformation XSL pour les graphiques
     GENEVIEVE BIENVENUE, ALEXANDRE CAVALCANTE, VIRGINIE POADEY
     -->

    <!-- Sortie CSV pour les graphiques -->
    <xsl:output name="csv-out" indent="no" method="text" encoding="UTF-8" media-type="text/csv"/>

    <!-- Debut de transformation -->
    <xsl:template match="/">
        <xsl:value-of select="document-uri(.)"/>
        <xsl:apply-templates/>
        <xsl:result-document href="accidents-delits.csv" format="csv-out">
            <xsl:apply-templates mode="csv"/>
        </xsl:result-document>
    </xsl:template>

    <!-- Compte le nombre d'accidents par mois sur l'année 2014 -->
    <xsl:template match="periode[@annee = '2014']" mode="csv">
        <xsl:variable name="dec" select="count(//accident[matches(date,'\d+/12/14')])"/>
        <xsl:value-of select="$dec"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="nov" select="count(//accident[matches(date,'\d+/11/14')])"/>
        <xsl:value-of select="$nov"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="oct" select="count(//accident[matches(date,'\d+/10/14')])"/>
        <xsl:value-of select="$oct"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="sept" select="count(//accident[matches(date,'\d+/9/14')])"/>
        <xsl:value-of select="$sept"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="aout" select="count(//accident[matches(date,'\d+/8/14')])"/>
        <xsl:value-of select="$aout"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="jul" select="count(//accident[matches(date,'\d+/7/14')])"/>
        <xsl:value-of select="$jul"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="jun" select="count(//accident[matches(date,'\d+/6/14')])"/>
        <xsl:value-of select="$jun"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="mai" select="count(//accident[matches(date,'\d+/5/14')])"/>
        <xsl:value-of select="$mai"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="avr" select="count(//accident[matches(date,'\d+/4/14')])"/>
        <xsl:value-of select="$avr"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="mars" select="count(//accident[matches(date,'\d+/3/14')])"/>
        <xsl:value-of select="$mars"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="fev" select="count(//accident[matches(date,'\d+/2/14')])"/>
        <xsl:value-of select="$fev"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="jan" select="count(//accident[matches(date, '\d+/1/14' )])"/>
        <xsl:value-of select="$jan"/>
        <xsl:text>;</xsl:text>
        <xsl:apply-templates mode="csv"/>
    </xsl:template>

    <!-- Compte le nombre d'accidents par mois sur l'année 2013 -->
    <xsl:template match="periode[@annee = '2013']" mode="csv">
        <xsl:variable name="dec" select="count(//accident[matches(date,'\d+/12/13')])"/>
        <xsl:value-of select="$dec"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="nov" select="count(//accident[matches(date,'\d+/11/13')])"/>
        <xsl:value-of select="$nov"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="oct" select="count(//accident[matches(date,'\d+/10/13')])"/>
        <xsl:value-of select="$oct"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="sept" select="count(//accident[matches(date,'\d+/9/13')])"/>
        <xsl:value-of select="$sept"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="aout" select="count(//accident[matches(date,'\d+/8/13')])"/>
        <xsl:value-of select="$aout"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="jul" select="count(//accident[matches(date,'\d+/7/13')])"/>
        <xsl:value-of select="$jul"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="jun" select="count(//accident[matches(date,'\d+/6/13')])"/>
        <xsl:value-of select="$jun"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="mai" select="count(//accident[matches(date,'\d+/5/13')])"/>
        <xsl:value-of select="$mai"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="avr" select="count(//accident[matches(date,'\d+/4/13')])"/>
        <xsl:value-of select="$avr"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="mars" select="count(//accident[matches(date,'\d+/3/13')])"/>
        <xsl:value-of select="$mars"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="fev" select="count(//accident[matches(date,'\d+/2/13')])"/>
        <xsl:value-of select="$fev"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="jan" select="count(//accident[matches(date, '\d+/1/13' )])"/>
        <xsl:value-of select="$jan"/>
        <xsl:text>;</xsl:text>
        <xsl:apply-templates mode="csv"/>
    </xsl:template>

    <!-- Compte le nombre d'accidents par mois sur l'année 2012 -->
    <xsl:template match="periode[@annee = '2012']" mode="csv">
        <xsl:variable name="dec" select="count(//accident[matches(date,'\d+/12/12')])"/>
        <xsl:value-of select="$dec"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="nov" select="count(//accident[matches(date,'\d+/11/12')])"/>
        <xsl:value-of select="$nov"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="oct" select="count(//accident[matches(date,'\d+/10/12')])"/>
        <xsl:value-of select="$oct"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="sept" select="count(//accident[matches(date,'\d+/9/12')])"/>
        <xsl:value-of select="$sept"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="aout" select="count(//accident[matches(date,'\d+/8/12')])"/>
        <xsl:value-of select="$aout"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="jul" select="count(//accident[matches(date,'\d+/7/12')])"/>
        <xsl:value-of select="$jul"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="jun" select="count(//accident[matches(date,'\d+/6/12')])"/>
        <xsl:value-of select="$jun"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="mai" select="count(//accident[matches(date,'\d+/5/12')])"/>
        <xsl:value-of select="$mai"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="avr" select="count(//accident[matches(date,'\d+/4/12')])"/>
        <xsl:value-of select="$avr"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="mars" select="count(//accident[matches(date,'\d+/3/12')])"/>
        <xsl:value-of select="$mars"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="fev" select="count(//accident[matches(date,'\d+/2/12')])"/>
        <xsl:value-of select="$fev"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="jan" select="count(//accident[matches(date, '\d+/1/12' )])"/>
        <xsl:value-of select="$jan"/>
        <xsl:text>;</xsl:text>
        <xsl:apply-templates mode="csv"/>
    </xsl:template>

    <!-- Compte le nombre d'accidents par mois sur l'année 2011 -->
    <xsl:template match="periode[@annee = '2011']" mode="csv">
        <xsl:variable name="dec" select="count(//accident[matches(date,'\d+/12/11')])"/>
        <xsl:value-of select="$dec"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="nov" select="count(//accident[matches(date,'\d+/11/11')])"/>
        <xsl:value-of select="$nov"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="oct" select="count(//accident[matches(date,'\d+/10/11')])"/>
        <xsl:value-of select="$oct"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="sept" select="count(//accident[matches(date,'\d+/9/11')])"/>
        <xsl:value-of select="$sept"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="aout" select="count(//accident[matches(date,'\d+/8/11')])"/>
        <xsl:value-of select="$aout"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="jul" select="count(//accident[matches(date,'\d+/7/11')])"/>
        <xsl:value-of select="$jul"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="jun" select="count(//accident[matches(date,'\d+/6/11')])"/>
        <xsl:value-of select="$jun"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="mai" select="count(//accident[matches(date,'\d+/5/11')])"/>
        <xsl:value-of select="$mai"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="avr" select="count(//accident[matches(date,'\d+/4/11')])"/>
        <xsl:value-of select="$avr"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="mars" select="count(//accident[matches(date,'\d+/3/11')])"/>
        <xsl:value-of select="$mars"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="fev" select="count(//accident[matches(date,'\d+/2/11')])"/>
        <xsl:value-of select="$fev"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="jan" select="count(//accident[matches(date, '\d+/1/11' )])"/>
        <xsl:value-of select="$jan"/>
        <xsl:text>;</xsl:text>
        <xsl:apply-templates mode="csv"/>
    </xsl:template>

    <!-- Compte le nombre d'accidents par mois sur l'année 2010 -->
    <xsl:template match="periode[@annee = '2010']" mode="csv">
        <xsl:variable name="dec" select="count(//accident[matches(date,'\d+/12/10')])"/>
        <xsl:value-of select="$dec"/>
        <xsl:text/>
        <xsl:variable name="nov" select="count(//accident[matches(date,'\d+/11/10')])"/>
        <xsl:value-of select="$nov"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="oct" select="count(//accident[matches(date,'\d+/10/10')])"/>
        <xsl:value-of select="$oct"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="sept" select="count(//accident[matches(date,'\d+/9/10')])"/>
        <xsl:value-of select="$sept"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="aout" select="count(//accident[matches(date,'\d+/8/10')])"/>
        <xsl:value-of select="$aout"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="jul" select="count(//accident[matches(date,'\d+/7/10')])"/>
        <xsl:value-of select="$jul"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="jun" select="count(//accident[matches(date,'\d+/6/10')])"/>
        <xsl:value-of select="$jun"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="mai" select="count(//accident[matches(date,'\d+/5/10')])"/>
        <xsl:value-of select="$mai"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="avr" select="count(//accident[matches(date,'\d+/4/10')])"/>
        <xsl:value-of select="$avr"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="mars" select="count(//accident[matches(date,'\d+/3/10')])"/>
        <xsl:value-of select="$mars"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="fev" select="count(//accident[matches(date,'\d+/2/10')])"/>
        <xsl:value-of select="$fev"/>
        <xsl:text>;</xsl:text>
        <xsl:variable name="jan" select="count(//accident[matches(date, '\d+/1/10' )])"/>
        <xsl:value-of select="$jan"/>
        <xsl:text>;</xsl:text>
        <xsl:apply-templates mode="csv"/>
    </xsl:template>

    <!-- Pour afficher les délits du code 35 (vols de voiture) par mois et par année-->
    <xsl:template match="data" mode="csv">
        <xsl:variable name="delits"
            select="//periode[@annee]/delits/delit[@code = '35']/mois/child::node()"/>
        <xsl:value-of select="$delits"/>
        <xsl:text/>
        <xsl:apply-templates mode="csv"/>
    </xsl:template>

    <!-- Court-circuit pour les noeuds texte du doc xml -->
    <xsl:template match="text()" mode="csv"/>

</xsl:stylesheet>