#! /usr/bin/perl -w # La redistribution du code source, modifié ou non, est soumise aux # conditions suivantes : # Le copyright ci-dessus, la présente liste de conditions et # l'avertissement qui la suit doivent figurer dans le code source. # CE PROGRAMME EST FOURNI « TEL QUEL » ET IL N'EST DONNÉ AUCUNE # GARANTIE, IMPLICITE OU EXPLICITE, QUANT À SON UTILISATION # COMMERCIALE, PROFESSIONNELLE OU AUTRE. L'AUTEUR NE PEUT EN AUCUN CAS # ÊTRE TENU POUR RESPONSABLE DE QUELQUE DOMMAGE OU PRÉJUDICE DIRECT, # INDIRECT, SECONDAIRE OU ACCESSOIRE (Y COMPRIS LES PERTES FINANCIÈRES # DUES AU MANQUE À GAGNER, À L'INTERRUPTION D'ACTIVITÉS, OU LA PERTE # D'INFORMATIONS ET AUTRES) DÉCOULANT DE L'UTILISATION DE PROGRAMME OU # DE L'IMPOSSIBILITÉ D'UTILISER CELUI-CI, ET DONT L'UTILISATEUR # ACCEPTE L'ENTIÈRE RESPONSABILITÉ. use strict; use XML::Parser; my $p = new XML::Parser(Style=>'Subs', Pkg=>'SubHandlers', ErrorContext=>2); $p->setHandlers(Char => \&char); $p->parsefile(shift); exit 0; ### Handler pour tout ce qui n'est pas une balise. sub char { my ($p, $donnees) = @_; if ($donnees eq '<') { $donnees = '<'; } elsif ($donnees eq '>') { $donnees = '>'; } print "$donnees"; } ### Handlers pour les balises. package SubHandlers; my (@types_listes, $titre, $section, $ssection); sub article { my ($p, $balise, %attribs) = @_; $titre = $attribs{'titre'}; print "\n"; print "
\n" } sub article_ { print "
"; } sub tete { print "\n"; print "$titre"; } sub tete_ { print "\n"; } sub resume { print ""; } sub resume_ { print "\n"; } sub corps { $section = 0; } sub corps_ { print ""; } sub version { print ""; } sub version_ { print ""; } sub date { print ""; } sub date_ { print ""; } sub auteur { print ""; } sub auteur_ { print ""; } sub para { print ""; } sub para_ { print ""; } sub section { print "". $_[3].""; } sub section_ { print ""; } sub subsection { print "". $_[3]."\n"; } sub subsection_ { print ""; } sub tt { print ""; } sub tt_ { print ""; } sub em { print ""; } sub em_ { print ""; } sub liste { my ($p, $balise, %attribs) = @_; my $type_liste = pop @types_listes; $attribs{'type'} = 'simple' if (!defined($attribs{'type'})); push(@types_listes, $attribs{'type'}); if ($attribs{'type'} eq 'simple') { print ""; } elsif ($attribs{'type'} eq 'enum') { print ""; } } sub liste_ { my $type_liste = pop @types_listes; print "" if ($type_liste eq 'simple'); print "" if ($type_liste eq 'enum'); } sub item { print ""; } sub item_ { print ""; } sub verbatim { print ""; } sub verbatim_ { print ""; } sub url { my ($p, $balise, %attribs) = @_; print "$attribs{'nom'}"; } sub url_ { print ""; }