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.
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.
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.
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.
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é.