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

XHTML - Namespace ?

6 réponses
Avatar
Pierre Goiffon
(je poste ici mais le sujet est peut être plus adapté au groupe XML ? Si
c'est le cas toutes mes excuses, ne pas hésiter à rediriger)

Je viens ici demander des éclaricissements sur ce qu'est un namespace. J'ai
lu ces documents :
http://searchwebservices.techtarget.com/sDefinition/0,,sid26_gci213711,00.html
http://www.w3.org/TR/xhtml1/#well-formed

Si je comprend bien un namespace c'est comme une DTD, sauf que l'on peut
créer un document utilisant plusieurs namespace c'est ça ?

6 réponses

Avatar
Eric Daspet
Pierre Goiffon wrote:
Si je comprend bien un namespace c'est comme une DTD, sauf que l'on peut
créer un document utilisant plusieurs namespace c'est ça ?



Pas vraiment.
La DTD est faite pour déclarer la grammaire utilisée et permettre aux
moteurs savoir savoir comment s'organisent les divers éléments, à quoi
correspond l'entité X, etc.
Tant qu'on ne met qu'un seul type de données (par exemple du XHTML) dans
le document et que tu connais ce type de donnée avant la lecture (via
l'entête HTTP dans l'exemple du XHTML/Web), ça suffit tout à fait (à
vrai dire ça n'est même pas vraiment utile).

Les espaces de noms c'est pour différencier les balises, dire que la
balise X est une balise XHTML, que la balise Y est une balise SVG et que
la balise Z est une balise RDF. Ça peut être pour pouvoir toutes les
mélanger dans un même document, ou simplement pour pouvoir fournir un
document en disant uniquement que c'est du XML et laisser le moteur
déterminer tout seul à quoi correspond quelle balise.

Potentiellement <abracadabra> est défini dans plein de langages XML (et
potentiellement partout vu que chacun peut créer ses propres balises
pour ses besoins personnels). L'espace de nom c'est pouvoir dire "cette
balise là c'est du XHTML".
Pour faire cette relation on a un identifiant qui symbolise le XHTML
(http://www.w3.org/1999/xhtml), on crée un préfixe qu'on associe à cet
identifiant (xmlns:monprefixe="http://www.w3.org/1999/xhtml"). Par la
suite quand je dis <monprefix:mabalise> le moteur sait que ma balise est
du XHTML et pas du SVG ou autre chose, il peut donc éventuellement lui
donner un sens précis (c'est bien le but) si il connait le format en
question.
Parti de là il y a une méthode qui permet de définir un préfixe par
défaut quand on ne précise rien (xmlns="http://www.w3.org/1999/xhtml"),
c'est ce qu'on utilise en général en XHTML. Dans ce cas là toutes les
balises sans préfixes appartiennent à cet identifiant / ce format.


--
Eric Daspet
Venez aider notre mangeur de cigogne sur http://mangeur-de-cigogne.info/
Avatar
Pierre Goiffon
"Eric Daspet" a écrit dans le message
de news:409a268a$0$17918$

Tout d'abord, merci de cette réponse rapide et complète !

Pierre Goiffon wrote:
Si je comprend bien un namespace c'est comme une DTD, sauf que l'on
peut créer un document utilisant plusieurs namespace c'est ça ?



Pas vraiment.



OK c'est compris

Les espaces de noms c'est pour différencier les balises, dire que la
balise X est une balise XHTML, que la balise Y est une balise SVG et
que la balise Z est une balise RDF.



Ok ! Mais alors si je comprend bien, les navigateurs doivent concerser une
relation entre les namespace et quelques chose comme une DTD ou un schema ?
Ou est-ce que cela est définit dans le namespace lui même ?
Et aussi, pourquoi imposer le doctype si l'on a un namespace ?

Parti de là il y a une méthode qui permet de définir un préfixe par
défaut quand on ne précise rien



Toutes mes excuses, pas bien compris ce dernier point ?
Avatar
Eric Daspet
Pierre Goiffon wrote:
Ok ! Mais alors si je comprend bien, les navigateurs doivent concerser une
relation entre les namespace et quelques chose comme une DTD ou un schema ?



En XML la DTD n'est pas nécessaire pour interprêter un document bien
formé (modulo le décodage des entités). La DTD sert uniquement pour les
entités et pour que le moteur puisse prévoir ce qui va arriver (et
éventuellement optimiser sa navigation). Le doctype sert à savoir qu'il
existe une balise <p> et que la balise <a> a un attribut href. À la
limite si personne ne lui dit il peut le deviner lui même en les
rencontrant.

Le namespace c'est un identifiant qui est relié au sens des balises.
C'est ce qui permet par exemple au navigateur de savoir que le <p> du
XHTML est une balise de type bloc à rendre par défaut avec une marge
réduite en haut et en bas, que le <a href="..."> est un lien et que
quand on clique dessus il faut utiliser le contenu de href pour nouvelle
page, etc.

Et aussi, pourquoi imposer le doctype si l'on a un namespace ?



J'ai découvert il y a peu que les doctypes sont effectivement
obligatoires en HTML (après m'être trompé en affirmant le contraire), à
ma connaissance ce n'est pas vrai globalement pour le XML.

Ceci dit le doctype a bien un but différent. Le XHTML 1.0 et 1.1 ont des
DTD différentes (les contraintes de structures sont légèrement
différentes) mais le même espace de nom (le sens des éléments est le
même, ou au moins compatible).

D'autres corrigeront si je dis des bêtises ici

Parti de là il y a une méthode qui permet de définir un préfixe par
défaut quand on ne précise rien




Toutes mes excuses, pas bien compris ce dernier point ?



Exemple en xhtml :

- On spécifie un préfixe (x), on l'associe à l'identifiant du XHTML
(http://www.w3.org/1999/xhtml) et on spécifie le préfixe x pour toutes
les balises XHTML :

<x:html xmlns:x="http://www.w3.org/1999/xhtml">
<x:head>
<x:title>titre</x:title>
</x:head>
<x:body>
<x:p>hello</x:p>
<x:body>
<x:html>


- la notation précédente est inutilement lourde, ce qu'on fait
normalement c'est qu'on donne l'identifiant du XHTML sans l'associer à
un préfixe (il n'y a plus le ":x" après le "xmlns"). Dans ce cas là
toutes les balises qui n'ont pas de préfixe seront associée à cet
identifiant (et donc comprise comme du XHTML)

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>titre</title>
</head>
<body>
<p>hello</p>
<body>
<html>

Je te propose de regarder le tutoriel de zvon.org sur les namespace, il
décrit bien le fonctionnement de tout ça.

--
Eric Daspet
Venez aider notre mangeur de cigogne sur http://mangeur-de-cigogne.info/
Avatar
Pierre Goiffon
"Eric Daspet" a écrit dans le message
de news:409a3d00$0$18304$
Et aussi, pourquoi imposer le doctype si l'on a un namespace ?



J'ai découvert il y a peu que les doctypes sont effectivement
obligatoires en HTML (après m'être trompé en affirmant le contraire),
à ma connaissance ce n'est pas vrai globalement pour le XML.


(...)
Le XHTML 1.0 et 1.1 ont des
DTD différentes (les contraintes de structures sont légèrement
différentes) mais le même espace de nom



En fait je posais la question car j'ai lu (peut être mal) ceci :
http://www.w3.org/TR/xhtml1/#strict

Mais si j'ai bien compris votre message, en XHTML il suffit que le document
soit bien formé (cad répondant aux règles de XML ?), pas obligatoire qu'il
soit un "Strictly Conforming XHTML Document" ? Donc ces règles de conformité
(? pas sûr de la traduction française) ne sont pas obligatoires ?

Parti de là il y a une méthode qui permet de définir un préfixe par
défaut quand on ne précise rien



Toutes mes excuses, pas bien compris ce dernier point ?



Exemple en xhtml :


(...)

Très clair ! Merci !

Je te propose de regarder le tutoriel de zvon.org sur les namespace



Je regarde ça ce soir

Au passage, merci milles fois de tous ces renseignements et du temps pris à
répondre !
Avatar
Eric Daspet
Pierre Goiffon wrote:
En fait je posais la question car j'ai lu (peut être mal) ceci :
http://www.w3.org/TR/xhtml1/#strict

Mais si j'ai bien compris votre message, en XHTML il suffit que le document
soit bien formé (cad répondant aux règles de XML ?), pas obligatoire qu'il
soit un "Strictly Conforming XHTML Document" ? Donc ces règles de conformité
(? pas sûr de la traduction française) ne sont pas obligatoires ?



Ces règles de conformité sont là explicitement pour le XHTML. Un
document XHTML doit avoir un doctype. Ce que je voulais dire c'est que
la règle ne venait pas du XML, ce n'est pas forcément obligatoire pour
d'autres formats. Cette obligation n'est donc pas quelque chose qui a
forcément à voir avec la nature des espaces de noms ou des DTD.

Pour le XHTML je pense que ça vient des entités. Pour un minimum de
compatibilité avec le HTML il faut que le XHTML supporte les entités
classiques comme &eacute;. Sauf que ces entités sont définies par la
DTD, sans la DTD un moteur XML générique pourrait ne pas comprendre les
entités et rendre le doc plus ou moins inutile.
(c'est mon interprétation, rien de plus).

--
Eric Daspet
Venez aider notre mangeur de cigogne sur http://mangeur-de-cigogne.info/
Avatar
Pierre Goiffon
"Eric Daspet" a écrit dans le message
de news:409a4eb8$0$21094$
En fait je posais la question car j'ai lu (peut être mal) ceci :
http://www.w3.org/TR/xhtml1/#strict



Ces règles de conformité sont là explicitement pour le XHTML. Un
document XHTML doit avoir un doctype. Ce que je voulais dire c'est que
la règle ne venait pas du XML, ce n'est pas forcément obligatoire pour
d'autres formats.



OK, merci de la précision

Et merci encore de tous ces renseignements !

Bien cordialement,
P. Goiffon