Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

problème bizarre </head><body>...</body> disparaissent

4 views
Skip to first unread message

Une Bévue

unread,
Mar 7, 2012, 8:35:31 AM3/7/12
to
problème bizarre sur Google Chrome (extensions désactivées) ET Safari.
la source, dans un éditeur de texte :
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="fr" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"/>
...
<link rel="stylesheet" href="/AB2Html/css/form.css"
type="text/css"/>
<script src="/AB2Html/js/form.js" type="text/javascript"/>
</head>
<body style="direction: ltr;">
<div id="header">
...
</body>
</html>

le document est produit par xslt, les balises sont bien balancées.

ce que voient ces deux navigateurs (firebug) :

<html lang="fr" xml:lang="fr">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Carnet d'adresses d'Yvon Thoraval</title>
<meta name="robots" content="index,follow"/>
<meta name="language" content="fr"/>
<meta name="author" content="Yvon Thoraval"/>
<meta name="generator" content="cousu main"/>
<meta name="description" content="AB2Html est une application Ruby de
publication du Carnet d'adresses MacOS X"/>
<meta name="Keywords" content="Carnet d'adresse, Address Book"/>
<link rel="shortcut
icon" href="/AB2Html/Images/AddressBook.ico" type="images/x-icon"/>
<link rel="icon" href="/AB2Html/Images/AddressBook.ico" type="image/x-ic
on"/>

<style>
<link rel="stylesheet" href="/AB2Html/css/styles.css" type="text/css"/>
<link rel="stylesheet" href="/AB2Html/css/theme.css" type="text/css"/>
<link rel="stylesheet" href="/AB2Html/css/form.css" type="text/css"/>

<script src="/AB2Html/js/form.js" type="text/javascript">
</head>
<body style="direction: ltr;">
<div id="header">
...
</body>
</html>
</script>
</head>

<body></body>
</html>

donc là il y a DEUX <body>...</body>

le premier coincé entre <script ... et </script>

et le second qui provient de firebug...

si j'affiche la source, elle est "normale".

que j'actionne - OU PAS - la console dev web, rien ne s'affiche sur le
butineur.

idem si je supprime xml et dtd :
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

le contenu de mon script "form.js" :
window.onload=setup;
var sty;
function setup(){
sty=document.getElementById('search_div').style;
search_switch();
document.getElementById('search_button').onclick=search_switch;
}
function search_switch(){
sty.display=(sty.display=='')? 'none' : '';
}


si je supprime ce script en supprimant :
<script src="/AB2Html/js/form.js" type="text/javascript"/>
ça redevient "normal"...
normal au sens de pas de <body/> dans <script/>...

--
« Si tous ceux qui n'ont rien n'en demandaient pas plus,
il serait bien facile de contenter tout le monde. »
(Coluche)

Une Bévue

unread,
Mar 7, 2012, 8:49:16 AM3/7/12
to
Une Bévue <unbewus...@fai.invalid> wrote:

> si je supprime ce script en supprimant :
> <script src="/AB2Html/js/form.js" type="text/javascript"/>
> ça redevient "normal"...
> normal au sens de pas de <body/> dans <script/>...

ça redevient "normal" si au lieu de :
<script src="/AB2Html/js/form.js" type="text/javascript"/>
(balise auto feermante)
j'ai :
<script src="/AB2Html/js/form.js" type="text/javascript"></script>

Une Bévue

unread,
Mar 7, 2012, 9:02:50 AM3/7/12
to
Une Bévue <unbewus...@fai.invalid> wrote:

> ça redevient "normal" si au lieu de :
> <script src="/AB2Html/js/form.js" type="text/javascript"/>
> (balise auto feermante)
> j'ai :
> <script src="/AB2Html/js/form.js" type="text/javascript"></script>

c'est résolu en changeant ma feuille xsl :
<script src="/AB2Html/js/form.js" type="text/javascript"><![CDATA[<!--
javascript -->]]></script>
afin d'éviter autofermeture de <script />

Olivier Miakinen

unread,
Mar 8, 2012, 12:01:01 PM3/8/12
to
Bonjour,

Le 07/03/2012 14:35, Une Bévue a écrit :
> problème bizarre sur Google Chrome (extensions désactivées) ET Safari.
> la source, dans un éditeur de texte :
> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> <!DOCTYPE html
> PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
> <html lang="fr" xml:lang="fr">
> <head>
> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
^^^^^^^^^^

> ...
> <link rel="stylesheet" href="/AB2Html/css/form.css"
> type="text/css"/>
> <script src="/AB2Html/js/form.js" type="text/javascript"/>
^^

Tu déclares ta page comme étant du HTML, ce qui fait qu'elle n'est pas
passée à un parseur XML mais considérée comme une soupe de balises HTML
(du HTML avec erreurs, quoi). Or, dans ce cas, le « / » de fin d'une
balise vide est en principe ignoré, et ton <script> est considéré comme
non fermé car il lui manque le </script>.

