jedinou smysluplnou informací zůstane adresa DTD, kterou si pochopitelně může webmaster zkopírovat k sobě
Podle mého názoru, ta adresa DTD slouží jako identifikátor. Tudíž prohlížeče nemusí to DTD stahovat, aby věděly, že jde o XHTML. V případě, že si to někdo zkopíruje k sobě, tak to má jiný identifikátor a pak to opravdu není XHTML ale uživatelský formát, který ovšem může být s XHTML shodný. To pak prohlížeč má problém, protože z DTD nevyčte sémantiku. Normální prohlížeč ale doufá, že je stejná, jako v HTML/XHTML a podle toho jedná. Co mu také zbývá jiného.
K čemu podle vás slouží jmenné prostory?
Slouží k tomu, aby nám nekolidovaly značky, které mají v různých jazycích různý význam a přitom stejná jména. Ale nedefinují jazyk. V tomto případě si lze jmenný prostor představit jako množinu značek, tedy abecedu, ze které můžeme tvořit věty, zde dokumenty. Abychom dostali jazyk, potřebujeme k tomu ještě gramatiku jazyka a tu právě definuje DTD. XHTML jsou tedy jazyky nad stejnou abecedou, ale každý má trochu jinou gramatiku.
„Podle mého názoru, ta adresa DTD slouží jako identifikátor.“
Jenže adresa už vůbec nemusí být fixní. XHTML 1.0 i 1.1 (obě vydání obou) říkají, že systémový identifikátor smí být ve vyhovujícím dokumentu změněn.
Zrovna XHTML 1.1 nabízí dvě verze své DTD. Jednak má svoji mamutí modulovou verzi skládanou z cca dvaceti modulů, jednak i sloučenou verzi do jednoho souboru — kopii té prokazatelně používá validátor. Modulová se od sloučené mírně liší. V prvním vydání XHTML 1.1 nevyžaduje modulová žádný element v <body>, kdežto sloučená ano. V druhém vydání zatím ta modulová naopak vyžaduje alespoň jeden element v <body> a sloučená je už dva týdny vadná, neboť na jejím konci kdosi utrousil kus dokumentu.
„To pak prohlížeč má problém, protože z DTD nevyčte sémantiku.“
Jenže uvnitř DTD není určena sémantika, tam se může dozvědět nanejvýš názvy validních elementů, atributů a entit. Není tam řečeno „tohle je nadpis, tohle obrázek, tohle odkaz“.
„Slouží k tomu, aby nám nekolidovaly značky, které mají v různých jazycích různý význam a přitom stejná jména. Ale nedefinují jazyk.“
Kdyby měly pouze bránit kolizi, tak by nepotřebovaly mít k prefixu přiřazenu adresu. Prefix by totiž stejně natvrdo zakotvila DTD a dokument s jinými prefixy či dokument složený z více jmenných prostorů by potřeboval buď svoji DTD se svojí adresou, která by se neshodovala s adresou oficiální DTD, nebo modularizaci + velkou interní podsadu DTD.
Kdybych chtěl do XHTML vložit prvky svého vlastního jazyka, při čemž XHTML i ten vlastní jazyk by měli každý svou oficiální DTD, znamená to, že by kvůli zkombinované DTD neměly výsledku rozumět ani XHTML prohlížeče, ani prohlížeče toho mého jazyka?
Ve stávajícím návrhu druhého vydání XHTML 1.1 je psáno, že se veřejný identifikátor musí odvolávat na oficiální DTD, pokud je přítomen. Z čehož usuzuji, že povinný není. Ale uznávám, že to je jen pracovní návrh.
Domnívám se, že FPI jako obdobu jmenných prostorů chápat nelze. Doporučení XML 1.0 o něm hovoří pouze jako o alternativní pěšince k adrese DTD. Odhlédnu-li od teorie: v praxi prohlížeče podle veřejného identifikátoru jazyk neurčují.