• TwitterRSS
  • Domů na Webylon
  • Kritika W3C
  • Evangelizace, HTML 5
  • Levoboček

    1. října 2006

    Ježíšek existuje! Přáli jste si něco? [K.07] Inteligentní formuláře? Bohatší sémantiku? Interaktivní komunikaci klient-server?

    Konsorcium před devíti lety umrtvilo vývoj HTML. Reformulace nikoho nezajímá, modularizace nikoho nezajímá a tempem couvající želvy připravované XHTML 2 na nic nenavazuje, přestože také nikoho nezajímá. Není-li na poptávku schopno reagovat konsorcium, musí někdo jiný.

    Iniciativy se chopilo uskupení Web Hypertext Application Technology Working Group, zkráceně WHAT WG. Mluvčím a hlavním editorem je Ian Hickson, spoluautor CSS 2.1, bývalý zaměstnanec Nadace Mozilla i Opera Software. Opravdový živý guru.

    První zmínky

    O dění kolem WHAT WG psal na Lupě již před dvěma lety Petr Staníček:

    Vývojáři přidali funkce do jádra prohlížeče Safari a rozšířili tak vlastně jazyk HTML o několik svých vlastních prvků, např. prvek <canvas> nebo atributy composite, contenteditable atd. Tedy něco, co třeba Microsoft dělá se svým Internet Explorerem jako na běžícím páse.

    — Pixy, Průkopníci zítřka a vězni včerejška, Lupa, 13. července 2004

    Celý článek „děsil“ čtenáře tím, že Safari nastartuje ustrnulý vývoj HTML. Výroky o běžícím pásu jsou úsměvné uvážíte-li, že posledními vlastními elementy Microsoftu, které se nedostaly do žádného W3C doporučení, byly <marquee> a <bgsound> z roku 1995 a z přidáváných atributů si téměř žádný nevybudoval špatnou pověst.

    Pixy také poukázal na své značné neznalosti značkovacích jazyků:

    Doba, kdy si každý výrobce živelně a po svém dělal s jazykem HTML, co ho zrovna napadlo, je dávno pryč. Přitom dnešní technologie pro podobná proprietární rozšíření poskytují i "slušná" řešení. Jedním z nich jsou jmenné prostory (namespaces) jazyka XML. Zjednodušeně řečeno - namísto toho, aby výrobce zasahoval do pevně kodifikovaného jazyka, jakým HTML či XHTML jsou, vytvoří si nad XML jazyk vlastní. Ten může být XHTML velmi podobný, ale regulérně už může obsahovat i libovolné dodatečné funkce. Laikům se může zdát, že v tom zas takový rozdíl není, ale ve skutečnosti je ten rozdíl opravdu principiální. Výrobce své dokumenty odkazem na vlastní definici jmenného prostoru (DTD) deklaruje jako jakési „MojeHTML“ a nikoli jako (X)HTML, a nepředělává si tak podle svých okamžitých potřeb platné „oborové normy“.

    — Pixy, Průkopníci zítřka a vězni včerejška, Lupa, 13. července 2004

    Takhle to dopadá, když se evangelizátor zamotá do vlastních sítí.

    Odvodit si vlastní jazyk od existujícího pomocí jmenných prostorů nejde. Můžete si vyrobit naprosto jiný jazyk se stejně nazvanými elementy, který ovšem nikdy nebude kompatibilní s žádným XHTML prohlížečem — váš vlastní <a href="url">odkaz</a> nebude nikde jinde fungovat. Nebo můžete vymyslet jen pár nových elementů uvnitř svého jménného prostoru a ty začlenit do XHTML dokumentu, tj. místo <canvas> mít třeba <canvas xmlns="urn:x-apple-extension">.

    Je-li rozšiřování HTML špatné proto, že výsledek není validní proti DTD, jsou na tom jmenné prostory úplně stejně. U obou si můžete napsat vlastní DTD (s modularizací nebo bez). Principiální rozdíl může vidět jen laik.

    Závěr článku byl až nechutně optimistický:

    Koncem minulého týdne Dave Hyatt oznámil, že pracovně vytvořili jmenný prostor „Apple HTML-extended“ a nové funkce prohlížeče budou řešit standardními prostředky jazyka XML.

    Přiznávám se, že mě tahle drobná kauza potěšila. Přinejmenším jako důkaz toho, že „to jde“. [...]

    Jen se mi nějak těžko daří představit si, že by se něco podobného mohlo stát i s jiným, nejmenovaným prohlížečem, v jiné, nejmenované firmě, která to, že už není rok 1994, zatím nepostřehla. A to je ten smutnější podtón, který je v téhle písničce stále slyšet.

    — Pixy, Průkopníci zítřka a vězni včerejška, Lupa, 13. července 2004

    Jmenný prostor Davida Hyatta zmizel stejně rychle, jako se objevil. V tichosti. Jeho skutečně korektní implementace by totiž vyžadovala přechod na XHTML. Na skutečné XHTML, které není zpětně kompatibilní [K.27]. Tato kauza názorně ukázala, že to cestou W3C dost dobře nejde.

    Dnes, po dvou letech, se má WHAT WG čile k světu.

    Web Applications 1.0

    Pod označením Web Applications 1.0 je oficiálně známa specifikace, kterou sami autoři občas přezdívají HTML 5. Popisuje rozšíření HTML a objektového modelu dokumentu a dle svých slov by ráda nahradila W3C doporučení HTML 4.01, XHTML 1.x a DOM Level 2 (HTML).

    Jelikož jsou sémantické, strukturální a funkcionální rysy značkovacích jazyků jen zřídka závislé na podkladovém metajazyku, neomezuje se WA 1 na jedinou syntaxi. Dovoluje užít jak XML, tak vlastní formát založený na SGML.

    Přestože HTML podoba HTML 5 jeví známky blízké podobnosti se SGML a XML, je to samostatný jazyk s vlastními rozebíracími pravidly.

    Některé dřívější verze HTML (konkrétně HTML 2 až HTML 4) byly založeny na SGML a užívaly rozebírací pravidla SGML. Jen málo webových prohlížečů (pokud vůbec nějaké) však implementovalo skutečné SGML rozebírání pro HTML dokumenty. Historicky jedinými interprety nakládajícími s HTML přísně jako se SGML aplikací byly validátory. Výsledný zmatek — s validátory žádajícími jednu reprezentaci a s široce rozšířenými prohlížeči interoperabilně implementujícími reprezentaci jinou — vedl k této verzi HTML vracející se k ne-SGML základům.

    WA 1, kapitola Rozebírání HTML dokumentů

    XML podoba WA 1 bývá označována jako „XHTML 5“, v jejím případě se specifikace plně opírá o doporučení XML 1.0. Tuto podobu není dovoleno posílat s MIME typem „text/html“, což její užití na široširém webu značně limituje.

    HTML podoba má dobře definovaný postup parseru. Stávající návrh říká, že HTML 5 dokument by měl začínat řetězcem „<!doctype html>“, bez veřejného identifikátoru a adresy. Jeho validita tedy není ověřitelná klasickým SGML validátorem.

    WA 1 rozšiřuje sortiment elementů a atributů:

    Elementy <section>, <nav>, <article>, <aside>, <header>, <footer>.
    Bratři elementu <div> s jasným sémantickým posláním.
    Element <m>.
    Zvýraznění bez zdůraznění. Dobře využitelné třeba při označování nalezených slov v dokumentu.
    Element <t>.
    Časový údaj: datum a/nebo čas.
    Element <meter>.
    Ukazatel míry. S jistou dávkou inteligence: měl by správně porozumět i číselnému vyjádření uvnitř textu v něm.
    Element <progress>.
    Ukazatel průběhu.
    Element <calendar>.
    Kalendář ve formátu hCalendar (potažmo iCalendar).
    Element <canvas>.
    Kreslení. Podporované už v současné Mozille a Opeře.
    Globální atribut contextmenu.
    Ukazuje na <menu> element, který má být použit jako kontextové menu daného elementu.
    Globální atribut contenteditable.
    Aktivuje WYSIWYG editor, který již dnešní prohlížeče obsahují.
    Atribut ping u odkazů.
    Při kliknutí na odkaz se pošle prázdný HTTP požadavek na adresu (či adresy) v tomto atributu. Server může počítat oblíbenost odkazů.

    Zmizelo proslulé opruzování povinnými atributy: type u elementů <style> a <script> není povinný, oba dva mají dané výchozí hodnoty (hádejte jaké). Stejně tak se stanou nepovinnými prezentační atributy rows a cols u <textarea>.

    Navrhovaná rozšíření DOMu připomínají místy historický dokument, místy sci-fi film:

    Metoda document.write uvnitř právě rozebíraného dokumentu.
    Žádné W3C DOM doporučení toto doposud neřešilo.
    Vlastnost innerHTML.
    Ještě před třemi roky na ni každý správný evangelizátor nadával jako na hnusné proprietální MS rozšíření. Nyní ji spokojeně používá nezanedbatelná část webových aplikací.
    Klientské sessions, objekt globalStorage.
    Takové užitečné „cookies bez cookies“, informace je uložena u klienta a serveru se neposílá, pracuje s ní výhradně JavaScript.
    Drag & drop.
    Události a datové struktury umožňující javascriptovou správu přetahování elementů myší.
    Rozhraní Audio.
    Webová aplikace občas potřebuje vydávat zvuky, tak proč to neusnadnit?
    Serverem vyvolávané JS události.
    Teoreticky nemusí webovou aplikaci obsluhovat uživatel, ale vzdálený server.
    Síťová spojení, rozhraní Connection.
    Umíte si představit chat bez centrálního serveru napsaný v JavaScriptu?

    Je možné, že se WA 1 časem rozpadne na několik dílčích specifikací. Základní myšlenky ovšem nezmizí. Proto uchopte tlustou červenou fixu a škrtněte si ve svých XHTML učebnicích ty „nadějné“ věty, že je HTML mrtvé a že žádná další verze nebude.

    WHAT WG dokazuje, že „to jde“. Bez W3C.

    Web Forms 2.0

    Návrh Web Forms 2.0 je menším bratříčkem WA 1. Obohacuje klasické HTML formuláře o různé inteligentní vymoženosti.

    Nejvýraznější rozšíření postihla element <input>:

    Typy datetime, date, time, month, week.
    Pro pohodlné zadávání různých časových údajů. Serveru dorazí informace v universálním formátu, uživatel se nesplete.
    Typy number a range.
    Pro zadávání čísel a rozsahů. Vedle textového pole by měli být šipečky, takže uživatel může snadno zadávat čísla, aniž by sahal na klávesnici.
    Typy email a url.
    Pro zadávání e-mailů a webových adres. Překvapivě.
    Atribut pattern.
    Obsahuje regulární výraz, proti němuž se automaticky porovná zadaná hodnota. V případě nevyhovění dostane uživatel vynadáno. Při opakovaném přečinu přijde o hlavu, neboť ji stejně neumí používat.
    Atribut required.
    Značí povinné položky formuláře.
    Atribut autocomplete (s hodnotou off).
    Již dnes dobře podporovaný vypínač vestavěného našeptávání.
    Atribut form.
    Jeden formulářový prvek může patřit do vícero formulářů.

    Ve starších prohlížečích jsou neznámé typy <input>ů interpretovány jako <input type="text">, takže k žádné kolizi v kompatibilitě nedochází. S troškou JavaScriptu můžete chování lepších formulářů snadno a krásně obecně emulovat.

    Další zajímavé novinky WF 2:

    Element <datalist> a atribut list u <input>u.
    Kombinace běžného textového pole a vylepšeného <select>u.
    Element <output>.
    Příbuzný elementu <span>, jehož účelem je reprezentace výstupu formulářové činnosti.

    V srpnu 2006 byl návrh WF 2 začleněn do standardizačního procesu konsorcia [B.09].

    Co na to Microsoft?

    Nic. Alespoň zatím oficiálně neprojevil o spolupráci s WHAT WG zájem. A to je teprve ten smutnější podtón, který je v téhle písničce slyšet. Škoda. Ale jeden smutný podtón skvělou písničku nezkazí.

    WA 1 a WF 2 se nikdy nestanou oběťmi Exploreru, jelikož jsou v dostatečné míře zpětně kompatibilní. Historie webdesignu prokazuje, že plynulý vývoj má velmi slušnou šanci dokopat i ty pomalejší výrobce prohlížečů k zázrakům.