filtrage.pm

package filtrage;

use strict;

use warnings;

use diagnostics;

use utf8;

use Exporter;

our @EXPORT = qw(&filtrageXML);

our @ISA = qw(Exporter);

use utf8;

use utile;

use petitParserDom;

use erreur;

# filtrage file,[tag1,tag2...],(fonction),(xml);

Définitions des fonctions

filtrageXML


sub filtrageXML{

my @arg=@_;

my $file=shift @arg;

my $tags=shift @arg;

my $dernier=pop @arg;

my $xml=0;

my $traitement=\&ecrire;

if (defined($dernier)){

if($dernier eq "xml"){

$xml=1;

$dernier=pop @arg;

if (defined($dernier)){

$traitement=$dernier;

}

}else{

$traitement=$dernier;

}

}

my $texte;

my $t;

my $texteSortie="";

my($info,$commentaire,$arbre)=petitParserDom::parser($file);

foreach my $tag (@$tags){

foreach (petitParserDom::getNoeudsParTag($arbre,$tag)){

($t)=petitParserDom::getTexte($_); #on récupére seulement la première référence de texte (il n'y en a qu'une dans ces documents)

# on déférence pour obtenir le texte

$texte=&$traitement(transformationEntite($$t));

if ($xml){

$texte="\t<passage tag=\"$tag\">\n\t\t".$texte."\n\t</passage>\n";

}else{

$texte=$texte."\n";

}

$texteSortie.=$texte;

}

}

return $texteSortie;

}


ecrire


sub ecrire{

return (shift @_);

}


transformationEntite


sub transformationEntite{

my $texte=shift;

# traite seulement les entités les plus courantes en français

my %entite=(38=>'',39=>"'",34=>'"',224,'à',226,'â',231=>'ç',232,'è',233,'é',234,'ê',235,'ë',238,'î',239,'ï',244,'ô',249,'ù',251,'û',252,'ü',);

while(my($k,$v)=each(%entite)){

$texte =~ s/&?#$k;/$v/g;

}

return $texte;

}

1;