Autor Zpráva
Pajuc
Profil *
Zdravím,

zajímalo by mě, co vlastně určuje, co je XHTML dokument a co HTML dokument. Možná to zní jako otázka na flamewar, ale ptám se ryze proto, že bych prostě rád nazýval věci pravými jmény a nebyl někde za lamu. Takže co je tedy určující?

a)přípona souboru (dokumentu)
Jelikož poslane hlavicky jen prohlizeci reknou, ze by mel ocekavat nejaky dokument a jaky, ale rozhodne mu neprikazuji, co snim ma udelat. Stale mu dorazí totozny (X)HTML soubor

c)MIME type
Pokiaľ pošlem svoj XHTML dokument ako text/html, označím ho za HTML dokument, nie?

b)doctype a DTD
"Já se také mohu označit za prsatou blondýnu, ale nic to nezmění na tom, že jsem fousatý chlapík."
Pokud se označíte za prsatou blondýnu a všichni muži vás jako prsatou blondýnu budou brát, tak nejspíš jste prsatá blondýna. Je nepravděpodobné, že byste byl fousatý chlapík, když vás všichni vidí jako prsatou blondýnu. XHTML dokument posílaný jako text/html je spíše HTML dokument kompatibilní s XHTML dokumentem, než naopak.

d)nic
"Panove, tady o nic nejde. Tady jde jenom o to, kdyby nahodou o neco slo, abychom vedeli oc jde."


Každý pán Odborník mluví jinak. Přesto ale jde o technickou záležitost. Mělo by tudíž existovat technické vysvětlení sakra a ne subjektivně interpretované relativismy. Každopádně jsem velmi zvědavý na odpovědi :)
INSiGHT
Profil
X, jako eXtensible, takže rozšiřitelný.
Radek Hrabůvka
Profil
http://atd.havrlant.net/jak-na-dokonale-xhtml
http://atd.havrlant.net/proc-je-odesilani-xhtml-jako-texthtml-spatne
http://atd.havrlant.net/jak-funguje-html

XHTML dokument posílaný jako text/html je spíše HTML dokument kompatibilní s XHTML dokumentem, než naopak.
Nevím co myslíš pod naopak, ale ten, o kom se nemluví posílá IE stránky s mime typem text/html, Gecku a Opeře jako application/xhtml+xml

Pokud sjem to správně pochopil, na netu je důležitý MIME type, přípona může být jakákoliv. V počítači na disku je rozhodující přípona, htm, html -- xhtml.
mata
Profil
Radek Hrabůvka
ale u http://atd.havrlant.net/proc-je-odesilani-xhtml-jako-texthtml-spatne jsou příspěvky, které se tímto zabývají a závěr není až tak jednoznačný i když nakonec z toho všeho vyplynulo, že asi na netu je opravdu nejdůležitější MIME ;)
Timy
Profil
Radek Hrabůvka
"Pokud sjem to správně pochopil, na netu je důležitý MIME type, přípona může být jakákoliv."
Ono je to spíš tak, že podle přípony server odešle požadovaný MIME. Takže server vidí .html => pošle to jako text/html. Server vidí .xhtml => pošle to jako application/xhtml+xml (prý někde ne, záleží na nastavení serveru). Samozřejmě si můžu určit, že třeba soubor s příponou .timy se odešle jako text/html.
thingwath
Profil
Nuže technicky. RFC2616 říká, že:


The Content-Type entity-header field indicates the media type of the
entity-body sent to the recipient or, in the case of the HEAD method,
the media type that would have been sent had the request been a GET.
...
Further discussion of methods for identifying the media type of an
entity is provided in section 7.2.1.


To není nic moc. Co tedy v sekci 7.2.1?


When an entity-body is included with a message, the data type of that
body is determined via the header fields Content-Type and Content-
Encoding.



Content-Type specifies the media type of the underlying data.



Any HTTP/1.1 message containing an entity-body SHOULD include a
Content-Type header field defining the media type of that body. If
and only if the media type is not given by a Content-Type field, the
recipient MAY attempt to guess the media type via inspection of its
content and/or the name extension(s) of the URI used to identify the
resource. If the media type remains unknown, the recipient SHOULD
treat it as type "application/octet-stream".


No, to je sice všechno hezké, ale opět z toho plyne, že Content-type hlavička je něco, co bychom MĚLI zahrnout, abychom sdělili typ dokumentu klientovi. Pokud to neuděláme (ale jen tehdy) MŮŽE příjemce zkusit odhadnout typ na základě obsahu (tedy mohl by zkusit podle DTD, hlaviček a dalšího) nebo i přípony v URI (tedy může zkusit rozlišit podle toho, máme-li příponu .xhtml nebo .html, nebo...).

