Autor Zpráva
igamenir
Profil
prosím pěkně, asi budu vypadat jako lama, ale jak vypadá správně doctype hlavička pro XHTML 1.0 Strict, příp. 1.1, aby prošel českým validátorem? zkouším všechno možný, našel jsem na internetu mnoho různých verzí, ale žádná mi neprochází validátorem bez problému.
Většinou řekne že mám špatný doctype, někdy že posílám xhtml jako text/html, ale když to zkusím opravit přes poslání header content-type, zobrazí se mi (v práci mám jen IE6):
The XML page cannot be displayed.
Cannot view XML input using style sheet. Please correct the error and then click the Refresh button, or try again later.
--------------------------------------------------------------------------------
Parameter entity must be defined before it is used. Error processing resource 'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd...
%xhtml-prefw-redecl.mod;
-^

nebo s jiným content-type mi nabídne soubor ke stažení :(

Prosím, jak zprovoznit xhtml?

konkrétně se teď jedná o stránky http://igamenir.net

Moderátor Chamurappi: Titulek „xhtml doctype“ nevystihoval dostatečně podstatu dotazu, lákal sem moc kolemjdoucích, kteří neodpovídali na otázku.
Dero
Profil
igamenir: Tzv. český validátor (http://validator.webylon.info/) není podporován žádnou autoritou spravující webové standardy. Jde o fanouškovský projekt, který udržuje dle svého nejlepšího vědomí a svědomí člověk, který zde vystupuje pod přezdívkou Chamurappi.

Důležitý je pro Tebe spíše oficiální validátor konsorcia W3C na adrese: http://validator.w3.org/
igamenir
Profil
Dero
dík, o tom vím... a oficiálním projdu, ale mám v paměti, že velice často je zde oficiální validátor shazován s tím, že český je lepší, protože kontroluje víc chyb atp.
znamená to, že českým validátorem není možné s xhtml projít? (k tomu by se spíš měl vyjádřit přímo Chamurappi)
Dero
Profil
igamenir: Zda je český validátor lepší nebo horší lze jen těžko objektivně posoudit.

Jeho autor se rigidně přidržel určitého výkladu stávajících standardů, který může a nemusí být správný. Nikdo z tvůrců standardů se k tomuto výkladu přímo nevyjádřil, tedy jde o výklad, který není schválený žádnou autoritou. Vezmi prosím na vědomí, že snad nikdo, kdo se zde k otázce validátorů vyjadřuje, nemá specifikace detailně nastudovány. Většinou jde jen o opakování premis, které takoví lidé někde zaslechli a kterým se rozhodli důvěřovat.

Pokud věříš tomu, že je Chamurappiho validátor skutečně lepší a přesnější než oficiální nástroj od standardizační autority, potom máš tyto možnosti:

1) Ignorovat prohlížeče, které neumí XHTML posílané s XML MIME typem vykreslit, čímž znepřístupníš svůj web až polovině možných návštěvníků.

2) Přepsat svůj web do HTML a posílat jej s MIME typem text/html.

Domnívám se, že kodérskému řemeslu také trochu rozumím, a proto bych ti doporučil variantu 3); tedy formát XHTML posílaný s MIME typem text/html. Zajistíš si tak podporu všech současných prohlížečů a zároveň se nezřekneš možnosti svůj web transformovat, rozkládat či jakkoli s ním dále pracovat či experimentovat za pomoci nástrojů pro práci s XML, kterých i dnes přibývá jako hub po dešti.
igamenir
Profil
První nemohu, protože většinou web vyvíjím na počítači, který to právě nepodporuje (na ostatní dodatečně dolaďuji) a druhou možnost mohu kdykoliv uplatnit, jen jsem chtěl zkusit xhtml. Zkoušení je důležité a přicházení věcem na kloub právě tak, ale tady je jak je vidět nutný kompomis.
Takže už jsem použil třetí možnost a budu se jí držet. Dík za rady
Chamurappi
Profil
Reaguji na igamenira:
Internet Explorer příliš nepodporuje XHTML. Chybovou hlášku, kterou ti ukazuje, vyvolává pasáž v XHTML 1.1 DTD, která není napsaná s ohledem na chybu v XML parserech Microsoftu. Deklaruješ-li XHTML 1.0, chybovou hlášku neuvidíš, ale dokument nebude interpretován jako webová stránka, protože Explorer nerozezná jmenný prostor.

