[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
>