The WHATWG Blog

Please leave your sense of logic at the door, thanks!

HTML contre XHTML (French)

This is a French translation of HTML vs. XHTML.

L'un des problèmes prédominants soulevés dans un récent appel à commentaires était de parvenir à dépasser le débat HTML contre XHTML, car beaucoup de gens estimaient que nous devions chercher non pas à étendre HTML, mais à nous concentrer sur XHTML seulement.

Cependant, la chose que de nombreuses personnes n'ont pas saisi est que HTML 5 résoud ce problème : la spécification (X)HTML 5 se propose en fait d'étendre simultanément HTML et XHTML, et de ne pas faire dépendre ce choix sur le DOCTYPE.

De nombreux webmasters utilisent un DOCTYPE XHTML 1.0 et s'empressent ensuite d'annoncer qu'ils utilisent XHTML - mais les ce sont les navigateurs eux-mêmes qui font le choix ou non de traiter un document comme du HTML ou du XHTML en se basant sur ... le type MIME. (X)HTML 5 se propose de résoudre ce souci en se reposant exclusivement sur le type MIME - ainsi, si un document est servi comme text/html, il sera parsé comme du HTML ; mais s'il est servi avec un type MIME de type XML, comme application/xml ou application/xhtml+xml, il sera parsé comme du XHTML.

Sérialisation de document

HTML 5 introduit le concept de sérialisation pour un document HTML. Une sérialisation dans ce contexte fait référence à une représentation physique de l'essence même du document : son arborescence. (X)HTML 5 attend des agents utilisateurs qui supportent l'ajout de script qu'ils présentent l'arborescence du document en utilisant l'API DOM et le modèle de données. HTML 5 utilise la sérialisation HTML et XHTML 5 utilise la sérialisation XML. Grâce à cela, la distinction entre HTML et XHTML est réduite.

Dans la plupart des cas, chacun des deux types de sérialisation peut être employé pour représenter exactement le même document. Les différences principales sont que la sérialisation HTML, pour des raisons de compatibilité descendante, ne peut représenter de façon structurée des éléments de niveau "in-line" (alignés les uns à côté des autres, non-blocs) comme étant des enfants des enfants de l'élément <p> et que la sérialisation XML ne peut pas représenter la totalité des arborescences qui pourraient être le résultat d'un document généré à la suite d'une récupération d'erreur de l'algorithme du parseur HTML. De même, dans certains navigateurs, quelques fonctionalités particulières de l'API de scripting et quelques détails dans l'interprétation des styles CSS fonctionnent différemment suivant la sérialisation du document pour des raisons de compatibilité descendante.

La sérialisation XML utilisée par XHTML implique que le document soit bien formé (well-formed) au format XML 1.0. Cependant, contrairement au précédentes versions de HTML, la sérialisation n'est plus considérée comme une application de SGML mais définit à la place sa propre syntaxe. Cette dernière est inspirée par SGML, mais elle est définie d'une manière qui se rapproche plus de la façon dont les navigateurs gèrent HTML dans le monde réel - surtout en ce qui concerne la gestion des erreurs.

La sérialisation d'HTML 5 et les algorithmes de parsing qui l'accompagnent sont rendus nécessaire pour 3 raisons :

  1. Le navigateur qui a pour l'instant la plus forte part de marché ne supporte pas XHTML (du moins celui qui est effectivement servi et traité comme tel).
  2. L'ancien contenu text/html toujours présent sur le web a besoin d'un algorithme de traitement clairement défini - quelque chose que les spécifications HTML basées sur SGML n'ont pas été en mesure de fournir.
  3. Il existe des gestionnaires de contenu (CMS), des applications web et autres workflows qui ne sont pas basés sur des outils XML et sur qui on ne peut compter pour reproduire une sortie bien formée. Ces systèmes peuvent bénéficier des nouvelles fonctionnalités même s'ils ne fonctionnent nécessairement correctement avec la sérialisation XHTML.

D'un autre côté, grâce à la dualité HTML/XHTML, les nouveaux systèmes peuvent être directement conçus pour fonctionner avec des outils XML interne et convertir ensuite vers HTML 5 et à partir de HTML 5 lors des échanges de type entrée/sortie. Une fois que la base des navigateurs installés supportera correctement le type MIME application/xhtml+xml, ces systèmes pourront échanger le sérialiseur de sortie et utiliser des fonctionnalités autorisées seulement par XHTML telles que les listes placées dans des paragraphes.

Le nouveau DOCTYPE

Dans la pratique, le DOCTYPE sert à deux choses : la validation basée sur la DTD et (pour HTML seulement) la détection (sniffing) de DOCTYPE. Puisque HTML n'est plus considéré comme une application de SGML et qu'il y a de nombreuses limitations dans la validation basée sur les DTD, il n'y aura aucune DTD officielle pour (X)HTML 5.

