Autor Zpráva
pepak
Profil
Zkoušel jste někdo rozšiřovat XHTML o vlastní entity? Zkoušel jsem to podle příkladu ukradeného od někoho jiného takhle:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" [
<!ENTITY lquo1 "&bdquo;">
<!ENTITY rquo1 "&ldquo;">
<!ENTITY lquo2 ",">
<!ENTITY rquo2 "&lsquo;">
]>

Ale to jednak odmítne W3 Validátor (ten ovšem odmítne kde co včetně validních věcí, a naopak), druhak to Opera odmítne zobrazit. Kde je chyba?
Chamurappi
Profil
Reaguji na pepaka:
Bavíme se skutečně o XHTML?
Živou ukázku bys neměl?
Prohlížeče by neměly stahovat externí DTD (a ani nestahují), takže by entity deklarované venku správně ani neměly fungovat.
pepak
Profil
No ony právě nefungují, ale já bych rád nějak zařídil, aby fungovaly :-)
pepak
Profil
Ukázka zde:

<?xml version="1.0" encoding="windows-1250"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" [
<!ENTITY lquo1 "&bdquo;">
<!ENTITY rquo1 "&ldquo;">
<!ENTITY lquo2 ",">
<!ENTITY rquo2 "&lsquo;">
]>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250" />
<title>Ukázka</title>
</head>

<body>
<p>&lquo1;Tohle &lquo2;je&rquo2; ukázka.&rquo1;</p>
</body>
</html>
Chamurappi
Profil
Reaguji na pepaka:
Tak tahle ukázka je dočistá mrtvá. Chtěl bych živou ukázku.
Mně ten kód v Mozille i Opeře běží. (V Exploreru ne, ten běžné XHTML vůbec nepodporuje.)
pepak
Profil
V tom případě netuším, co myslíš pod pojmy "živá ukázka", "mrtvá ukázka" a "běžící ukázka". To, co jsem sem poslal, je ukázka toho, co chci udělat a co mi nefunguje. Opera 9.60 to zobrazí jako kdyby to bylo psané

<p>&amp;lquo1;Tohle &amp;lquo2;je&amp;rquo2; ukázka.&amp;rquo1;</p>

Firefox 3.08 na začátku zobrazí "odstavec" obsahující ]> a pak to samé co Opera.

IE7 zobrazí to samé co Firefox.
Chamurappi
Profil
Reaguji na pepaka:
Živá ukázka je ukázka, kterou si můžu naživo prohlédnout, abych si ověřil popisované symptomy a prozkoumal aspekty, které výpis kódu (či jen útržek z něj) neobsahuje. Mrtvá ukázka by mohl být opak živé ukázky. Kdybys dal odkaz na stránku, věděl bych hned, o co jde — a sice, že používáš staré dobré HTML. Nikoliv XHTML. Proto prohlížeče ignorují deklaraci entit.
pepak
Profil
Ne, fakt ti nerozumím.

1) To, co jsem napsal v #4, je kompletní kód. Nechápu, co bych měl napsat víc.

2) Až dosud jsem žil v domění, že to je XHTML. W3 Validator taky žije v domění, že to je XHTML. Proč to podle tebe není XHTML?
panther
Profil
pepak
1) To, co jsem napsal v #4, je kompletní kód. Nechápu, co bych měl napsat víc.
odkaz na stránku, kde je ten kód užit ;-)

Proč to podle tebe není XHTML?
na toto téma tu byla sáhodlouhá diskuse, kterou si dohledej. O tom, jestli je to XHTML nebo HTML nerozhoduje Doctype, nýbrž tento tvůj řádek
<meta http-equiv="content-type" content="text/html; charset=windows-1250" />
Chamurappi
Profil
Reaguji na pepaka:
To, co jsem napsal v #4, je kompletní kód.
Chybí informace o HTTP hlavičce Content-Type, která prohlížeči říká, jestli je stránka HTML nebo XHTML (nebo obrázek, nebo CSS atd.). Tuto informaci bych zjistil, kdybys místo výpisu kódu odkázal na živou ukázku ležící na nějakém serveru.
Své HTTP hlavičky si můžeš prohlédnout třeba Web-Snifferem.

W3 Validator taky žije v domění, že to je XHTML.
Lže.

Proč to podle tebe není XHTML?
Podle mě a prohlížečů to není XHTML, protože užíváš typ „text/html“. Z příspěvku #6 je jasné, že stránku chroustají HTML parserem.
Kdybys užíval XHTML (identický kód poslaný s typem „application/xhtml+xml“), Mozilla i Opera by ukázaly to, cos očekával, a Explorer nic.
Znáš Český validátor?


Reaguji na panthera:
Z uvedeného řádku čte při typu „text/html“ HTML parser kódování a při XML typu jej XML parser ignoruje. Rozhodující je skutečná HTTP hlavička. (Nebo přípona, pokud soubor není doručen přes HTTP.)
pepak
Profil
Panther:

1) A ta stránka by byla k čemu, když to celé bude používáno výhradně off-line?

2) Možná se pletu, ale měl jsem za to, že speciální Content-type potřebuju až od XHTML 1.1, který nepoužívám. Každopádně při použítí "application/xml+xhtml" zobrazí všechny tři prohlížeče to samé co při použití "text/html", takže to bych neviděl jako zásadní problém...
pepak
Profil
Chamurappi:

1) Jak jsem právě napsal Pantherovi, ta stránka _nikdy_neprojde_webserverem_, tudíž HTTP hlavička Content-type _nikdy_nebude_použita_.
Chamurappi
Profil
Reaguji na pepaka:
měl jsem za to, že speciální Content-type potřebuju až od XHTML 1.1
Mezi 1.0 a 1.1 je zanedbatelný rozdíl. Ta povinnost, o které se občas mluví, je jen teoretický drb bez praktického dopadu. W3C před devíti lety řeklo výrobcům prohlížečů, že mají všechno s typem „text/html“ považovat za HTML, nehledě na deklaraci <!doctype>. Poslechli. A proto ti nefungují ty entity.

tudíž HTTP hlavička Content-type _nikdy_nebude_použita_
V tom případě rozhodne přípona. Ve specifikacích MIME typů bývá napsáno, jaké přípony jsou pro dané typy obvyklé. Pro „text/html“ je to „.html“, pro „application/xhtml+xml“ je to „.xhtml“.
pepak
Profil
No prosím, ani to nebolelo a už je tu funkční řešení - skutečně stačí ten soubor pojmenovat příponou .xhtml a už se entity zobrazují. Děkuji!
Chamurappi
Profil
Reaguji na pepaka:
a už se entity zobrazují
V Exploreru ne. V ostatních prohlížečích by se ti správně měly místo uvozovek ukazovat názvy entit, spoléháš se na jejich benevolenci.
pepak
Profil
Vzhledem k tomu, že to téměř nikdy nebude prohlížené v prohlížečích (a když, tak jako nouzovka), je to pro mě vcelku přijatelné.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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