[Perl] HTML2PML

Víctor Manuel Jáquez Leal ceyusa@coral.com.mx
17 Sep 2002 10:04:43 -0500


Si ambos son XML se podría hacer una transformación XSLT y listo.  El
problema es que todos haces añicos al HTML.  Hay muchos modulitos en el
CPAN que te ayudarán a parsear el HTML.  Te recomiendo que le eches una
mirada al http://search.cpan.org

Vale
Ceyusa

El lun, 16-09-2002 a las 08:35, Alejandro G. Bedoya escribió:
> Saludos!!!
> 
>     Un dia que me levante de buenas decidi hacer algo por la comunidad, a=
sí
> que estoy haciendo un programita que convierta archivos HTML a PML. PML e=
s
> el código horrible y espantoso para hacer libros que se lean en la Palm=
, con
> el Palm Reader. El objetivo de esto es que si alguien quiere hacer un
> librito para la Palm, es mas facil editarlo en HTML que todo mundo sabe c=
on
> un editor cualquiera y transformarlo con este programita, en vez de escri=
bir
> a manopla todo en PML. Y mejor aún, poder traspasar cualquier página =
HTML a
> la palm rápidamente, esto tendria algunas ventajas que hacerlo por el
> AvantGo.
> 
>     Ya funciona primitivamente para los formatos básicos, lo que hace e=
l
> programa es sustituir los tags HMTL básicos(negritas, italicas, etc) a =
PML y
> todos los demas tags desconocidos los borra. Con este REgex que encontr=
é(no
> me pregunten como funciona) se borran todos los tags:
> 
>          $Lin =~ s/(<[^>]+>)//g;
> 
>     Funciona bastante bien, pero encontre en un HTML tags que no se cierr=
an
> y se abren en la misma linea, ocasionando que no se borren con el anterio=
r
> código:
> 
> Hola <meta http-equiv="Content-Type"
> content="text/html; charset=iso-8859-1"> Mundo
> 
>     Pregunta, como le hago? Se me ocurre meter dos RegEx adicionales. Uno
> que busque y borre de una linea desde "<" hasta el final de la misma, y o=
tro
> desde el inicio hasta ">". Cuales serian esos RegEx???  Que otra forma se
> puede hacer???
> 
>     El código completo de lo que va del programita para su mofa se los
> mando. Gracias por sus consejos...
> 
> 
> ---
> Sinceramente...
> Alejandro G. Bedoya
> InterAccion.COM          Ponemos su Internet en Acción
> 
> 
> =====
> use strict;
> 
> my $ARG=$ARGV[0];
> 
> open(FileHandle, $ARG) || die "$_[0]: $!";
> my @FILE= <FileHandle>;
> close(FileHandle);
> chomp(@FILE);
> 
> print "\\v\Done with HTML2PML\\v\n";
> foreach my $Lin (@FILE) {
> # $Lin=~ s/\n/ /gi;
>  $Lin=~ s/<BR>/\n/gi;
>  $Lin=~ s/\\/\\\\/gi;
> 
>  #Title to title
>  $Lin=~ s/<TITLE>/\\vTITLE="/gi;
>  $Lin=~ s/<\/TITLE>/"\\v/gi;
> 
>  #Rules
>  $Lin=~ s/<HR>/\\w="100%"/gi;
> 
>  #Headings to chapters.
>  $Lin=~ s/<H1>/\\x\\c\\b\\u/gi;
>  $Lin=~ s/<\/H1>/\\u\\b\n\\c\\x/gi;
>  $Lin=~ s/<H2>/\\X1\\b\\u/gi;
>  $Lin=~ s/<\/H2>/\\u\\b\\X1/gi;
>  $Lin=~ s/<H3>/\\X2\\b\\u/gi;
>  $Lin=~ s/<\/H3>/\\u\\b\\X2/gi;
>  $Lin=~ s/<H4>/\\X3\\b\\u/gi;
>  $Lin=~ s/<\/H4>/\\u\\b\\X3/gi;
>  $Lin=~ s/<H5>/\\X4\\b\\u/gi;
>  $Lin=~ s/<\/H5>/\\u\\b\\X4/gi;
> 
>  #Bolds
>  $Lin=~ s/<B>/\\b/gi;
>  $Lin=~ s/<\/B>/\\b/gi;
>  $Lin=~ s/<STRONG>/\\b/gi;
>  $Lin=~ s/<\/STRONG>/\\b/gi;
> 
>  #Italics
>  $Lin=~ s/<I>/\\i/gi;
>  $Lin=~ s/<\/I>/\\i/gi;
>  $Lin=~ s/<EM>/\\i/gi;
>  $Lin=~ s/<\/EM>/\\i/gi;
> 
>  #Underline
>  $Lin=~ s/<U>/\\u/gi;
>  $Lin=~ s/<\/U>/\\u/gi;
> 
>  #Center
>  $Lin=~ s/<CENTER>/\\c/gi;
>  $Lin=~ s/<\/CENTER>/\n\\c/gi;
> 
>  #Clean the rest
>  $Lin =~ s/(<[^>]+>)//g;
> # if ($Lin eq "") { $Lin="\n"; }
>  print "$Lin ";
>  }
> 
> 
> 
> 
> 
> 
> _______________________________________________
> Perl mailing list
> Perl@tlali.iztacala.unam.mx
> http://tlali.iztacala.unam.mx/mailman/listinfo/perl
>