Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia Tuesday TopDrive KupDnes Navrcholu Bomba NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Názor k článku
Život s krvelačným X

Filip Jirsák
6. 3. 2007 12:05

dobré náměty

celé vlákno

Podle nadpisu článku bych čekal kritiku XHTML. A ony jsou to ve skutečnosti dva náměty na vylepšení XHTML.

První se týká přísnosti parseru – osobně si myslím, že vyžadování well-formed XML není na škodu, proč dělat parsery zbytečně složité. Navíc dnes se používají nejrůznější formuláře, skripty atd., které jsou velmi háklivé na chyby v objektovém modelu dokumentu (DOM). Dokumenty, které nejsou well-formed, nejspíš vznikly nějakou chybou (stránka se nenatáhla celá, nějaká část se na serveru vygenerovala špatně). Myslím, že je lepší v takovém případě přiznat uživateli, že došlo k chybě, než se pokoušet to ututlat. Pak se zblázní skripty, uživatel je zavalen chybovými hláškami, pomyslí si cosi o autorovi stránek – ale že před ním ve skutečnosti prohlížeč tají to, že nedostal stránku celou, se nedozví. A i kdyby se vývojáři dohodli na tom, že raději zobrazit něco, než nic – celá přísnost XHTML specifikace spočívá v jediném must v jedné větě, které by stačilo nahradit za may nebo should.

In order to be consistent with the XML 1.0 Recommendation, the user agent must [může být may, should] parse and evaluate an XHTML document for well-formedness.

Druhá věc se týká neznámých jmenných prostorů – byl by dobrý nápad dát do XHTML sémanticky neutrální tag, který bude fungovat jako podmínka – jeho obsah se vykreslí pouze v případě, že prohlížeč zná resp. nezná daný jmenný prostor. Tedy jakási zobecněná podoba microsoftích podmíněných komentářů. Každý prohlížeč se navíc dle své verze může přihlásit k tomu, že zná nějaký svůj jmenný prostor – a hned dokážeme na úrovni HTML rozlišit i jednotlivé prohlížeče (pro případ, že prohlížeč má např. nějakou chybu, kterou chceme obejít). Takže by se pak psalo např.:

<if known-namespace="http://www.w3.org/1998/Math/MathML"
 <math xmlns="http://www.w3.org/1998/Math/MathML">
 …
 </math>
</if>
<if unknown-namespace="http://www.w3.org/1998/Math/MathML">
(a + b)<sup>2</sup>
</if>