Štítek polévka - Tag soup

Ve vývoji webových stránek je „ tag soup “ pejorativem pro syntakticky nebo strukturálně nesprávný HTML napsaný pro webovou stránku . Vzhledem k tomu, že webové prohlížeče historicky zacházely se syntaxí HTML nebo strukturálními chybami shovívavě, existuje malý tlak na webové vývojáře, aby dodržovali publikované standardy, a proto je potřeba, aby všechny implementace prohlížečů poskytovaly mechanismy pro zvládnutí vzhledu „tag soup“, přijímání a opravování neplatné syntaxe a struktury, je-li to možné.

Analyzátor HTML (součást webového prohlížeče ), který je schopen interpretovat značky podobné HTML, i když obsahuje neplatnou syntaxi nebo strukturu, lze nazvat analyzátorem tagů . Všechny hlavní webové prohlížeče mají v současné době analyzátor tagů pro interpretaci chybně formátovaného HTML, přičemž většina prvků pro zpracování chyb je standardizována.

„Polévka se značkami “ zahrnuje mnoho běžných autorských chyb, jako jsou například chybně formátované značky HTML , nesprávně vnořené prvky HTML a neuskutečněné znakové entity (zejména znaky ampersands (&) a méně než (<)).

Tento termín používám ve své výuce už roky k charakterizaci shluku lomených závorek, které fungují jako značky v HTML na stránkách, které prohlížeče akceptují. Nesprávná minimalizace, překrývající se konstrukce ... věci, které vypadají jako značky SGML, ale tvůrce neznal nebo nerespektoval pravidla SGML pro slovní zásobu HTML. Ve skutečnosti je to polévka sběru textu a značek. [...] Nikdy jsem neviděl nikde definovaný pojem.

-  G. Ken Holman, Re: [xml-dev] Co je to Tag Soup? , Seznam adresářů pro vývoj XML, 11. října 2002.

Služba ověřování značek je zdrojem pro autory webových stránek, aby se vyhnuli vytváření polévky značek.

Přehled

„Polévka se značkami“ je termín používaný k pomlouvání různých postupů při vytváření webu. Některé z nich (zhruba seřazené od nejzávažnějších po nejméně závažné) zahrnují:

  1. Chybně formátované značky, kde jsou značky nesprávně vnořeny nebo nesprávně uzavřeny. Například následující:
    <p>This is a malformed fragment of <em>HTML.</p></em>
    
  2. Neplatná struktura, kde jsou prvky nesprávně vnořeny podle DTD pro dokument. Mezi příklady patří vnoření prvku „ul“ přímo do jiného prvku „ul“ pro některý z HTML 4.01 nebo XHTML DTD. Dan Connolly uvádí použití prvku názvu mimo hlavní část.
  3. Použití proprietárních nebo nedefinovaných prvků a atributů namísto těch, které jsou definovány v doporučeních W3C. Například použití prvku Blink nebo prvku Marquee, což byly nestandardní prvky, které původně podporovaly pouze prohlížeče Netscape a Internet Explorer .

Příčiny a důsledky

Poškozené označení

Poškozené označení je pravděpodobně nejzávažnějším problémem při vytváření webu. Avšak díky lepšímu vzdělání a informacím a možná s trochou pomoci od XHTML se problém chybně značených značek stává méně častým. Prohlížeče, když se setkají s chybně formátovaným značením, musí uhodnout zamýšlený význam autora. Musí odvodit uzavírací značky tam, kde je očekávají, a poté odvodit otevírací značky, aby odpovídaly jiným uzavíracím značkám. Interpretace se může u jednotlivých prohlížečů výrazně lišit.

Zatímco mnoho grafických webových editorů vytváří dobře vytvořené značky, autor, který ručně píše kód pomocí textového editoru a poté testuje pouze v jednom prohlížeči, může takové chyby snadno přehlédnout. Prezentace se tedy může drasticky lišit od jednoho prohlížeče k druhému, protože každý se pokouší „opravit“ autorův záměr různými způsoby a poté na tyto „opravy“ aplikuje styling.

Neplatná struktura dokumentu

Neplatná struktura dokumentu zde znamená pouze použití atributů a prvků tam, kde nepatří. Například umístění atributu „cite“ na prvek „cite“ je neplatné, protože HTML a XHTML DTD nepřisuzují tomuto atributu tomuto prvku žádný význam. Podobně je neplatné také zahrnutí prvku „p“ do obsahu prvku „em“. S posunem k oddělení poškozených značek od neplatných značek se problémy s neplatnými značkami stále častěji považují za méně závažné. Někteří začali prosazovat modely volnějšího obsahu, které umožňují větší flexibilitu při vytváření dokumentů HTML (ať už v HTML nebo XHTML). Použití neplatného označení však může rozmazat autorův zamýšlený význam, i když ne tak přísně jako chybně označený.

