1 #!/usr/bin/perl
2 use Unicode::String qw(utf8);
3 <<DOC;
4 Format d\'entree : un texte étiqueté et lemmatisé par tree tagger et un format d'encodage
5 Format de Sortie : le même texte au format xml (en utf-8)
6 DOC
7
8
9
10 $ChaineUsage="Usage : tt2xml.pl <Fichier> <encodage>\n";
11 if (@ARGV!=3) {
12 die $ChaineUsage;
13 }
14
15 &ouvre;
16 &entete;
17 &traitement;
18 &fin;
19 &ferme;
20
21
22
23 sub ouvre {
24 $FichierEntree=$ARGV[0];
25 $encodage=$ARGV[1];
26 print $ARGV[2];
27 open(Entree,"<:encoding($encodage)",$FichierEntree);
28
29 mkdir ("./TAGGERXML");
30 $FichierSortie = "./TAGGERXML/".$ARGV[2].".xml";
31 open(Sortie,">:encoding(utf-8)","$chemin/$FichierSortie");
32 }
33
34
35 sub entete {
36 print Sortie "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n";
37 print Sortie "<?xml-stylesheet href=\"0_feuilleStyle.xsl\" type=\"text/xsl\"?>";
38 print Sortie "<document>\n";
39 print Sortie "<article>\n";
40 }
41
42
43 sub traitement {
44 while ($Ligne = <Entree>) {
45 if (uc($encodage) ne "UTF-8") {utf8($Ligne);}
46 if ($Ligne!~/\ô\¯\:\^C\ô\¯\:\^C\^Q/) {
47
48 $Ligne=~s/\"/<![CDATA[\"]]>/g;
49 $Ligne=~s/([^\t]*)\t([^\t]*)\t(.*)/<element>\n <data type=\"type\">$2<\/data>\n <data type=\"lemma\">$3<\/data>\n <data type=\"string\">$1<\/data>\n<\/element>/;
50 $Ligne=~s/<unknown>/unknown/g;
51 print Sortie $Ligne;
52 }
53 }
54 }
55
56 sub fin {
57 print Sortie "</article>\n";
58 print Sortie "</document>\n";
59 }
60
61
62 sub ferme {
63 close(Entree);
64 close(Sortie);
65 }