Není pravda, že se k výkladu specifikací, kterým se řídí český validátor, nikdo z W3C nevyjádřil. Můj výklad se řídí stanoviskem pracovní skupiny, která XHTML vytvořila, a toto stanovisko sdělila výrobcům prohlížečů, kteří se jím také řídí. To, že oficiální validátor postupuje chybně, dlouhodobě tvrdí i současný hlavní editor (X)HTML 5 a několik lidí tvořících CSS specifikace.

znamená to, že českým validátorem není možné s xhtml projít?
Znamená to, že musíš obětovat jednoho z trojice validita — přístupnost — XHTML.

ale tady je jak je vidět nutný kompomis.
Proč? Pošleš-li prohlížečům XHTML s MIME typem „text/html“, budou brát stránku jako HTML s chybami, nikoliv jako XHTML. Tím, že prohlížečům pošleš kód, který je pro ně optimální, se nevzdáváš možnosti používat XML nástroje.
igamenir
Profil
Děkuji.

Znamená to, že musíš obětovat jednoho z trojice validita — přístupnost — XHTML.
V tom případě se nabízí "nejméně potřebné" XHTML, neboť je nahraditelné HTML
Dero
Profil
V tom případě se nabízí "nejméně potřebné" XHTML, neboť je nahraditelné HTML

To mě zaujalo. Rozhodnutí samozřejmě leží na tobě, ale můžu se zeptat, proč se domníváš, že:

a) Je XHTML nahraditelné HTML?
b) Je validita důležitá?
igamenir
Profil
1. Stránky byly tvořeny jako HTML. pak jsem je jen na zkoušku předělal a funkčnost se nezměnila.
2. Pokud budu nabízet své služby firmě, která se přímo nezabývá vývojem webů, aby znala problematiku, validita může být známkou kvalitní tvorby (zdůrazňuji může)
Joker
Profil
igamenir
znamená to, že českým validátorem není možné s xhtml projít?
Českým validátorem "zpětně kompatibilní" XHTML s typem text/html skutečně nikdy neprojde.
Přesto s ním vesměs není problém (ano, teoreticky je možné vytvořit prohlížeč, který s ním problém mít bude a teoreticky lze napsat konstrukci, která by problém vyvolala, ale v praxi to tak prostě není).

Nejjednodušší řešení, pokud už stránka je v XHTML, je prostě mu přiřadit typ text/html a je to. Fungovat to bude, český validátor sice hodí červenou, ale co.

Popřípadě asi nejčistší metoda by byla získat od prohlížeče hlavičku accept a podle toho co bere mu dávat buď XML, nebo HTML. Tohle nevím, jestli českým validátorem projde- podle toho, jaké posílá hlavičky. Ale je dost možné, že to neprojde.

Další možnost je prohlížečům posílat kód s HTML typem, ale validovat ho jako XML.

Každopádně můj názor je takový, že strávit celé odpoledne bádáním nad "nezrušitelnou" chybovou hláškou validátoru a pak ještě předělávat stránku, se kterou by nejspíš stejně žádný problém nebyl, je zbytečné.
igamenir
Profil
dík za postřehy, tím zkoumáním si to budu pamatovat a o to jde, a Vašimi radami toho chápu víc, než jsem kdy předtím vyčetl, takže to zbytečné nebylo. Stránku jsem zpět do HTML právě předělal za dvě minuty, tak proč ne :)
Urso
Profil
Děkuji.
„Znamená to, že musíš obětovat jednoho z trojice validita — přístupnost — XHTML.“
V tom případě se nabízí "nejméně potřebné" XHTML, neboť je nahraditelné HTML
Českám validátorem projdou skutečné XHTML stránky!
Tedy nejenom s DOCTYPE XHTML 1.1 ale taky se musí změnit mime na application/xhtml+xml
Pak stránky projdou jak oficiálním validátorem http://validator.w3.org/ tak taky českým validátorem http://validator.webylon.info/ ale i WDG validátorem http://www.htmlhelp.org/tools/validator/ . Takže aby byly stránky parsovány jako XHTML, musí se poslat buď na začátku PHP hlavička:
<?php 
header("Content-Type: application/xhtml+xml; charset=utf-8"); 
?>

