#!/usr/bin/perl <<DOC; Nom: Egle Ramdani FEVRIER 2006 Usage : perl cordialxml.pl fichier-étiqueté-par-Cordial Le programme prend en entrée un fichier étiqueté par Cordial (forme, lemme, catégorie) et produit en sortie un fichier XML avec la structure suivante: <ELEMENT> <DATA type="forme">forme</DATA> <DATA type="lemme">lemme</DATA> <DATA type="cat">catégorie</DATA> <ELEMENT> DOC &ouvre; &entete; &traitement; &fin; &ferme; # Récupération des arguments et ouverture des tampons --------------------------------------- sub ouvre { $FichierEntree=$ARGV[0]; open(Entree,$FichierEntree); $FichierSortie=$FichierEntree.".xml"; open(Sortie,">$FichierSortie"); } # Entête de document XML-------------------------------------------------------------------- sub entete { print Sortie "<?xml version=\"1.0\" encoding=\"iso-8859-1\" standalone=\"no\"?>\n"; print Sortie "<PARCOURS>\n"; print Sortie "<AUTEUR>Egle Ramdani</AUTEUR>\n"; } # Conversion en XML------------------------------------------------------------------------- sub traitement { while ($Ligne = <Entree>) { #Remplacement des guillemets par <![CDATA["]]> (évite erreur d'interprétation XML) $Ligne=~s/\"/<![CDATA[\"]]>/g; $Ligne=~s/([^\t]*)\t([^\t]*)\t(.*)/<ELEMENT>\n<DATA type=\"forme\">$1<\/DATA>\n<DATA type=\"lemme\">$2<\/DATA>\n<DATA type=\"cat\">$3<\/DATA>\n<\/ELEMENT>/; print Sortie $Ligne; } } # Fin de fichier---------------------------------------------------------------------------- sub fin { print Sortie "</PARCOURS>\n"; } # Fermeture des fichiers-------------------------------------------------------------------- sub ferme { close(Entree); close(Sortie); }