Ainsi, lors de la sérialisation HTML, la seule raison pour laquelle on place un DOCTYPE est d'activer le mode "standard" dans les navigateurs. Du coup, puisqu'elle n'a plus besoin de faire référence à une DTD, la déclaration de type de document se trouve réduite à ceci :

<!DOCTYPE html>

Vous conviendrez avec moi que cette syntaxe est aussi simple qu'elle est facile à retenir. Mais pour XHTML, c'est encore plus simple : il n'y en a pas besoin ! Puisque les navigateur n'ont pas introduit et n'introduiront pas de détection de DOCTYPE pour le XML, il n'y a pas réellement besoin d'un DOCTYPE.

Cependant, il me faut admettre que l'absence de DTD dans XML présente encore un problème technique mineur : les références aux entités qui sont déclarées dans la DTD XHTML 1.0 ne pourront plus être utilisées. Toutefois, puisque les browsers n'utilisent pas de parseurs de validation et ne lisent pas les DTD depuis le réseau de toutes façons, l'utilisation d'entités n'est [de toutes façons] pas recommandée. Il est préférable d'utiliser les références des caractères ou un bon encodage (comme l'utf8) qui supporte nativement les caractères.

Vérification de la conformité

Vous devez sûrement vous demander comment il sera possible de valider la conformité d'un document sans DTD. Eh bien, cela est tout simple : il existe en fait d'autres méthodes, plus robustes, qui sont disponibles pour s'assurer de la bonne formation d'un document. Plusieurs langages de schéma, dont RELAX NG et Schematron pourraient être utilisés. Cependant, même eux ne pourraient exprimer totalement les besoins de (X)HTML 5 en termes d'éléments de conformité qu'il est possible de vérifier avec une machine.

Henri Sivonen est en train de développer un vérificateur de conformité pour HTML 5 qui est conçu pour donner des messages d'erreur qui vont au-delà de ceux qu'il est possible de fournir en utilisant une approche basée sur les DTD. Par exemple, la vérification de l'intégrité d'un tableau est une fonctionnalité qu'il est impossible d'implémenter en utilisant simplement une approche basée sur les DTD.

Read the rest of this entry »

Posted in Conformance Checking, Syntax | 1 Comment »

(X)HTML 5 will have the only usable implementation of ruby markup

One of the misconceptions about the (X)HTML 5 effort is that there will be no noticeable benefits compared to HTML 4 or XHTML 1.0. Here is one thing to prove this wrong. (X)HTML 5 will have the only practically usable implementation of ruby markup. While this maybe won't make too much of a difference in Europe and America, it sure is good news to a pair of billion people in Asia - and a few thousand theologians and historians.

Ian Hickson, the editor of the HTML 5 specification, said on the WHAT WG mailing list just recently: "I have in fact already begun looking at exactly what the parsing and semantic requirements for <ruby> will have to be. It should be added to the spec in the coming weeks." Currently the only browser that natively supports ruby is Internet Explorer, at least somewhat. This should be great news for Microsoft. For once they will actually have a lead compared to Gecko based browsers, Opera, Konqueror or Safari in supporting a part of the HTML 5 spec.

Keith Bowes, in a recent comment on Molly's blog, says:

Personally, I don’t see the point of HTML5. HTML 4 was a big improvement over HTML 3.2: better internationalization, better support for style sheets, more structure and less presentation, some of the more questionable things were removed or put in the dust bin of de facto obsolescence, etc. But I really don’t see where HTML5 is better enough.

A pair of billion Chinese or Japanese speaking people will beg to differ - and a few thousand theologians. Ruby is a big improvement for them. But wait, I may hear. Ruby is not new. It has been part of XHTML 1.1 for many years now. To which I retort: My point exactly! XHTML 1.1 is namely useless! Here is what its spec says: Content must be served with an XML MIME-type, and we all know that one specific browser with a huge market share does not support true XHTML!

If I want to use ruby markup I can (a) serve XHTML 1.1 as text/html, against all rules and have all IE users benefit, or (b) serve it as it should to users of Gecko based browsers, that can support ruby through an extension, or to all CSS savvy browsers using dedicated CSS-rules. But I can't do both!

Since (X)HTML 5 will have two serializations, this problem will cease to exist. I may use ruby markup and still send my content as text/html.

But there is one more lesson to be learned from this. I am a strong advocate of accessibility - after all I am a theologian first and web developer second - but I see that some of my friends have mistrusted HTML 5 because of accessibility features not yet documented in the spec. Ask questions! I did for ruby. If I had gotten a not so positive response I would have argued my case strongly. But please withhold negative judgments for a while. The process is not over yet. The war is not lost.

Finally, how does ruby benefit theologians? As I see things the best way to produce interlinear reproductions of ancient texts - the kind that we grapple with all the time - is to use ruby markup, where the relationship between the ancient word and the translated word is made explicit also within the markup.

Posted in Browsers, Elements | 5 Comments »

Nowe elementy w HTML 5 (Polish)

Nowe elementy w HTML 5 - t?umaczenie artyku?u New elements in HTML 5 z 7.08.2007 zamieszczonego na stronach IBM development.

Posted in WHATWG | Comments Off on Nowe elementy w HTML 5 (Polish)

Automatyczne wykrywanie feedów (Polish)

This is a Polish translation of Feed Autodiscovery, translated by Sebastian Snopek.

Ostatnio dodali?my typy linków do HTML 5. W szczególno?ci zdefiniowali?my mechanizm do automatycznego wykrywania kana?u syndykacyjnego. Automatyczne wykrywanie (Autodiscovery) sta?o si? rozpowrzechnione i szeroko stosowane od momentu swoich narodzin w 2002 roku, stosuj?c element link z powi?zaniem alternatywnym i atrybut type okre?laj?cym rodzaj kana?u.

<link rel="alternate" type="application/atom+xml"
      href="/feed.atom" title="Atom Feed">
<link rel="alternate" type="application/rss+xml"
      href="/feed.rss" title="RSS Feed">

Je?li chodzi o kompatybilno?? wsteczn? musimy zachowa? wsparcie, a szczególnie, zdefiniowa? t? metod?. Jednak?e, istniej? dwa g?ówne problemy z zastosowaniem powi?za? alternatatywnych:

Aby poruszy? t? spraw?, wprowadzili?my nowe powi?zanie kana?u, które wskazuje na to, ?e dokument jest kana?em syndykacyjntm. Pozwala to teraz na linkowanie do wielu kana?ów zawieraj?cych tre?ci, które nie s? koniecznie alternatywnymi wersjami strony.

<link rel="feed" type="application/atom+xml"
      href="/feed/comments" title="All comments">
<link rel="feed" type="application/atom+xml"
      href="/feed/summaries" title="Article Summaries">

Oznacza to równie?, ?e nie trzeba precyzowa? atrybutu type , aby link by? rozpoznany jako kana? syndykacyjny, a przegl?darki mog? go nadal pokazywa? na li?cie subskrypcji.

<link rel="feed" href="/feed" title="Articles">

Inn? korzy?ci? jest to, ?e je?li kiedy? pojawi si? nowy format kana?u syndykacyjnego to nie trzeba b?dzie czeka? na aktualizacje przegl?darki nowym typem MIME, aby przgl?darka traktowa?a go jako kana?. Na przyk?ad: je?li czytelnicy twojego kana?u maj? wsparcie mikrofoormatu hAtom, mo?na przeprowadzi? subskripcje dokumentu HTML , który zosta? zalinkowany jako kana?.

<link rel="feed" type="text/html"
      href="/feed.html" title="All comments">

Aby zachowa? kompatybilno?? wsteczn?, definicja alternate mówi, ?e je?li u?ywa si? go w kombinacji z atrybutem type z warto?ci? application/rss+xml lub application/atom+xml to jest on równie? s?owem kluczowym dla kana?u.

S?owo kluczowe kana?u mo?e by? równie? u?ywane w kombinacji z alternate mówi?c, ?e jest to kana? dla danego dokumentu.

<link rel="feed alternate" type="application/atom+xml"
      href="/feed.atom" title="Atom Feed">

Jednak?e, wa?nym jest aby nie myli? tego z tym jak dzia?aj? arkusze alternatywne. Zachowanie rel="alternatywnego arkusza stylów" jest przypadkiem wyj?tkowym wtedy, gdy u?ycie alternate nie oznacza alternatywnej reprezentacji samego dokumentu. Je?li u?ywa si? go z arkuszem stylów, to warto?? type nie jest równa warto?ci kana?u.

<link rel="alternate stylesheet" type="application/atom+xml"
      href="/feed.atom" title="This is not a feed!">

Mozilla ju? raportowa?a bagi zwi?zane z implementacj? nowego powi?zania feedu a poprawki do rel="alternatywnych arkuszy" s? planowanie w nowym Firefox 3.0.

Posted in Browsers, Elements | Comments Off on Automatyczne wykrywanie feedów (Polish)

The Schema and Conformance Checker Project Migrates to SVN

The RELAX NG / Schematron schema project for (X)HTML5 as well as the conformance checker project have moved from CVS to SVN. The build script has been updated. (Needs a new checkout from SVN.)

Posted in Conformance Checking, Syntax | 2 Comments »