#!/usr/bin/perl
<<DOC;
Format d\'entree : un texte étiqueté par cordial
Format de Sortie : le même texte au format xml
DOC
#On a modifié treetagger2xml afin de normaliser en xml la sortie Cordial.

# Usage
$ChaineUsage="impossible";
if (@ARGV!=1) {
 die $ChaineUsage;
}

&ouvre;
&entete;
&traitement;
&fin;
&ferme;

##############################################################################################
# Récupération des arguments et ouverture des tampons
sub ouvre {
    $FichierEntree=$ARGV[0];
	print $FichierEntree,"\n";
    open(Entree,$FichierEntree);
    $FichierSortie=$FichierEntree. ".xml";
    open(Sortie,">$FichierSortie");
	print $FichierSortie,"\n";
}

# Entête de document XML
sub entete {
    print Sortie "<?xml version=\"1.0\" encoding=\"iso-8859-1\" standalone=\"no\"?>\n";
    print Sortie "<document>\n";
  
}

# Traitement
sub traitement {
    while ($Ligne = <Entree>) {
	    chomp $Ligne;
		
	# Remplacement des guillemets par <![CDATA["]]> (évite erreur d'interprétation XML)
		$Ligne=~s/\"/<![CDATA[\"]]>/g;
		$Ligne=~s/(.*?)(\r)$/$1/g; #on enleve le retour a la ligne 
		
		@element=split(/\t/,$Ligne);
		print Sortie "<element>\n <data type=\"string\">$element[0]<\/data>\n <data type=\"lemma\">$element[1]<\/data>\n <data type=\"type\">$element[2]<\/data>\n <\/element>\n";
	 
	#Ici, on utilise la fonction split. Ainsi, on découpe chaque ligne en prenant comme délimiteur la tabulation . Chaque élément est rangé dans un tableau @element.
	#Le premier est la forme instanciée, le deuxième est le lemme, le troisième est la catégorie. 
	#On les encadre des mêmes balises que pour la sortie Tree-Tagger. Ainsi, on a une sortie xml analogue.
    }
}
# Fin de fichier
sub fin {
    
    print Sortie "</document>\n";
}

# Fermeture des tampons
sub ferme {
    close(Entree);
    close(Sortie);
}
