5546 sujets

Sémantique web et HTML

Hello à tous,

je vois ça et là que divers sites se mettent au HTML 5 avec des résultats intéressants. J'avais envie de faire qq essais avec le mien... qui est servi en application:xhtml+xml (enfin, pour les navigateurs le supportant, çàd pas IE !).

Si j'en crois ce que je lis sur plusieurs sites, l'idée sera pour le navigateur de voir le type MIME envoyé pour choisir entre HTML5 et XHTML5.

Le doctype HTML5
<!DOCTYPE html>
ne serait même pas nécessaire pour XHTML5... je me dis, pourquoi pas... seulement, après qq essais, je déchante vite :

Firefox sans Doctype me balance une erreur de validation XML dans la tête pour une page servie en application:xhtml+xml. Si j'essaie avec le doctype ci-dessus, erreur d'analyse XML aussi.

Y a une solution (j'ai p-e compris de travers), ou XHTML5 soit HTML5 servi en application:xhtml+xml... c'est vraiment pas encore pour maintenant ?

Merci pour vos éclairages !
Un document HTML servi en tant que XML, que ce soit du XHTML 1.0, du XHTML 1.1 ou du XHTML 5, doit comporter le prologue XML. Autrement dit, pour un document XHTML 5, tu auras la structure de base suivante :
<?xml version="1.0" encoding="utf-8"?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Cette page est du HTML 5 servi en tant que XML</title>
</head>
<body>
</body>
</html>

Modifié par Victor BRITO (26 Feb 2010 - 12:20)
Bonjour,
Victor BRITO a écrit :
Un document HTML servi en tant que XML, que ce soit du XHTML 1.0, du XHTML 1.1 ou du XHTML 5, doit comporter le prologue XML.

Pour un document qui est représenté en codage UTF-8, le prologue n'est pas indispensable.
J'ai bien mis mon prologue, pas de souci là-dessus.

J'ai quelques curiosités : je me prends des erreurs d'analyse XML sous Firefox sur certaines entités HTML comme l'espace insécable ( ), si je les enlève, ça roule (bizarre, pas eu ce problème avec XHTML 1 Strict servi en application/xhtml+xml).

Par contre, le validateur W3C (alors qu'il accepte bien le HTML5) m'indique que mon document de base est valide (normal, il l'était déjà), mais vu l'absence de doctype : il utilise le XHTML transitional par défaut...


J'ai ce genre de message d'erreur aussi si j'ajoute des éléments HTML5 :

Line 44, Column 10: Attribute "id" exists, but can not be used for this element.
 <nav id="bandeau">

Line 44, Column 19: element "nav" undefined. Did you mean "caption" or "acronym"?
 <nav id="bandeau">


Le validateur W3C ne digère pas ? En tout cas, HTML Validator est à la ramasse... Smiley sweatdrop
Modifié par Nico3333fr (26 Feb 2010 - 13:10)
Victor BRITO a écrit :
Pour l'espace insécable, essaie de remplacer &nbsp; par &#160;


Bien vu pour ça !

Par contre, le validateur est toujours à la ramasse... j'ai l'impression qu'il n'arrive pas à détecter que c'est du HTML5 revu à la sauve XML...

Un peu trop en avance ?
Normalement tu as un menu pour lui dire quel (x)html tu vas utiliser, ça lui évite de passer en autodetect et de dire n'importe quoi. Smiley cligne

Pour les espaces insécables, tu n'es pas obligé d'utiliser les entités, tu peux les taper directement :

*alt 0160 pour windows
*alt espace pour mac



Et il ne faut pas de prologue en xhtlml5 Smiley smile
Modifié par Patidou (26 Feb 2010 - 13:59)
A quoi ça sert le prologue ? xhtml5 n'est il pas juste du html 5 écrit en xml (je ferme proprement mes balises écrit en minuscule) ?
MoOx a écrit :
A quoi ça sert le prologue ? xhtml5 n'est il pas juste du html 5 écrit en xml (je ferme proprement mes balises écrit en minuscule) ?


Il y a ça mais aussi les attributs qui doivent avoir une valeur, etc.
Modifié par Patidou (26 Feb 2010 - 14:46)
Avec ou sans prologue, ça ne change pas grand chose... et y a pas l'option XHTML5 pour valider. Smiley lol

Si je valide en HTML5, ça me balance pas mal d'erreurs, notamment :

-acronym est obsolète, (pas trop grave)
-le meta content-language est obsolète (pas trop grave)
-il faut que je double tous mes attributs xml:lang="en" avec des attributs lang="en" (je suppose dû au mode de validation via HTML et non XHTML... ça par contre, ça me fait bien ch...) et c'est incohérent avec le validateur mobile, qui lui me demande de ne pas les doubler et de virer les lang="en".

Curiosité, le validateur ne tolère pas mon étiquetage ICRA :
 <meta http-equiv="pics-Label" content='(pics-1.1 "http://www.icra.org/pics/vocabularyv03/" l gen true for "http://www.nicolas-hoffmann.net" r (n 3 s 0 v 0 l 1 oa 0 ob 0 oc 0 od 0 oe 0 of 0 og 0 oh 0 c 1) gen true for "http://www.nicolas-hoffmann.net" r (n 3 s 0 v 0 l 1 oa 0 ob 0 oc 0 od 0 oe 0 of 0 og 0 oh 0 c 1))' />



Beaucoup plus gênant, dès que j'ajoute une balise de type nav ou article (à la place de divs existantes), ça ne plait pas trop à Firefox qui me fait de curieux bugs d'affichage. Par contre, si j'indique dans la CSS :

nav{
display:block;
}

Firefox affiche le tout comme un charme... comme si de rien n'était. Je crois que pour un Vendredi, je ne vais pas oser tester ça sous IE...

EDIT : Ouch, sous IE 6 sans patch, ça fait mal ! Smiley eek Smiley biggol
Avec un petit patch Javascript qui va bien, tout rentre dans l'ordre... comme si de rien n'était. Smiley smile
Modifié par Nico3333fr (26 Feb 2010 - 15:04)
MoOx> je vois qu'on a les mêmes références ! Smiley smile

Curieux pour l'étiquetage ICRA... même en inversant les ' et les " pour que l'attribut soit ainsi :
<meta http-equiv="pics-Label" content="blabla..." /> 
le validateur ne veut rien savoir.

Quand validateur fâché, lui toujours faire ainsi. Smiley langue
Perso je resterais en html5 avec syntaxe xml (c'est valide). Le jour où application/xhtml+xml sera accepté par IE tu enlèveras... Le dotctype et tu remplaceras lang="" par xml:lang="".
Il y a encore des gens qui font du application/xhtml+xml, servi en text/html pour IE? Il sert à quoi le application/xhtml+xml dans ce cas précis? Tu utilises des fonctionnalités XML précises? Ou c'est juste pour l'exercice?
Florent V. a écrit :
Il y a encore des gens qui font du application/xhtml+xml, servi en text/html pour IE? Il sert à quoi le application/xhtml+xml dans ce cas précis? Tu utilises des fonctionnalités XML précises? Ou c'est juste pour l'exercice?


Oui, il y en a encore... moi et mon site personnel ! Smiley lol

En fait, c'était à l'époque déjà pour l'exercice (vu que je ne risquais pas d'avoir de telles exigences en milieu professionnel, on ne m'a jamais demandé ce genre de contrainte stricte), c'était pour en avoir au moins une fois fait un site ainsi... et pour atteindre un objectif de conformité absolue "de facto" pour mon site personnel au passage.

Et pour être franc, ça m'embêterait de perdre cet aspect... maintenant qu'il est atteint, c'est assez facile pour moi de garder cette conformité.
Même si HTML5 a des arguments qui me plaisent bien (notamment les balises sémantiques comme nav), j'aimerais profiter de HTML5 via XHTML5.

En plus, ça me permettrait de prétendre que j'ai fait faire à mon site un bon technologique de 4 versions d'un coup... vu qu'il passerait de XHTML1 à XHTML5. Smiley biggol (et je sors pour cette bêtise ==>[])
Modifié par Nico3333fr (26 Feb 2010 - 22:57)
Nico3333fr a écrit :
pour atteindre un objectif de conformité absolue

Fais du HTML 2.0 valide, et tu auras également atteint la conformité absolue. Ça sera absolument conforme à HTML 2.0. Smiley smile
Sans vouloir te peiner, c'est un peu n'importe quoi cet objectif.
C'est à dire qu'être conforme à un standard choisi c'est bien. Mais considérer un standard ou une variation d'un standard comme plus pur que les autres, ça n'a pas de sens. Il faut juger des qualités des standards disponibles, qualités théoriques et pratiques, et choisir en connaissance de cause. Le fait que 1.1 soit numériquement supérieur à 1.0 ne veut pas dire qu'il est pertinent de faire du XHTML1.1. La présence d'un X dans le nom ne veut pas dire que faire du XHTML est plus pertinent que faire du HTML. Ça vaut aussi pour HTML5 vs HTML4.

Nico3333fr a écrit :
Même si HTML5 a des arguments qui me plaisent bien (notamment les balises sémantiques comme nav), j'aimerais profiter de HTML5 via XHTML5.

OK. Par contre, ça veut dire que si tu veux tout de même servir ton site aux agents utilisateurs qui acceptent text/html mais pas application/xhtml+xml, il faudra servir ton site en HTML5 pour ceux-là. Contrairement à XHTML1, XHTML5 ne peut pas être servi en text/html (et c'est très bien).
Modifié par Florent V. (27 Feb 2010 - 10:12)
Florent V. a écrit :

Fais du HTML 2.0 valide, et tu auras également atteint la conformité absolue. Ça sera absolument conforme à HTML 2.0. Smiley smile
Sans vouloir te peiner, c'est un peu n'importe quoi cet objectif.


Je fais encore ce que je veux sur mon site personnel. J'avais envie d'expérimenter un truc, juste pour le plaisir d'expérimenter. J'ai jamais dit que ma démarche était utile en soi, en tout cas, pas plus que dessiner une maison avec des divs. Smiley rolleyes
Quand je parle de conformité "absolue" (le mot est à double sens), c'était plutôt de voir ce qu'impliquait une conformité "obligée" si tu préfères.

Et comme le web semblait délaisser le HTML pour s'orienter vers XHTML...

Ce qui m'a d'ailleurs conduit à constater de mes propres yeux ce que l'article d'Elie Sloïm sur la surqualité a relaté un peu de temps après, avec beaucoup de justesse d'ailleurs.


Florent V. a écrit :

C'est à dire qu'être conforme à un standard choisi c'est bien. Mais considérer un standard ou une variation d'un standard comme plus pur que les autres, ça n'a pas de sens. Il faut juger des qualités des standards disponibles, qualités théoriques et pratiques, et choisir en connaissance de cause. Le fait que 1.1 soit numériquement supérieur à 1.0 ne veut pas dire qu'il est pertinent de faire du XHTML1.1. La présence d'un X dans le nom ne veut pas dire que faire du XHTML est plus pertinent que faire du HTML. Ça vaut aussi pour HTML5 vs HTML4.


Avec tout le respect que je te dois... pourquoi ce jugement aussi rapide ?
Où ai-je dit que je considérais un format plus pur qu'un autre ?
Où ai-je marqué que XHTML 1.1 est supérieur à 1.0 ?

Ma démarche quand j'ai choisi de tester un site servi en application:xhtml+xml était de voir jusqu'à quel point une conformité forcée (de facto, sinon le site ne s'affiche pas) peut impacter la création et la maintenance d'un site, et pour voir ce que ça impliquait de passer au tout XML.


Florent V. a écrit :

OK. Par contre, ça veut dire que si tu veux tout de même servir ton site aux agents utilisateurs qui acceptent text/html mais pas application/xhtml+xml, il faudra servir ton site en HTML5 pour ceux-là. Contrairement à XHTML1, XHTML5 ne peut pas être servi en text/html (et c'est très bien).


On est tout à fait d'accord. D'où la création de ce post : pour voir si ce côté hybride (autant servi en text/html qu'en application:xhtml+xml) est encore envisageable, et dans quelles mesures je peux faire évoluer mon site. Smiley cligne
Modifié par Nico3333fr (27 Feb 2010 - 12:22)
Nico3333fr a écrit :
Avec tout le respect que je te dois... pourquoi ce jugement aussi rapide ?
Où ai-je dit que je considérais un format plus pur qu'un autre ?
Où ai-je marqué que XHTML 1.1 est supérieur à 1.0 ?

Tu ne l'a pas écrit. Je rebondissais sur ta remarque sur la «conformité absolue», que j'ai déjà croisée plusieurs fois sous la plume de personnes qui pensaient qu'un nouveau standard (disons, XHTML 1.1) rendait obsolète les précédents (XHTML 1.0, mais aussi HTML 4...), et était par nature «meilleur» que les précédents.

Nico3333fr a écrit :
On est tout à fait d'accord. D'où la création de ce post : pour voir si ce côté hybride (autant servi en text/html qu'en application:xhtml+xml) est encore envisageable, et dans quelles mesures je peux faire évoluer mon site.

Pour moi c'est une perte de temps du moment où tu n'envisages pas d'utiliser d'autres langages XML dans tes pages XHTML. Mais pour l'exercice, pourquoi pas.

Donc les différences entre servir du HTML5 et du XHTML5:
- Au niveau serveur, tu devras envoyer un en-tête text/html ou application/xhtml+xml (comme tu le fais déjà si j'ai bien compris).
- Tu peux éventuellement indiquer le type de contenu dans une balise META, mais je vois pas trop l'intérêt.
- En text/html, tu auras sans doute un <meta charset="UTF-8">, et en application/xhtml+xml une déclaration XML indiquant le charset.
- La syntaxe <element /> est acceptée en HTML5, donc tu n'auras pas besoin de modifier le contenu (éléments BR, HR, IMG...) pour servir l'un ou l'autre document.
- Par contre je ne suis pas sûr que tu puisse utiliser une section CDATA dans un document HTML5, alors que ce sera indispensable pour un document en XHTML. Donc, pour les scripts, il faudra peut-être les placer tous en dehors de la page, et c'est une contrainte.
- Pour valider ta version XHTML5, tu peux déjà utiliser les navigateurs eux-mêmes, mais il devrait aussi y avoir des validateurs XML génériques qui peuvent être utiles. De mémoire, le validateur du W3C est à la base un validateur SGML (pas forcément très strict), et le mode de validation HTML5 utilise le validateur de validator.nu qui est un validateur spécifique à HTML5, et ne permettant pas de valider des documents XML.
- Je ne sais pas trop ce qu'il faudrait faire pour l'attribut lang. xml:lang est valide en XHTML5 (comme dans tout document XML), mais pas en HTML5. Je ne sais pas si l'attribut lang seul peut être utilisé en XHTML5. Enfin, il semblerait que HTML5 tolère l'écriture xml:lang="AA" lang="AA", c'est à dire l'utilisation des deux attributs avec la même valeur, pour des raisons de compatibilité et de transition XHTML<->XML facilitée.