Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

langage de script de manipulation de HTML/XML ?

1 réponse
Avatar
Bru, Pierre
bonjour,

dans le pass=E9, j'aimais bien utiliser le "Compaq's Web Language" (AKA=20
WebL: http://research.compaq.com/SRC/WebL/) pour r=E9cuprer et=20
analyser/manipuler des pages HTML. seulement voil=E0, ce langage de scrip=
t=20
n'est plus maintenu et ne connait rien au del=E0 de HTML 3.2 :(

pour tenter de r=E9cup=E9rer la fonctionalit=E9, j'ai donc =E9cris un pei=
t bout=20
de code en Java qu lit une page HTML et la passe dans un parser HTML=20
pour remettre en forme le HTML pourri que l'on trouve sur le web (fermer =

les tags mal ferm=E9, etc.). je me retrouve donc avec du HTML "propre", u=
n=20
peut comme du XML.

mais maintenant, j'aimerai bien avoir un langage interpr=E9t=E9 qui me=20
permette de manipuler de beau HTML... par ex, WebL permet des truc du sty=
le:

// supprimer toutes les lignes de table qui contienent la chaine "toto"
P=3DGetURL("http://www.foo.bar");
TR=3DElem(P,"tr") contain Pat(P,"toto");
every tr in TR do
Delete(tr);
end;
PrintLn(Markup(P));

ou

// remplacer toutes les <form>...</form>
// par des <div>...</div>
P=3DGetURL("http://www.foo.bar");
FO=3DElem(P,"form");
every fo in FO do
Replace(fo,NewPiece(`<div>`+Markup(Content(fo))+`</div>`,"text/html"));=

end;
PrintLn(Markup(P));

tout =E7a et bien d'autre trucs encore (le manuel en PDF est sur leur sit=
e).

bien sur, les sources de WebL sont dispo mais le copyright emp=EAche de=20
redistribuer une version modifi=E9e et donc je ne pourrait pas faire=20
profiter mes petits camarades de mes am=E9liorations si je fais comprendr=
e=20
le HTML 4.x =E0 WebL :(

existe t'il un autre langage de script offrant des possibliti=E9s similai=
res ?

Pierre.

1 réponse

Avatar
Hervé AGNOUX
Bonjour,

C'est la première fois depuis longtemps que je participe à ce forum :-)

Mes suggestions dans le texte de votre question.

Bru, Pierre wrote:


pour tenter de récupérer la fonctionalité, j'ai donc écris un peit bout
de code en Java qu lit une page HTML et la passe dans un parser HTML
pour remettre en forme le HTML pourri que l'on trouve sur le web (fermer
les tags mal fermé, etc.). je me retrouve donc avec du HTML "propre", un
peut comme du XML.



Pour cela il existe aussi TagSoup, peut être que vous pourrez collaborer
avec eux sur la question :

"TagSoup - Just Keep On Truckin"
http://mercury.ccil.org/~cowan/XML/tagsoup/



existe t'il un autre langage de script offrant des possiblitiés similaires
?



Si vous avez du XHTML en sortie, peut être le XSLT, tout simplement ?

Sinon, le langage groovy, facilement utilisable depuis du code Java, permet
différentes manipulations des chaines de caractères qui facilitent
énormément la vie, particulièrement pour les tests et de façon plus
générale pour tout ce qui est définition de texte.

Par exemple :

name = "James"
text = <<<FOO
hello there ${name}
how are you today?
FOO

assert text != null
println(text)


Ou bien :

import groovy.sql.Sql
import groovy.sql.TestHelper

sql = TestHelper.makeSql()

food = sql.dataSet('FOOD')
cheese = food.findAll { it.type == 'cheese' }
cheese.each { println "Eat ${it.name}" }

(exemples copiés/collés de leur site.)

"Groovy"
http://groovy.codehaus.org/

Il me semble que JPython permet aussi ce genre de manipulations.

Chez Jakarta vous avez aussi quantité de pistes possibles.

Le très discuté Jelly vous permettra de faire les choses plus facilement (à
mon avis) qu'avec XSLT. Le ECS (Element Construction Set) semble également
fait pour vous.

Bon courage.


--
Hervé AGNOUX
http://www.diaam-informatique.com