Nebo XHTML dokument uložit s příponou .xhtml
V obou případech všechny zde zmiňované validátory hlásí bezchybný XHTML dokument.

Moderátor Chamurappi: Přestaň prosím vytahovat stará vlákna. Tohle už je poněkolikáté, co ses na této diskusi zčistajasna zjevil a zopakoval tuto otřepanou písničku v místě, kde ji už nikdo slyšet nepotřebuje.
Elijen
Profil *
Toto téma jsem vygooglil, tak odpusťte menší grave dig.

Řešil jsem problém s validitou stránek XHTML1.0 STRICT způsobený parametrem target="_blank" tagu <a>. Zjistil jsem, že jediný způsob, jak používat parametr target a zároveň se zbavit otravných hlášení validátoru, je upravit DOCTYPE na něco takového:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" [
<!ATTLIST a target CDATA #IMPLIED>
]>


Takový kód již validátorem projde i když je posílán jako text/html. Bohužel ve většině prohlížečů se nezobrazí správně (respektive se zobrazí správně, ale ne tak, jak bychom chtěli) - na začátku stránky se vytiskne "]>". Problém je v tom, že v text/html není definována konstrukce pomocí hranatých závorek. Přepnutím na application/xhtml+xml se stránka vykreslí správně a je zcela validní.

JENŽE: text/html a application/xhtml+xml mají rozdílný DOM, což znamená, že JavaScript fungující na text/html nemusí fungovat na application/xhtml+xml a naopak! Příkladem je Google Maps API, které po přepnutí na application/xhtml+xml nefunguje.

Proto jsem se rozhodl některá chybová hlášení validátoru prostě ignorovat a soustředit se hlavně na funkcionalitu a dostupnost stránek. Vždyť ani Google nemá stránky validní :)
Chamurappi
Profil
Reaguji na Elijena:
Takový kód již validátorem projde i když je posílán jako text/html.
Jak kterým.

Bohužel ve většině prohlížečů se nezobrazí správně […] - na začátku stránky se vytiskne "]>".
Protože z hlediska prohlížečů skončí <!doctype> prvním většítkem.

Problém je v tom, že v text/html není definována konstrukce pomocí hranatých závorek.
To není pravda. V HTML by dle specifikace měly hranaté závorky fungovat (téměř) stejně jako v XML.

Pokud si člověk uvědomí syntaktické rozdíly mezi HTML a XHTML, je v jeho moci skrýt „]>“ při pseudo-XHTML tak, aby ho viděl jen validator.w3.org a ne návštěvníci. Nicméně to nedoporučuji.
Elijen
Profil *
To není pravda. V HTML by dle specifikace měly hranaté závorky fungovat (téměř) stejně jako v XML.
Měly by, ale očividně nefungují. Jinak by první '>' neukončilo doctype.

Pokud si člověk uvědomí syntaktické rozdíly mezi HTML a XHTML, je v jeho moci skrýt „]>“ při pseudo-XHTML tak, aby ho viděl jen validator.w3.org a ne návštěvníci. Nicméně to nedoporučuji.
Takový kód by prošel validátorem, ale nebyl validní? :)

Snažím se udržet validní XHTML STRICT hlavně kvůli přístupnosti pro zrakově postižené a také kvůli IE quirksmode, takže obcházení validátoru na úkor správné syntaxe není zrovna na místě.
Chamurappi
Profil
Reaguji na Elijena:
Takový kód by prošel validátorem, ale nebyl validní? :)
Prošel by kontrolou na validator.w3.org. Byl by validní, kdyby byl brán jako XML.

Snažím se udržet validní XHTML STRICT hlavně kvůli přístupnosti pro zrakově postižené
Nerozumím. Myslíš si, že když dodeklaruješ target k odkazu v DTD, bude stránka přístupnější pro zrakově postižené?

