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

DOM

11 réponses
Avatar
Gloops
Bonjour tout le monde,

Je vois que ces derniers jours nous sommes un paquet =E0 nous int=E9resse=
r =E0=20
r=E9cup=E9rer le contenu d'une page web, =E0 force il y en a bien un qui =
va=20
arriver =E0 quelque chose de propre :)

Au final j'ai =E0 convertir un site =E9crit en pur HTML vers des pages as=
p=20
(pour b=E9n=E9ficier de la localisation implicite, sur laquelle j'ai ouve=
rt=20
des fils ici il y a quelques semaines). Je me demande si il n'y aurait=20
pas quelque chose d'int=E9ressant =E0 faire du c=F4t=E9 de XSL, voire si =
=E7a ne=20
serait pas d=E9j=E0 fait, mais ce sera une prochaine =E9tape de r=E9flexi=
on.

Pour le moment, je m'int=E9resse tout bonnement =E0 DOM.

J'ai utilis=E9 le code suivant :

XmlDataDocument doc =3D new XmlDataDocument();
doc.Load("home.htm");

(avec le chemin complet bien entendu)

et sur doc.Load j'obtiens une erreur :
Message=3D"'>' est un jeton inattendu. Le jeton attendu est '\"' ou=20
'''. Ligne 1, position 63."

Alors je scrute ma ligne de code de fa=E7on approfondie (et par=20
d=E9finition, une ligne, ce n'est gu=E8re tr=E8s profond ;) ),=20
particuli=E8rement autour du 63=E8me caract=E8re, et je tombe pile au mil=
ieu=20
d'un mot, rien de tr=E8s excitant.

Et finalement, tilt : il ne s'agissait pas du 63=E8me caract=E8re de ma=20
ligne de commande, mais du 63=E8me caract=E8re du fichier que je cherche =
=E0=20
ouvrir (j'ai v=E9rifi=E9 en le changeant).

Ainsi parlait-il (il aurait pu s'appeler Zarathustra, mais ce sera pour=20
une autre fois) :

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


Et j'ajoute : ah bon ?

Elle me para=EEt bien, cette balise.
On ne peut pas ins=E9rer =E7a dans un document DOM ?

10 réponses

1 2
Avatar
Gloops
Gloops a écrit, le 31/01/2008 22:58 :
XmlDataDocument doc = new XmlDataDocument();



On ne peut pas insérer ça dans un document DOM ?




Aïe, depuis avant-hier, j'ai un problème avec le disjoncteur principa l.

Je remets tout dans l'ordre, et je vous raconte.
Avatar
Gloops
[Conversion HTML vers XML]

Bonjour,

En fait je ne vise pas un enrichissement sémantique tel que décrit là
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/dnxml/html/htmltoxml .htm

puisque ma page HTML, pour faciliter l'application de la feuille de
style, a déjà un code structuré avec les paragraphes précédés de <P> et
suivis de </P>.

Avec XMLDocument je ne suis finalement pas si sûr que ça d'être hor s
sujet puisque j'ai trouvé ça sous le titre DOM, simplement il a fallu
introduire un caractère supplémentaire dans la première ligne, dont je
ne saurais expliquer le rôle :

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ' />

Pour respecter la structure XML j'ai ajouté un "/" avant le ">", mais ç a
ne suffisait encore pas, on me réclamait toujours un guillemet ou une
apostrophe, alors je le lui ai donné une apostrophe il est content. Je
dois dire que ça m'apostrophe, enfin si ça lui permet de passer à l a
suite ...

Je ne suis quand même pas encore au bout des problèmes, car j'ai un
paragraphe qui commence à la ligne 15 après une balise <P>, et qui fi nit
à la ligne 23 par une balise </P>. Entre les deux, on a un <span></sp an>.

Gérer un élément XML écrit sur plusieurs lignes, XMLDocument ne s ait pas
faire, en tout cas par défaut. J'obtiens exactement le même résulta t
avec XMLDataDocument.

La meilleure solution consiste-t-elle à supprimer les sauts de ligne en
entrée, ou me serais-je planté dans le choix de l'outil, comme la
lecture de son nom m'en a donné l'impression hier soir ?


Au-delà dans le contexte ...

Une fois la sérialisation effectuée, la désérialisation créera des
objets Label ASP dont la présence donnera lieu automatiquement à la
création de lignes dans le fichier de ressources. D'ailleurs, je me
demande si il faudra que je retraduise à la main dans le fichier de
ressources, ou si je peux raisonnablement m'attendre à pouvoir récupé rer
la traduction qui se trouve dans un autre fichier HTML, en me repérant
sur les titres.
_____________________________________
Gloops a écrit, le 31/01/2008 22:58 :
Bonjour tout le monde,

Je vois que ces derniers jours nous sommes un paquet à nous intéres ser à
récupérer le contenu d'une page web, à force il y en a bien un qu i va
arriver à quelque chose de propre :)

Au final j'ai à convertir un site écrit en pur HTML vers des pages asp
(pour bénéficier de la localisation implicite, sur laquelle j'ai ou vert
des fils ici il y a quelques semaines). Je me demande si il n'y aurait
pas quelque chose d'intéressant à faire du côté de XSL, voire s i ça ne
serait pas déjà fait, mais ce sera une prochaine étape de réfle xion.

Pour le moment, je m'intéresse tout bonnement à DOM.

J'ai utilisé le code suivant :

XmlDataDocument doc = new XmlDataDocument();
doc.Load("home.htm");

(avec le chemin complet bien entendu)

et sur doc.Load j'obtiens une erreur :
Message="'>' est un jeton inattendu. Le jeton attendu est '"' ou ' ''.
Ligne 1, position 63."

Alors je scrute ma ligne de code de façon approfondie (et par
définition, une ligne, ce n'est guère très profond ;) ),
particulièrement autour du 63ème caractère, et je tombe pile au m ilieu
d'un mot, rien de très excitant.

Et finalement, tilt : il ne s'agissait pas du 63ème caractère de ma
ligne de commande, mais du 63ème caractère du fichier que je cherch e à
ouvrir (j'ai vérifié en le changeant).

Ainsi parlait-il (il aurait pu s'appeler Zarathustra, mais ce sera pour
une autre fois) :

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


Et j'ajoute : ah bon ?

Elle me paraît bien, cette balise.
On ne peut pas insérer ça dans un document DOM ?



Avatar
Gilles TOURREAU [MVP]
Bonjour,

Il est tout à fait possible de réaliser ce que vous souhaitez faire si votre
site web est normalisé XHTML et non HTML (Mort depuis 1999 !)...
XHTML est une application de XML et peut donc être parsé et utilisé sans
problème avec tout ce qui gère du XML (XmlDocument, XPath, XSLT...).

Le XHTML (et donc XML) est beaucoup plus stricte que le HTML :
- Chaque balise ouvrante doit avoir une fermante (<br> n'existe plus... mais
devient alors <br></br> ou <br/>).
- XML est sensible à la casse... Donc le nom des balises doit être en
minusucule !
- ...etc

Utilisez aussi le validator du w3c pour vous assurer que votre site est 100%
XHTML !
Pour info, les composants ASP .NET v2 génère du code XHTML, si ce n'est pas
le cas, c'est votre code ASP qui n'est pas bon...

Cordialement

--
Gilles TOURREAU - MVP C#


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Gloops
Bonjour,

Voilà une réponse qui me permet d'y voir bien plus clair, en liaison
avec les messages d'erreur obtenus.

Je me rappelle avoir effectué une extraction XML depuis un site en
passant par le composant WebBrowser sous VB6, mais c'était sur un autre
site. Ce matin j'ai essayé sous Word, d'ouvrir mon site pour faire la
même chose, par d.HTMLProject.Open (msoHTMLProjectOpenSourceText), j'ai
juste eu droit à "échec d'ouverture, erreur 80004005", ce qui ne
m'avance guère car si je cherche un peu on me parle de conflit d'accè s,
alors qu'il s'agit de la copie en local sur mon disque dur, donc je ne
vois pas bien conflit avec qui.

Bon, me voilà donc lancé à repotasser XHTML avant de me pouvoir me
préoccuper de sérialiser mon site. On croit avoir ouvert le paquet, p as
de pot il y en a un autre à l'intérieur ...

Merci pour ces précieuses infos.

___________________________________________________
Gilles TOURREAU [MVP] a écrit, le 02/02/2008 12:26 :
Bonjour,

Il est tout à fait possible de réaliser ce que vous souhaitez faire si
votre site web est normalisé XHTML et non HTML (Mort depuis 1999 !).. .
XHTML est une application de XML et peut donc être parsé et utilisé sans
problème avec tout ce qui gère du XML (XmlDocument, XPath, XSLT...) .

Le XHTML (et donc XML) est beaucoup plus stricte que le HTML :
- Chaque balise ouvrante doit avoir une fermante (<br> n'existe plus...
mais devient alors <br></br> ou <br/>).
- XML est sensible à la casse... Donc le nom des balises doit être en
minusucule !
- ...etc

Utilisez aussi le validator du w3c pour vous assurer que votre site est
100% XHTML !
Pour info, les composants ASP .NET v2 génère du code XHTML, si ce n 'est
pas le cas, c'est votre code ASP qui n'est pas bon...

Cordialement



Avatar
Gloops
Re,

Il semblerait qu'il ne reste pas tant que ça à faire ...

Extrait de la page
http://validator.w3.org/check?verbose=1&uri=http://www.zailes.org/en/ home.htm

Je trouve ceci :

The document located at <http://www.zailes.org/en/home.htm> was checked
and found to be valid HTML 4.01 Transitional. This means that the
resource in question identified itself as "HTML 4.01 Transitional" and
that we successfully performed a formal validation using an SGML or XML
Parser (depending on the markup language used).

(fin de citation)

J'ai bien vu "successfully performed a formal validation using an SGML
or XML Parser" ?

ça voudrait donc dire que c'est l'entête que je dois modifier, et que si
je me réfère là :
http://fr.wikipedia.org/wiki/XHTML

il faudrait qu'elle ressemble à ceci :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">


sachant que je me suis bien frotté les yeux quand j'ai vu un modèle h tml
sans section <head> et sans section <body>.

En fait, c'est une fois que j'aurai fait ça, que la validation se fera
non plus en fonction de la norme SGML mais de la norme XML, et si on me
répond encore OK, c'est que j'ai bon.

C'est bien ça ?
Et les navigateurs qui pouvaient lire avec l'ancienne norme peuvent
aussi en xhtml.
Avatar
Gloops
Gloops a écrit, le 02/02/2008 20:48 :
ça voudrait donc dire que c'est l'entête que je dois modifier, et q ue si
je me réfère là :
http://fr.wikipedia.org/wiki/XHTML

il faudrait qu'elle ressemble à ceci :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">





Voilà c'est fait (à une autre adresse), ça passe en transitional.

Pour le strict je me suis fait recaler sur <a target='_blank'
Pas de target en xhtml strict, à ce que je comprends.

S'agissant du lien de contact on trouvera des solutions plus
appropriées, et vraisemblablement l'approfondissement de
l'interprétation de la norme aurait plus sa place dans un newsgroup sur
html.

Effectivement, une fois ces quelques modifs effectuées, mon programme
réussit à ouvrir le document en tant que XMLDataDocument. Il me reste
donc à explorer les différents éléments et à les traduire à m esure,
notamment les <P> vont devenir des Labels ASP (ça ne serait pas déjà
fait quelque part, ça, des fois, la correspondance entre les balises
HTML et les contrôles ASP ? Peut-être avec plus ou moins de bonheur,
mais ...)

Une chose m'étonne : dans les méthodes de XMLDataDocument, je ne trou ve
pas Close. Ah ben oui, ce sont mes habitudes du VB6 qui remontent, là l e
Garbage Collector fera le ménage quand le formulaire sera fermé.

Bon, eh bien ... merci Docteur, l'épine est sortie de mon pied ...
Avatar
Gilles TOURREAU [MVP]
Oui l'entête est importante, mais uniquement pour les navigateurs (et au
validator)... C'est juste pour dire quel mécanisme il faut mettre en route
pour analyser et afficher la page...

XMLement parlant, cela n'apporte rien...

Cordialement

--
Gilles TOURREAU - MVP C#


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Gloops
Gilles TOURREAU [MVP] a écrit, le 03/02/2008 15:02 :
Oui l'entête est importante, mais uniquement pour les navigateurs (et au
validator)... C'est juste pour dire quel mécanisme il faut mettre en
route pour analyser et afficher la page...

XMLement parlant, cela n'apporte rien...

Cordialement




Ah, je me demande si on peut lancer le programme sans connexion à Inter net.

En l'état, j'ai une erreur lors de l'ouverture du fichier, du fait qu'o n
ne réussit pas à joindre "w3c.com", mentionné dans l'entête. Je b ranche
le câble, j'attends quelques secondes, et ensuite le programme peut
s'exécuter sans problème.

Ou alors il faudrait mettre une adresse bidon à la place, mais ne pas
oublier de remettre la bonne en mettant le fichier en ligne ? C'est vrai
qu'annoncer qu'on a un site web validé par Madame Michu, ça ne fait p as
tout-à-fait le même effet que par le w3c. :)
Avatar
Gilles TOURREAU [MVP]
> Pour le strict je me suis fait recaler sur <a target='_blank'



En XML, les attributs doivent obligatoirement entre des guillements !
- target='xxx' ne fonctione pas !
- target=xxxx ne fonctione pas !
il faut mettre : target="_blank"

Effectivement, une fois ces quelques modifs effectuées, mon programme
réussit à ouvrir le document en tant que XMLDataDocument. Il me reste donc
à explorer les différents éléments et à les traduire à mesure, notamment
les <P> vont devenir des Labels ASP (ça ne serait pas déjà fait quelque
part, ça, des fois, la correspondance entre les balises HTML et les
contrôles ASP ? Peut-être avec plus ou moins de bonheur, mais ...)



A la base toutes les balises de ASP .NET produise du XHTML pur et dure...
Si la page généré n'est pas du XHTML, cela vient de votre code ASP que vous
avez mal

Cordialement

--
Gilles TOURREAU - MVP C#


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Delf
Gilles TOURREAU [MVP] avait soumis l'idée :

A la base toutes les balises de ASP .NET produise du XHTML pur et dure...



Hahaha ça me rapelle les soit-developpeurs de *site Web en ASM32* qui
disent que le code Html via ASP.NET n'est pas 'propre' !

--
Delf
1 2