Takže řekneme-li příjemci, že data jsou toho a toho typu, musí se k nim podle toho chovat, ať už si o tom myslí cokoliv. Ovšem to stále IMHO nic nemění na tom, že posíláme platný XHTML dokument a tedy XHTML. Pokud bychom to brali tak, že XHTML je stále jakási podmnožina mírně nevalidního HTML, tak bychom samozřejmě mohli říct, že je to HTML.
Timy
Profil
thingwath
"Ovšem to stále IMHO nic nemění na tom, že posíláme platný XHTML dokument a tedy XHTML."
K tomuhle bych měl jednu otázku. Jak je to s různými XML nástroji? Zpracují platný XHTML dokument poslaný jako text/html? Neboli XHTML dokument to dle specifikace je, ale je to také XML dokument?
jozob
Profil
Timy má (ako vždy) pravdu.

Zobreme si napríklad server Apache. Náhľad do konfigurácie:
AddType application/x-httpd-php .php

AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz


Viac o direktíve AddType v konfigurácii serveru Apache: http://httpd.apache.org/docs/2.0/mod/mod_mime.html#addtype
thingwath
Profil
Timy
No, ono, my tu řešíme dvě věci, které nejsou úplně to samé. Content-type a MIME typ jsou zde záležitostí HTTP protokolu, což není věc, kterou pro provozování XML nebo XHTML nebo i jen HTML nutně potřebujeme. Tady by záleželo na tom, jestli daný nástroj Content-type uvažuje... Bylo by asi logické, že ano, ale kde by něco takového bylo psáno, nebo kde by se taková problematika řešila, no, přiznám se, že nevím.
Timy
Profil
thingwath
tak já to trochu zobecním. Nikdy jsem žádný XML nástroj nepoužil a ani vlastně žádný neznám, proto se ptám - mám soubor stranka.html která je psána v XHTML. Mohu tento soubor tak jak je strčit do nějakého XML nástroje a normálně s ním pracovat?
thingwath
Profil
Sežere to parser? Je to well-formed? Pak ano, není důvod proč by s tím nějaký XML nástroj nemohl něco udělat. Je otázka co s tím chceš dělat a jaký nástroj to je :-)
Timy
Profil
thingwath
No mně by třeba nepřišlo zvláštní, kdyby XML nástroj nedokázal zpracovat HTML stránku, byť by byla well-formed. Nebo snad XML nástroj zpracuje i obrázek (.jpg), pokud je well-formed?
Jirka Kosek
Profil *
Když to pragmaticky zjednoduším, viděl bych to takhle:

zajímalo by mě, co vlastně určuje, co je XHTML dokument

Cokoliv, co je well-formed dokument XML, pokud to začíná elementem "html" v jmenném prostoru "http://www.w3.org/1999/xhtml"

a co HTML dokument

Cokoliv, co je validní oproti některému DTD pro HTML.
nightfish
Profil
Timy

XML nástroj je aplikace na zpracování XML a ne obrázků (JPEG)

XML nástroj bez problémů zpracuje HTML stránku, je-li tato napsána v XHTML a je well-formed
Timy
Profil
nightfish
"XML nástroj bez problémů zpracuje HTML stránku, je-li tato napsána v XHTML a je well-formed"
Tak to je jenom dobře :-)
Timy
Profil
Jirka Kosek
"Cokoliv, co je well-formed dokument XML, pokud to začíná elementem "html" v jmenném prostoru "http://www.w3.org/1999/xhtml""
Je tedy toto XHTML dokument nebo ne?
Jirka Kosek
Profil *
Timy

Viděno pragmaticky, tak to XHTML dokument je, ale není kompletní (chybí head, title a body), a jsou v něm použity elementy, které do XHTML nepatří. Ale díky jmennému prostoru, je jasné, že to je XHTML. To že je to špatné (nevalidní) XHTML, je druhá věc.

Kdyby se člověk držel striktně blbě napsané specifikace XHTML, tak zjistí, že za XHTML nelze považovat ani dokumenty, které do XHTML místo dopravních značek vkládají SVG, MathML nebo VoiceXML. Bohužel W3C specifikaci XHTML zatím neopravilo, a nenabízí pro takové dokumenty ani validátor.
djlj
Profil
Jirka Kosek
Huh, to teda rozhodně není XHTML dokument. Dle mě nezáleží ani na DTD a validnosti, ale na poslané hlavičce...
thingwath
Profil
A kdbych ti ten dokument neposlal přes HTTP ale přinesl na mém flashi, co budeš dělat potom? :-)
Timy
Profil
Jirka Kosek
Teď jsem neměl na mysli neexistující a naopak chybějící značky - je jasné, že to rozhodně není validní XHTML dokument, ale spíše jestli nějak vadí, že je to odesílané jako texťák. Podle té definice, kterou jste uvedl ("Cokoliv, co je well-formed dokument XML, pokud to začíná elementem "html" v jmenném prostoru "http://www.w3.org/1999/xhtml"") by totiž to XHTML dokument IMHO byl. Tedy je tento soubor, tak jak je - včetně poslaného MIME typu - XHTML dokument?
Jirka Kosek
Profil *
Timy

Jistě, že to je XHTML dokument. ;-)

