XSLT (opérations avancées) : expressions régulières et fichiers texte

Récupération d'adresses mails dans un fichier texte non XML

Récupérer des adresses mails dans un fichier texte

L'objectif de cet exercice est de récupérer des adresses mails contenues dans un fichier texte non XML.

Résultat attendu :

1
<?xml version="1.0" encoding="UTF-8"?>
2
<ListEmail>
3
<Email>1Emo2opCVb@jfot.com</Email>
4
<Email>kaMHQ.2Z9O@jonk.fr</Email>
5
<Email>G09Gtui5Ne@odnz.nl</Email>
6
<Email>36ARIISPX6@rnuh.tv</Email>
7
<Email>xYXuwe0O8c@odnz.gov</Email>
8
<Email>xYXuwe0O8c@odnz.gov</Email>
9
<Email>YOaxPeR1SI@rnuh.eu</Email>
10
<Email>zLhAfZrCq0@odnz.us</Email>
11
<Email>Yn4p.LuQX7@rnuh.info</Email>
12
<Email>iGjoTHOuPM@jonk.be</Email>
13
<Email>qbxp8pnzFQ@rnuh.com</Email>
14
<Email>vTQYjGrJg8@odnz.fr</Email>
15
<Email>Xv8XNeLh4z@tuea.nl</Email>
16
<Email>rUeklZM0IB@jonk.tv</Email>
17
<Email>ujbXZVSuON@rnuh.gov</Email>
18
<Email>0N6AMhYvYZ@odnz.net</Email>
19
<Email>GS0UGHINR0@jonk.eu</Email>
20
<Email>ru8P_5Nvzp@tuea.info</Email>
21
<Email>UpsNw0jz7a@jonk.fr</Email>
22
<Email>iIiWJkrCcO@tuea.fr</Email>
23
</ListEmail>

Question

Créer un programme XSL-XSLT permettant de lire le fichier texte non XML et de copier le contenu du fichier dans un document XML entre les balises <ListEmail>...</ListEmail>.

exo1_input.txt

Indice

Utiliser la commande unparsed-text($href, $encoding) pour récupérer le fichier texte.

Utiliser votre programme XSL-XSLT comme entrée afin de l’exécuter.

Solution

Solution

1
<?xml version="1.0" encoding="UTF-8"?>
2
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
3
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
4
    exclude-result-prefixes="xs"
5
    version="2.0">
6
    <xsl:output method="xml"></xsl:output>
7
    
8
    <xsl:template match="/">
9
        <xsl:text>&#xa;</xsl:text>
10
        <ListEmail>
11
            <xsl:call-template name="getEmail"></xsl:call-template>
12
        <xsl:text>&#xa;</xsl:text>
13
        </ListEmail>
14
    </xsl:template>
15
    
16
    <xsl:template name="getEmail">
17
        <xsl:variable name="text" select="unparsed-text('exo1_input.txt', 'iso-8859-1')"></xsl:variable>
18
            <xsl:value-of select="$text"></xsl:value-of>
19
    </xsl:template>
20
</xsl:stylesheet>
21

Question

Récupérer uniquement les adresses mails contenues dans le texte et placer chacune d'entre elles entre les balises <Email>...</Email>.

Indice

Utilisez une expression régulière pour les adresses mails.

Indice

Une expression régulière simple permettant de détecter une adresse mail.

1
[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+
Solution

Solution

1
<?xml version="1.0" encoding="UTF-8"?>
2
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
3
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
4
    exclude-result-prefixes="xs"
5
    version="2.0">
6
    <xsl:output method="xml"></xsl:output>
7
    
8
    <xsl:template match="/">
9
        <xsl:text>&#xa;</xsl:text>
10
        <ListEmail>
11
            <xsl:call-template name="getEmail"></xsl:call-template>
12
        <xsl:text>&#xa;</xsl:text>
13
        </ListEmail>
14
    </xsl:template>
15
    
16
    <xsl:template name="getEmail">
17
        <xsl:variable name="text" select="unparsed-text('exo1_input.txt', 'iso-8859-1')"></xsl:variable>
18
            <xsl:analyze-string select="$text" regex="[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+">
19
                <xsl:matching-substring>
20
                    <xsl:text>&#xa;</xsl:text>
21
                    <xsl:element name="Email">
22
                        <xsl:value-of select="."></xsl:value-of>
23
                    </xsl:element>
24
                </xsl:matching-substring>
25
            </xsl:analyze-string>      
26
    </xsl:template>
27
</xsl:stylesheet>
28
PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Karim El Aktaa (Contributions : Stéphane Crozat et les étudiants de NF29) Paternité - Partage des Conditions Initiales à l'IdentiqueRéalisé avec Scenari (nouvelle fenêtre)