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 # Usage
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 # Récupération des arguments et ouverture des tampons
23 sub ouvre {
24     $FichierEntree=$ARGV[0];
25     $encodage=$ARGV[1];
26     print $ARGV[2];
27     open(Entree,"<:encoding($encodage)",$FichierEntree);
28     #$FichierSortie=$FichierEntree . ".xml";
29     mkdir ("./TAGGERXML");
30     $FichierSortie = "./TAGGERXML/".$ARGV[2].".xml";
31     open(Sortie,">:encoding(utf-8)","$chemin/$FichierSortie");
32 }
33 
34 # Entête de document XML
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 # Traitement
43 sub traitement {
44     while ($Ligne = <Entree>) {
45     if (uc($encodage) ne "UTF-8") {utf8($Ligne);}
46     if ($Ligne!~/\ô\¯\:\^C\ô\¯\:\^C\^Q/) {
47     # Remplacement des guillemets par <![CDATA["]]> (évite erreur d'interprétation XML)
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 # Fin de fichier
56 sub fin {
57     print Sortie "</article>\n";
58     print Sortie "</document>\n";
59 }
60 
61 # Fermeture des tampons
62 sub ferme {
63     close(Entree);
64     close(Sortie);
65 }