Zrakově postižení mívají většinou čtečky postavené na jádru Exploreru a ten XHTML v podstatě nepodporuje (jak jsem již zmiňoval výše). Pokud užíváš MIME typ „text/html“, berou všechny prohlížeče tvůj kód jako HTML (jak jsem již zmiňoval výše).

a také kvůli IE quirksmode
Nerozumím.

obcházení validátoru na úkor správné syntaxe není zrovna na místě
De jure správná syntaxe je v tvém případě HTML, bez X. Jak rozlišíš obcházení (oficiálního) validátoru od obyčejného využití rozdílnosti syntaxe?

téma jsem vygooglil, tak odpusťte menší grave dig
Četl jsi vůbec zdejší příspěvky?
Elijen
Profil *
Nerozumím. Myslíš si, že když dodeklaruješ target k odkazu v DTD, bude stránka přístupnější pro zrakově postižené?
Ne, myslím si, že pokud bude stránka validní STRICT, bude pro zrakově postižené přístupnější nebo alespoň stejně přístupná, než kdyby validní nebyla.

Zrakově postižení mívají většinou čtečky postavené na jádru Exploreru a ten XHTML v podstatě nepodporuje (jak jsem již zmiňoval výše). Pokud užíváš MIME typ „text/html“, berou všechny prohlížeče tvůj kód jako HTML (jak jsem již zmiňoval výše).
To jsem nevěděl. Nicméně teď už přepisovat web do HTML nebudu. Možná příště :)

Nerozumím. “ (IE quirksmode)
Podle toho, co mi bylo řečeno se IE přepíná do tzv kompatibilního režimu (aka quirksmode) pokud ve stránce rozezná chyby a usoudí, že se nejedná o validní [Strict|Transitional] HTML. V takovémto režimu vykresluje stránku jinak než většina prohlížečů a je třeba využívat mnohem víc IE hacků než normálně. Tak mi to bylo řečeno.

De jure správná syntaxe je v tvém případě HTML, bez X. Jak rozlišíš obcházení (oficiálního) validátoru od obyčejného využití rozdílnosti syntaxe?
Nevěděl jsem jakým způsobem bys „]>“ schoval. Myslel jsem, že půjde o nějaký hack. Pokud ne - moje chyba.
Chamurappi
Profil
Reaguji na Elijena:
pokud bude stránka validní STRICT, bude pro zrakově postižené přístupnější nebo alespoň stejně přístupná, než kdyby validní nebyla
To není pravda. Přístupnost s validitou nijak přímo nesouvisí.

To jsem nevěděl. Nicméně teď už přepisovat web do HTML nebudu.
Stejně používáš HTML (a nevalidní). Nehledě na to, co ti říká validator.w3.org.

se IE přepíná do tzv kompatibilního režimu (aka quirksmode) pokud ve stránce rozezná chyby a usoudí, že se nejedná o validní [Strict|Transitional] HTML
Ne. Explorer nevaliduje. Kdyby validoval, musel by usoudit, že tvé stránky nemají validní HTML.
O vykreslovacím režimu rozhoduje <!doctype> (někdy dokonce i jen způsob zápisu <!doctype>). Nezáleží na tom, jestli je stránka validní, ani na tom, jestli je podle názoru prohlížeče bezchybná. Validní HTML 4.01 Transitional se klidně může vykreslovat v quirku a nevalidní HTML 4.01 Transitional se klidně může vykreslovat ve standardu.

V takovémto režimu vykresluje stránku jinak než většina prohlížečů
V quirk módu vykresluje většina prohlížečů stránku jinak než ve standardním módu. Většina prohlížečů má dva režimy.

je třeba využívat mnohem víc IE hacků než normálně
Pokud jedou i ostatní prohlížeče v quirku, tak ne.

Nevěděl jsem jakým způsobem bys ‚]>‘ schoval.
Zkusil bych tuhle šílenost:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" [
<!ATTLIST a target CDATA #IMPLIED>
<?i ]><!--?>]><?i --><?>
<html> …

Myslel jsem, že půjde o nějaký hack.
Je to svým způsobem hack. To tvoje tzv. „validní XHTML 1.0 Strict“ je také hack — optimalizuješ kód pro validator.w3.org a doufáš, že to tolerantní prohlížeče nějak přechroustají.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0