• TwitterRSS
  • Domů na Webylon
  • Kritika W3C
  • X(HT)ML
  • Stokrát dobrý dort

    10. června 2006

    Jmenné prostory umožňují mísit více XML aplikací v jednom dokumentu. Známá věc. Známá je tedy především jako stěžejní výhoda XHTML. Co je vlastně na ní tak zázračného?

    Zapomeňte teď, že doporučení XHTML 1.0 a 1.1 neumožnují striktně vyhovujícímu dokumentu, aby jiné jmenné prostory užíval. Zapomeňte na přízemní pojetí validity. XHTML dokument s jinými jmennými prostory podle specifikací stejně musí fungovat. Zauvažujte, jaké jsou praktické dopady.

    Vektorová grafika, hurá!

    Aneb SVG, Scalable Vector Graphics. Můžete v tomtéž kódu zaznamenat sémantiku webového dokumentu a vektorový obrázek zároveň. Jaká to nádhera. Vychutnejte si to splynutí včas. Pocit nadšení bude pomíjivý. Filosofie „vše v jednom“ má zjevné nedostatky:

    Podobná, byť o něco mírnější, negativa najdete i u matematických vzorců psaných v MathML.

    Bez alternativy

    Copak se stane, pokud prohlížeč nepodporuje SVG? Vypíše obsah neznámých elementů, tedy vlastně jen vezme v úvahu elementy <svg:title> a <svg:desc>, které jsou jinak skryté a do nichž tedy jde schovat alternativní XHTML kód. Příjemná náplast. Ovšem ve světě jmenných prostorů téměř ojedinělá.

    V MathML je poskytování alternativy krkolomnější: nepodporující prohlížeč vypíše obsah neznámých elementů, tedy všechna písmenka, čísla a znaménka tvořící vzoreček. Pěkně za sebou, tak, jak jsou ve zdrojovém kódu, neřekne-li stylopis jinak — a stylopis jinak neřekne, protože nikdy neví, jestli je MathML vyobrazeno jako vzoreček nebo jako text. MathML neobsahuje žádný element, který by zůstal v podporujícím prohlížeči ignorovaný/skrytý.

    Ani pokročilé formuláře XForms nepřemýšlí nad situací, že by prohlížeč jejich elementy neznal. Prostor k XHTML alternativě nenabízí. Chudák návštěvník pak čumí na texty „Zadejte heslo“, „Jaké máte číslo bot“ a nikde nevidí žádné kolonky k vyplňování.

    Obecně vzato: u jmenných prostorů, jejichž definice očekává ovlivnění prezentace či funkce stránky, neexistuje obecná cesta k poskytnutí alternativy a tyto jmenné prostory málokdy zohledňují nepodporující prohlížeče. Tento fakt citelně degraduje jejich reálnou využitelnost na široširém World Wide Webu.

    Staronové řešení

    V XHTML naštěstí existuje element, který všechny zmíněné nedostatky kombinovaných dokumentů účinně obchází. Říká si <object>. Cizí data bere z cizího souboru a na selhávání je expert.

    <object data="graf.svg" type="image/svg+xml">   <object data="graf.png" type="image/png">     <object data="graf.jpg" type="image/jpeg">       <p>Graf závislosti slasti na nezávislosti.</p>     </object>   </object> </object>

    Vnímavého čtenáře nepřekvapí, že tentýž element existuje i v HTML. Což znamená, že k využívání SVG, MathML ani XForms nepotřebujete prohlížeč znající XHTML.

    Jmenné prostory v XML nejsou špatná technologie, u mnoha XML aplikací se bez nich neobejdete. Jako argument pro XHTML jsou však nepoužitelné.