Si tu tiens absolument au XHTML, alors il vaudrait mieux le déclarer
comme tel afin de bénéficier du contrôle plus strict du parseur (et
afin que ton code ne soit pas considéré comme une soupe de balises).

Voir par exemple <http://www.hixie.ch/advocacy/xhtml.fr/>.

Cordialement,
--
Olivier Miakinen

Olivier Miakinen

unread,
Mar 8, 2012, 1:50:17 PM3/8/12
to
Le 08/03/2012 18:01, je répondais à La Bévue :
>>
>> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
> ^^^^^^^^^^
> Si tu tiens absolument au XHTML, alors il vaudrait mieux le déclarer
> comme tel afin de bénéficier du contrôle plus strict du parseur (et
> afin que ton code ne soit pas considéré comme une soupe de balises).

Je précise deux choses quand même :
- il ne faut pas le faire tant que tu voudras que ta page soit visible
dans Internet Explorer (au moins jusqu'à la version 8, je ne sais pas
si c'est corrigé dans IE 9) ; ou alors tu dois sniffer le type de
navigateur pour ne l'envoyer qu'à ceux qui supportent ce Content-Type.
- changer le <meta> ne servira à rien si ton serveur déclare aussi
un Content-Type dans les entêtes HTTP, ce qu'il devrait faire en
principe ; tu dois aussi (et même surtout) changer celui-là.

Tu peux aussi décider de rester en HTML (version soupe de balises si ton
Doctype déclare XHTML, version propre s'il déclare HTML 4.01 Strict).

Cordialement,
--
Olivier Miakinen

Une Bévue

unread,
Mar 9, 2012, 1:25:30 AM3/9/12
to
Olivier Miakinen <om+...@miakinen.net> wrote:

>
> Tu déclares ta page comme étant du HTML, ce qui fait qu'elle n'est pas
> passée à un parseur XML mais considérée comme une soupe de balises HTML
> (du HTML avec erreurs, quoi). Or, dans ce cas, le « / » de fin d'une
> balise vide est en principe ignoré, et ton <script> est considéré comme
> non fermé car il lui manque le </script>.
>
> Si tu tiens absolument au XHTML, alors il vaudrait mieux le déclarer
> comme tel afin de bénéficier du contrôle plus strict du parseur (et
> afin que ton code ne soit pas considéré comme une soupe de balises).
>
> Voir par exemple <http://www.hixie.ch/advocacy/xhtml.fr/>.

OK, merci, j'avoue que je me fiche un peu d'être ou ne pas être en
xhtml, vu que le code html produit est nécessairement bien balancé car
produit par saxon.

comme il n'est pas sûr qu'-x-html ait un intérêt je vai sans doute
passer à html 4.x.x strict.

en tout cas pour la balise auto fermante <script ... />
c'est la première fois que ça m'arrive, je veux dire que seul
"saxon9he.jar" m'a transformé cette balise en autofermante.

je veux dire que la ligne xsl :
<script src="/AB2Html/js/form.js" type="text/javascript"/>

a été transformée en :
<script src="/AB2Html/js/form.js" type="text/javascript"></script>
aussi bien par le proc xslt Ruby que Php.

alors que saxon lui, autoferme :
<script src="/AB2Html/js/form.js" type="text/javascript"/>
càd laisse comme la ligne était dans le code, il a même fallu ruser pour
obtenir un balisage non autofermant :

Une Bévue

unread,
Mar 9, 2012, 1:25:30 AM3/9/12
to
Olivier Miakinen <om+...@miakinen.net> wrote:

>
> Je précise deux choses quand même :
> - il ne faut pas le faire tant que tu voudras que ta page soit visible
> dans Internet Explorer (au moins jusqu'à la version 8, je ne sais pas
> si c'est corrigé dans IE 9) ; ou alors tu dois sniffer le type de
> navigateur pour ne l'envoyer qu'à ceux qui supportent ce Content-Type.

ces pages-là, privées, ne sont pas vues par IE.

> - changer le <meta> ne servira à rien si ton serveur déclare aussi
> un Content-Type dans les entêtes HTTP, ce qu'il devrait faire en
> principe ; tu dois aussi (et même surtout) changer celui-là.

ah oui dans ma config apache, ça voudrait dire que soit je mets une
extension "xhtml" à ces fichiers, pour les servir en application xml,
soit je suppose, ce qui n'est pas le cas, que toutes mes pages, sur un
serveur donné sont en xhtml.

> Tu peux aussi décider de rester en HTML (version soupe de balises si ton
> Doctype déclare XHTML, version propre s'il déclare HTML 4.01 Strict).

Là, je ne pige pas du tout cette phrase.

en tout cas merci pour ces précisions.
0 new messages