Mnoho grafických webových editorů stále produkuje neplatné značky. Mnoho profesionálních webových designérů a autorů navíc věnuje málo pozornosti otázkám platnosti. Je běžné vidět neplatné označení na mnoha webech po celém webu.

Použití proprietárních / ukončených prvků

V raném věku webu (velká část 90. let) byl design oficiální specifikace HTML stále více napjatý ve srovnání s touhou designérů po flexibilitě při vytváření vizuálně živých návrhů. V reakci na tento tlak tvůrci prohlížečů jednostranně přidali do HTML nové proprietární funkce, které nespadaly do tehdejších standardů. To znamenalo, že v HTML byly proprietární prvky, které fungovaly v některých prohlížečích, ale v jiných ne.

Do určité míry byl tento problém zpomalen zavedením nových standardů W3C, jako je CSS, zavedených v roce 1998, které pomohly zajistit větší flexibilitu při prezentaci a rozvržení webových stránek bez nutnosti velkého počtu dalších prvků HTML a atributy.

Navíc v HTML 4 a XHTML 1 bylo mnoho prvků buď nahrazeno jediným sémantickým konstruktem (například prvky objektu nahrazující vlastní applet a prvky pro vložení ), nebo zastaralé kvůli prezentaci (jako „s“, „strike“ a „ u "prvky).

Přesto vývojáři prohlížečů pokračovali v zavádění nových prvků do HTML, když vnímali potřebu. Některé prohlížeče obsahovaly atributy tabindex u libovolného prvku. Vývojáři Apple WebKit představili prvek plátna , jehož verzi následně Mozilla přijala .

V roce 2004 založily společnosti Apple, Mozilla a Opera WHATWG s úmyslem vytvořit novou verzi specifikace HTML, která by odpovídala veškerému chování prohlížeče. To zahrnovalo změnu specifikace, pokud je to nutné, aby odpovídala existující shodě mezi různými prohlížeči.

Prvky plátna a vložení byly následně standardizovány WHATWG. Byly zahrnuty určité prvky (včetně b , i a malých ), které byly dříve považovány za prezentační a zastaralé, ale byly definovány spíše mediálně než vizuálně.

Verze specifikace WHATWG byly publikovány W3C jako HTML5 .

Vyvíjející se specifikace k řešení polévky značky

Zatímco některé problémy se štítkovou polévkou jsou způsobeny nedostatky prohlížečů a někdy kvůli nedostatku informací pro webové autory, některé z množení značkové polévky byly způsobeny chybějícími odkazy v samotných webových standardech. W3C stojí v čele několika snah o řešení nedostatků webových standardů. Jak více prohlížečů podporuje novější revize standardů, tlak na webové vývojáře, aby k řešení problémů používali nestandardní kód, se zmenšuje.

Kaskádové styly (CSS)

Kaskádové šablony stylů (CSS) poskytují mechanismus k určení prezentace prvků v dokumentu, aniž by se změnila struktura označení dokumentu. Předtím, než bylo CSS běžné, se weboví vývojáři možná uchýlili k nějakému strukturálně neplatnému značení, aby dosáhli určitých prezentačních cílů - například zahrnutí prvků na úrovni bloku do vložených prvků k získání konkrétního efektu nebo použití někdy velkého počtu <font> a jiných značek HTML specifických pro zobrazení . CSS používá k provedení těchto úkolů pravidla stylů, přičemž ponechává označení čistší a jednodušší.

XML a XHTML

XHTML je přeformulování jazyka HTML založeného na XML . XHTML byl vyvinut za účelem řešení mnoha problémů spojených se značkovou polévkou.

XML umožňuje analyzátorům oddělit proces interpretace syntaxe dokumentu a jeho struktury. V HTML a SGML analyzátor potřeboval znát určitá pravidla týkající se prvků během analýzy, například jaké prvky mohou být obsaženy v jiných prvcích a které prvky implicitně uzavírají předchozí prvek. Je to proto, že v HTML a SGML byly zavírací značky a dokonce i otevírací značky u některých prvků volitelné. Vyžadováním, aby všechny prvky měly explicitní otevírací a zavírací značky, mohou analyzátory XML analyzovat dokument a vytvořit strom dokumentu bez jakékoli znalosti typu dokumentu. To umožňuje, aby analyzátory byly univerzální a velmi lehké a aby byly odděleny od procesu ověřování nebo interpretace dokumentu.

Specifikace XML jasně definuje, že vyhovující uživatelský agent (například webový prohlížeč) nesmí přijmout dokument a nepokračovat v jeho analýze, pokud dojde k syntaktické chybě. Prohlížeč interpretující webovou stránku jako XHTML tedy odmítne zobrazit stránku, pokud narazí na chybu formace. To může pomoci zajistit, že když autoři otestují kód XHTML proti vyhovujícímu prohlížeči, budou okamžitě informováni o problémech s malformacemi: možná nejzávažnějším problémem, kterému čelí webové prohlížeče. Když je kód chybně formovaný, záměr autora je nejednoznačný. Bez směrnic XML musí prohlížeče HTML používat složité algoritmy k odvození zamýšleného významu autora v široké škále případů, kdy dojde k neplatné syntaxi.

XML a XHTML zavádějí koncept jmenných prostorů. Díky jmenným prostorům mohou autoři nebo komunity autorů definovat nové prvky a atributy s novou sémantikou a míchat je v rámci svých XHTML dokumentů. Jmenné prostory zajišťují, že názvy prvků z různých jmenných prostorů nebudou sjednoceny. Například prvek „tabulka“ lze definovat v novém oboru názvů s novou sémantikou odlišnou od prvku HTML „tabulka“ a prohlížeč bude schopen tyto dva odlišit. Při poskytování jmenných prostorů umožňuje XHTML v kombinaci s CSS autorským komunitám snadno rozšířit sémantickou slovní zásobu dokumentů. To umožňuje použití proprietárních prvků, pokud je lze prezentovat zamýšlenému publiku prostřednictvím úplných definic stylů (včetně sluchových / řečových a hmatových stylů).

Dokumenty XHTML lze doručovat na webu pomocí typu internetového média application/xhtml+xml nebo text/html Aktuální verze aplikace Microsoft Internet Explorer (6, 7 a 8) nezobrazují dokumenty XHTML obsluhované jako application/xhtml+xml . Zdá se, že vydání beta verze IE9 jsou kompatibilní. Viz také diskuse o tomto problému v článku XHTML .

HTML5

HTML5 si klade za cíl být doposud nejkompletnějším řešením problému polévky se značkami a přitom zůstat co nejvíce zpětně a dopředu kompatibilní. Na rozdíl od XHTML, které se odchyluje od zpětné kompatibility a zaujímá přístup, podle kterého by analyzátory měly být méně tolerantní ke špatně vytvořeným značkám, HTML5 uznává, že špatně vytvořený HTML kód již existuje ve velkém množství a pravděpodobně bude nadále používán, a zastává názor, že specifikace by měla být rozšířena, aby byla zajištěna maximální kompatibilita s tímto kódem.

Specifikace HTML 5 tedy změnila svoji definici syntaxe HTML, aby vyhovovala běžné syntaxi, která se dnes používá, a také aby přesně popsala, jak má analyzátor zacházet se „špatně vytvořeným kódem“. Zpracování špatně vytvořeného kódu má nyní místo v samotné specifikaci, doufejme, že sníží potřebu budoucích analyzátorů HTML implementovat další opatření mimo specifikaci pro zacházení s kódem, který nerozpozná.

Nástroje pro opravu polévky

  • HTML Tidy je softwarový nástroj dostupný pro mnoho platforem, který dokáže opravit neplatnou syntaxi a většinu neplatné struktury dokumentů a převádí kód podobný HTML na HTML nebo XHTML.
  • Aggiorno je doplněk Visual Studio, který se zaměřuje na to, aby weby vyhovovaly standardům
  • TagSoup je knihovna Java, která analyzuje HTML, čistí jej a poskytuje proud událostí SAX představujících dobře vytvořený XML (ne nutně platný XHTML). Tento nástroj se používá ke zpracování souborů JNLP v implementaci open source protokolu JNLP dostupného v IcedTea-Web , dílčím projektu IcedTea , projektu sestavení a integrace OpenJDK .
  • Beautiful Soup je analyzátor podobný modelu Python DOM pro soupy HTML / XML.
  • tagsoup : knihovna pro jazyk Haskell .

Platné odchylky od XHTML

Na rozdíl od přísného XHTML jsou HTML a jeho předchůdce SGML navrženy tak, aby je bylo možné psát lidmi, a již mají značnou míru flexibility v syntaxi, aby snížily standardizaci. Tyto rozdíly nečiní dokument neplatným, a proto nejsou polévkou značky. Následující platí pro HTML 4 i HTML5 a příklady pocházejí z prvních dnů HTML.

  • Značky jako <head>...</head> lze často zcela vynechat.
  • Uzavření značek lze často vynechat, protože specifikace odmítá některé prvky vnořené do sebe. Například <li>...</li> lze napsat více prvků bez uzavření.

I přes svou platnost tato opomenutí k analýze stále vyžadují speciální analyzátor se znalostí HTML (na rozdíl od přísnějšího XML). Navíc je běžné, že nástroje „opravují“ i tyto struktury. Například HTML Tidy umožňuje vynechání volitelných značek, ale výchozí je, aby tak neučinily.

Viz také

Poznámky

Reference