Zasílané HTTP hlavičky obsah souboru nezmění, slouží jen jako identifikace typu dokumentu, aby se vědělo, co s ním, aniž by se musel obsah souboru zkoumat. Jak jsem tu už někde psal, z toho že se prohlásíte za blondýnu, vám fousy neopadají.

Myšlenka, že věci jako druh dokumentu nebo kódování se budou posílat bokem zasílaných dat, je sice správná, ale naráží na to, že je v praxi nepoužitelná. V HTTP s dokumentem můžete poslat spoustu metadat, ale co až soubor uložíte na disk? Většina souborových systémů vám neumožní u dokumentu uložit přídavná metadata jako content-type nebo encoding.

To je také jeden z důvodů, proč XML narozdíl od HTML obsahuje přímo uvnitř sebe informaci o kódování, a proč se pro XML doporučuje používat MIME typy application/xml, a ne text/xml.

Koneckonců ani specifikace XHTML neříká, že by se pro XHTML musel nějaký konkréktní MIME používat. Všechno jsou to jen doporučení typy, které je samozřejmě lepší používat než text/plain.
Timy
Profil
Jirka Kosek
Zase jsem podcenil Relaxed :-). Zkoušel jsem jenom starý známý validátor a ten to nezvládl zvalidovat.

Tak to se to ale docela hezky zamotalo. XHTML poslané jako text/html je tedy co...? Z toho všeho mi vyplývá, že je to XHTML vyhovující dokument, ale stejně tak je to nevalidní HTML dokument. Mimochodem jak jinak než podle MIME by se takový prohlížeč měl rozhodovat, jak stránku vykreslí?
Jirka Kosek
Profil *
XHTML poslané jako text/html je tedy co...?

XHTML je pořád XHTML, ale MIME typ text/html prohlížeči říká, že ho má zpracovávat jako HTML. Což vzásadě nevadí, protože XHTML (které používá implicitní jmenný prostor) jde pomocí běžných parserů HTML (čti těch co jsou v prohlížečích) načíst zcela bez problémů.

Z toho všeho mi vyplývá, že je to XHTML vyhovující dokument, ale stejně tak je to nevalidní HTML dokument.

To platí obecně. Žádný XHTML dokument nemůže být validní HTML, například proto, že DTD pro HTML nedeklaruje atribut xmlns.

Mimochodem jak jinak než podle MIME by se takový prohlížeč měl rozhodovat, jak stránku vykreslí?

Třeba pomocí heuristického odhadu na základě analýzy začátku souboru. Takhle se chová například IE, většinou na MIME typ bohužel úplně kašle.
Timy
Profil
Jirka Kosek
"Třeba pomocí heuristického odhadu na základě analýzy začátku souboru."
A jak by v tom případě rozeznal třeba txt dokument od html dokumentu? (viz výše uvedené příklady)
mata
Profil
Řekl bych, že IE právě na základě této analýzy usoudí že se jedná o HTML. Alespoň u mě IE zobrazí uvedený texťák jako webovou stránku.
jozob
Profil
Jirka Kosek
"Takhle se chová například IE, většinou na MIME typ bohužel úplně kašle."
Presne tak. Malý test: pridajte si na začiatok (X)HTML stránky generovanej PHP skriptom header:
<?php header("Content-type: image/jpeg"); ?>
Firefox sa pokúsi zobraziť obrázok, IE zobrazí stránku akoby sa nič niedialo.
Pajuc
Profil *
Pan Kosek myslím dostatečně přesvědčivě vše vysvětlil. Myslím, že mi to bude užitečné. Už kdysi jsem tuhle otázku diskutoval. U Dobrého webu jsem si udělal free audit své stránky. Výsledky auditu byly z více než poloviny chybné, a tak jsem jim v dobré víře poslal upozornění. Mj. jsem se pozastavoval i nad tím, že moje stránka napsaná v XHTML je označena jako HTML. V odpovědi mi ohledně toho bylo poukázáno na MIME typ. Proti tomu se mi těžko argumentovalo.

Takže nyní děkuji a pro závěrečné shrnutí bych zkusil vyextrahovat to, co mi přišlo podstatné:

zajímalo by mě, co vlastně určuje, co je XHTML dokument

Cokoliv, co je well-formed dokument XML, pokud to začíná elementem "html" v jmenném prostoru "http://www.w3.org/1999/xhtml"

a co HTML dokument

Cokoliv, co je validní oproti některému DTD pro HTML.



Koneckonců ani specifikace XHTML neříká, že by se pro XHTML musel nějaký konkréktní MIME používat. Všechno jsou to jen doporučení typy, které je samozřejmě lepší používat než text/plain.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0