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
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>.
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
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>
</xsl:text>
10
<ListEmail>
11
<xsl:call-template name="getEmail"></xsl:call-template>
12
<xsl:text>
</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
[---9.-]+@[a---9.-]+\.[-- ]+
Solution
Solution
1
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>
</xsl:text>
10
<ListEmail>
11
<xsl:call-template name="getEmail"></xsl:call-template>
12
<xsl:text>
</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>
</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