Sémantika(francouzský sémantique ze starořeckého σημαντικός - označující) - věda o pochopení určitých znaků, posloupností symbolů a dalších symboly. Tato věda se používá v mnoha oblastech: lingvistika, proxemika, pragmatika, etymologie atd. Nedokážu si představit, co tato slova znamenají a co všechny tyto vědy dělají. A to je jedno, zajímám se o problém použití sémantiky v rozložení webu.
Poznámka
Nebudu se zde dotýkat termínu sémantický web. Na první pohled se může zdát, že témata Sémantický web a sémantický HTML kód jsou téměř to samé. Ale ve skutečnosti je sémantický web spíše filozofický koncept a se současnou realitou nemá mnoho společného.
Sémantické rozložení - co to je?
V jazyce má každé slovo specifický význam a účel. Když říkáte „klobása“, máte na mysli potravinářský výrobek, který je mletým masem (obvykle maso) v podlouhlém obalu. Zkrátka máte na mysli klobásu, ne mléko nebo zelený hrášek.
HTML je také jazyk, jeho „slova“ nazývaná tagy mají také určitý logický význam a účel. Z tohoto důvodu především sémantický kód HTML je rozložení se správným pomocí HTML značky, které je používají k zamýšlenému účelu, jak byly zamýšleny vývojáři jazyka HTML a webových standardů.
microformats.org je komunita, která pracuje na oživení idealistických myšlenek sémantického webu tím, že rozvržení stránky přibližuje stejným sémantickým ideálům.
Proč a kdo vůbec potřebuje sémantické rozložení?
Pokud se informace na mém webu zobrazují stejně jako na designu, proč si lámat hlavu a přemýšlet o nějaké sémantice?! Stejný práce navíc! Kdo to potřebuje?! Kdo to ocení kromě jiného designéra rozložení?
Takové otázky jsem slýchal často. Pojďme na to přijít.
Sémantické HTML pro webové vývojáře
Sémantický kód pro uživatele
Zvyšuje dostupnost informací na webu. Především je to důležité pro alternativní agenty, jako jsou:
- sémantický kód přímo ovlivňuje množství HTML kódu. Méně kódu -> lehčí stránky -> rychlejší načítání, méně potřebné paměť s náhodným přístupem na straně uživatele menší provoz, menší velikost databáze. Stránka se stává rychlejší a levnější.
- hlasové prohlížeče pro které jsou tagy a jejich atributy důležité, aby obsah vyslovovali správně a se správnou intonací, nebo naopak aby toho moc nenamluvili.
- mobilní zařízení kteří nejsou na plná síla podporují CSS a proto se zaměřují především na HTML kód, zobrazující jej na obrazovce podle použitých značek.
- tisková zařízení i bez dalšího CSS se informace vytisknou kvalitněji (blíže designu) a vytvoření ideální verze pro tisk se promění v pár snadných manipulací s CSS.
- Kromě toho existují zařízení a pluginy, které umožňují rychlou navigaci v dokumentu – například podle nadpisů v Opeře.
Sémantické HTML pro stroje
Vyhledávače neustále zdokonalují své metody vyhledávání, aby zajistily, že výsledky obsahují požadované informace. opravdu hledá uživatel. Sémantické HTML k tomu přispívá, protože půjčuje se hodně lepší analýza— kód je čistší, kód je logický (jasně vidíte, kde jsou nadpisy, kde je navigace, kde je obsah).
Dobrý obsah a vysoce kvalitní sémantické rozvržení je již seriózní aplikací dobré pozice ve výsledcích vyhledávačů.
- Překlad
Udělám odvážnou předpověď. Dlouho po vás a já tu bude HTML. Nejen na miliardách archivních stránek naší doby, ale jako živé dýchací orgány. Do vývoje webových nástrojů, protokolů a platforem bylo vynaloženo příliš mnoho úsilí, energie a investic, než aby bylo možné od toho všeho snadno upustit.
Zastavme se, abychom zvážili naši odpovědnost. Bohužel jsme v historii spojeni s vývojem důležitého nástroje pro naši civilizaci, který bude sloužit ke komunikaci po desítky let. A tak když svou mysl, ať už nečinnou nebo vážně, zaměříme na zlepšení HTML, musíme pochopit, jak dalekosáhlé mohou být důsledky našich rozhodnutí.
HTML 5, které W3C nedávno zdvojnásobilo své úsilí o vytvoření nové generace HTML, nabralo během posledního zhruba roku značný rozmach. Jedná se o obrovský projekt, který pokrývá nejen HTML struktura, ale také analýzu modelů, modely zpracování chyb, DOM, algoritmy pro extrakci zdrojů, mediální obsah, 2D grafiku, datové šablony, bezpečnostní modely, modely načítání stránek, ukládání dat na straně klienta a mnoho dalšího.
Dochází také ke změnám ve struktuře, syntaxi a sémantice HTML, některé z nich popsal Lachlan Hunt v článku “HTML 5 Overview” (překlad na Habré).
Ale v tomto článku se podíváme pouze na sémantiku HTML. To je něco, co mě zajímá už mnoho let a myslím, že je to pro budoucnost HTML velmi důležité.
BBC nedávno oznámila, že sníží podíl mikroformátu hCalendar ve svém televizním programovém průvodci ve prospěch přístupnosti a pohodlí designového vzoru abbr. To ukazuje, že jsme nepochybně posunuli sémantické schopnosti HTML daleko za hranice toho, co bylo kdy zamýšleno, a skutečně je to pro jazyk možné. Právě nám došly prvky a HTML atributy, což může zlepšit sémantiku dokumentu. Pokud budeme pokračovat v podvádění s existujícími HTML konstrukcemi, bude se objevovat stále více problémů, jako je tento. Protože HTML jako sémantický značkovací jazyk trpí zásadní chybou – jeho sémantika je pevná a není rozšiřitelná.
Nejde jen o teoretický problém. Stovky tisíc vývojářů používají třídy a id k vytvoření dalších sémantické označení(Používají je také jako „háčky“ pro CSS styly, ale to je jiná věc). Téměř vždy tito vývojáři používají speciální slovníky, jejichž významy si sami vytvářejí, spíše než významy existujících schémat. Toto je pseudo-sémantické značení - v nejlepším případě.
Mnoho stránek na internetu používá mikroformáty k přidání více strukturované sémantiky, než je možné s ochuzenou sadou prvků a atributů HTML. V tomto případě jsou hodnoty použité pro atribut class konzistentní se slovníky, někdy převzatými z jiných standardů, jako je vCard , někdy z nově vytvořených slovníků, kde není pevně zakódován stávající standard(jako je tomu u hReview).
Rozšiřitelná sémantika
Zde je velmi vážný problém, který je třeba řešit. Potřebujeme mechanismy v HTML, které jasně a jednoznačně umožní vývojářům přidávat do jejich označení výraznější sémantiku, spíše než pseudosémantiku. Toto je možná nejnaléhavější výzva pro projekty HTML 5.Ale není tak snadné přijít s mechanismem, který by vytvořil více sémantiky HTML obsah Odpověď: Každé řešení má významná omezení. Snad největší je zpětná kompatibilita. Řešení nemůže narušit stovky milionů dnes používaných zobrazovacích zařízení, která budou používána v následujících letech. Jakékoli řešení, které není kompatibilní, nebude vývojáři široce přijímáno ze strachu ze ztráty čtenářů. Na révě rychle uschne.
Řešení musí být také dopředně kompatibilní. Ne v tom smyslu, že by to mělo fungovat v budoucích prohlížečích – to je úkol pro vývojáře prohlížečů, ale měl by být rozšiřitelný. Nemůžeme očekávat žádné jediné řešení, které nyní vyvineme, aby v budoucnu vyřešilo všechny představitelné i nepředstavitelné potřeby sémantiky. Dokážeme vyvinout řešení, která lze rozšířit tak, aby vyhovovala budoucím potřebám, jakmile se objeví.
Tyto obtíže dohromady představují obrovskou výzvu. Ale v kontextu jazyka, jehož hlavní iterace probíhají v desetiletých intervalech a jehož důležitost jako globální platformy pro komunikaci je prvořadá, je to problém, který je třeba vyřešit.
Jak tedy HTML 5 tento problém vyřeší? HTML 5 zavádí řadu nových prvků. Nazval jsem nějaké "strukturální" - sekce, navigace, stranou, záhlaví a zápatí. Dialogový prvek je svým typem a obsahem podobný blockquote. Existuje také řada datových položek, jako je metr, což je „skalární měření ve známém rozsahu nebo zlomková hodnota, jako je využití disku“; a prvek času (http://www.w3.org/html/wg/html5/#the-time), který představuje datum a/nebo čas.
I když tyto prvky mohou být užitečné a ukázalo se, že jsou zajímavé, zda mohou skutečně vyřešit tento problém, bude podléhat omezením vzestupné a zpětné kompatibility.
Podívejme se na každou překážku
zpětná kompatibilita
Jak moderní prohlížeče zvládají tyto nové prvky, jako je sekce? Dobře, poslední Verze Safari, Opera, Mozilla a dokonce i IE7 dělají vše na stránce takto.< h1 >Nadpis nejvyšší úrovně h1 >
< section >
< h1 >Nadpis druhé úrovně h1 >
< p >toto je text v prvku sekce p >
< section >
< h1 >Nadpis třetí úrovně h1 >
section >
section >
Zpočátku to vypadá skvěle. Ale když se pokusíme nastavit styly CSS například na prvek sekce, který vypadá takto:
Sekce (barva: červená)
... Většina zmíněných prohlížečů toto zvládá, ale IE7 (a zejména 6) nikoliv.
Máme tedy problém se zpětnou kompatibilitou se 75 % aktuálně používaných prohlížečů. Vzhledem k poločasu rozpadu internet Explorer, můžeme předpovědět, že většina uživatelů bude používat IE6 a IE7 i za několik let.
Pokud HTML 5 zavádí nové prvky, jaká je pravděpodobnost, že je bude používat velká většina vývojářů – vzhledem k tomu, že nejsou kompatibilní s většinou používaných prohlížečů?
Podívejme se na kompatibilitu zdola nahoru, což je další problém.
Kompatibilita zdola nahoru
Nejprve si položíme otázku: "Proč vymýšlíme tyto nové prvky?" Rozumná odpověď by byla: "Protože v HTML není dostatek sémantiky a přidáním těchto prvků zvýšíme sémantiku HTML, což nemůže být špatné, nebo ano?"Přidáním těchto prvků zvažujeme nutnost navýšení kapacity sémantika HTML, ale pouze v úzké sféře. Bez ohledu na to, kolik prvků zavedeme, vždy budeme přemýšlet o přidání další sémantiky HTML. A přidání tolika prvků, kolik chceme, problém nevyřeší. Nemusíme přidávat konkrétní termíny HTML slovník, musíme přidat mechanismus, který umožní rozšířit sémantiku dokumentu podle potřeby. Technicky řečeno, musíme udělat HTML rozšiřitelný. HTML 5 nenabízí mechanismus rozšiřitelnosti.
HTML 5 tedy plní funkci, která zabije značné procento moderních prohlížečů a vůbec zabrání přidání sémantiky jazyka.
Ještě mám pár otázek ohledně nových prvků. Odkud se vzaly názvy nových prvků? Jak bylo rozhodnuto, že se navigační prvek bude jmenovat „nav“? Proč se v navigaci používají výrazy na úrovni stránky, na úrovni webu a na úrovni meta webu?
Proč nepřijmout existující slovník, jako je DocBook? Jeho slovník struktury dokumentů je bohatší a byl v průběhu let rozvíjen prostřednictvím odborných publikací. To není argument ve prospěch DocBooku, ale jde o to, že je extrémně důležitý úkol Příprava mechanismu pro poskytování sémantiky HTML probíhá s malou pozorností k praxi v práci, která začala před více než 30 lety. (Původní práce na GML začaly na počátku 70. let)
Nějaké nápady na řešení
A tak vzhledem k mimořádně důležité důležitosti současného úsilí nějaké mám praktická doporučení, Jak tento problém vyřešit. No, začal jsem s jedním.Pokud se o přidávání nových prvků nemluví, pak alespoň v této diskusi jsou atributy jiné logická oblast HTML, soustřeďme se na to. Koneckonců, atributy class a id používáme jako mechanismy pro rozšíření sémantiky HTML již téměř deset let. Mnoho vývojářů to již zná a cítí se pohodlně. Projekt mikroformátů ukázal, že existující atributy nestačí k tomu, aby byly použity jako mechanismus pro rozšíření sémantiky HTML. Pokud tedy chceme použít atributy k řešení problému, musíme zavést jeden nebo více nových atributů. Než se pustíme do mechaniky toho, jak by to mohlo fungovat, je spravedlivé podřídit tento návrh stejným požadavkům jako nové prvky v HTML 5. Nejdůležitější věcí při zavádění nových atributů je, zda bude HTML zpětně kompatibilní. Pokud ano, poskytuje to funkční mechanismus pro rozšíření sémantiky v HTML?
Pojďme vymýšlet nový atribut. Říkejme tomu „struktura“, ale název není důležitý. Můžeme to použít takto:
Pojďme se podívat, jak to ocení naše prohlížeče.
Všechny naše prohlížeče samozřejmě vykreslí následující prvek CSS.
Div (barva: červená)
Co třeba tohle:
Div (tloušťka písma: tučné)
Ve skutečnosti téměř všechny prohlížeče, včetně IE7, zacházejí se stylem div pomocí atributu struktury, i když žádný takový atribut neexistuje. Bohužel naše štěstí mizí, protože neexistuje IE6. Tento atribut ale můžeme použít v HTML a všechny existující prohlížeče ho poznají. Můžeme dokonce použít CSS styly pro naše HTML, pomocí atributu ve všech moderních prohlížečích. A pokud chceme obejít starší prohlížeče, můžeme přidat třídu s hodnotou stylu. Ve srovnání s řešením HTML 5, které přidává nové prvky, které nefungují v Internet Exploreru 6 nebo 7, vidíme, že se určitě jedná o zpětně kompatibilní řešení.
Rozšiřitelnost pomocí atributů
Místo nových prvků by mělo HTML 5 přijmout řadu nových atributů. Každý z těchto atributů bude patřit do kategorie nebo typu sémantiky. Například, jak jsem popsal v jiném článku, HTML zahrnuje: strukturální sémantiku, rétorickou sémantiku, sémantiku rolí (převzatou z XHTML) a další třídy a kategorie sémantiky.Tyto nové atributy lze použít jako atribut třídy: pro poskytnutí sémantiky prvku, pro popis charakteru prvku nebo pro metadata prvku.
To se neliší od atributových rolí v XHTML, kde máme jeden atribut pro všechny sémantické prvky, které musíme definovat Různé typy sémantiku prvků a oddělit je.
Například atribut role XHTML funguje takto:
< ul role ="navigation sitemap" >
< li href ="downloads" >Stahování li >
< li href ="docs" >Dokumentace li >
< li href ="news" >Zprávy li >
ul >* Tento zdrojový kód byl zvýrazněn pomocí Zvýrazňovače zdrojového kódu.
Hodnota atributu role je prostor rozděleného seznamu slov definovaný standardním slovníkem nebo zadaným slovníkem.
Proč nepřijmout atribut role tak, jak je? Ostatně existují i jiné typy sémantiky, pro které není definice role použitelná. Například:
Je to fantastický člověk.
To demonstruje teoretický typ sémantiky - "rétorický", který může být použit k označení dokumentu rétorické povahy. Tento prvek v dokumentu zjevně nehraje roli ironie. Naopak obsahuje prvky ironie.
Zde je další příklad. Je stále jasnější, že HTML postrádá lidsky čitelnou reprezentaci strojově čitelné hodnoty, jako je datum. To je jádro problému BBC s mikroformátem hCalendar, o kterém jsme hovořili dříve. I když První máj příštího roku opravdu nedává smysl, analogicky první máj příští rok bude existovat.
Opět, když použijeme specifický termín „ekvivalent“ jako atribut nebo cokoli jiného k označení tohoto druhu sémantiky, není to problém. Je důležité poznamenat, že to není tak jednoduché jako použití atributu třídy nebo role, kde je celá sada prvků informační sémantiky umístěna do jednoho prvku. Pro správně rozšiřitelné řešení, které poskytne zpětně kompatibilní a dostatečnou flexibilitu, stojí za to prozkoumat tímto směrem.
Tuto sekci jsem nazval „Některé nápady na řešení“, protože k vytvoření skutečně funkčního řešení je třeba vykonat značné množství práce. Mezi otevřené otázky patří následující.
- kolik různých sémantických atributů by mělo být. Budou tyto kategorie rozšiřitelné, a pokud ano, jak?
- Jak definovat slovník?
- Jednoduše si vymyslíme termíny, které chceme, v podstatě stejným způsobem, jaký použili vývojáři třídní hodnota, nebo by měly být možné hodnoty definovány standardizovanou specifikací?
- Pokud máme konflikt mezi dvěma slovníky, například dva stejné termíny jsou definovány dvěma různými slovníky, jak to vyřešit?
- Je nutný jmenný prostor nebo existuje jiný mechanismus?
Místo toho, abych spěchal s odpověďmi na tyto otázky, vytáhl jsem na světlo problémy, které je třeba řešit, a zahájil jsem dialog. Následky a rozsah rozhodnutí učiněných v HTML 5 jsou příliš velké na to, aby bylo možné tato rozhodnutí učinit, je nutné přinést povědomí o lingvistice, sémantice, sémiotice a příbuzných oborech.
Doufám, že je jasné, že pouhé zavádění nových prvků do HTML není řešením problému rozšiřování sémantiky v HTML.
Nespěchejme na snadné řešení – s klimatickou změnou to vše zatíží problémem stejně jako nyní naše vnoučata. Přinejmenším jim nechme co nejlepší HTML.
Štítky: Přidat štítky
Účelem HTML tagů je zprostředkovat význam dokument. Nedělejte si starosti s tím, jak vaše webová stránka vypadá. Zaměřte se na význam každé značky, kterou použijete.
V závislosti na obsahu, který jste napsali, můžete vybrat vhodný prvek, který odpovídá významu textu.
Rozsah prvky jsou dostatečně široké, aby vyhovovaly materiálům Všeobecné cíle (jako jsou odstavce nebo seznamy) a další charakteristický obsah jako
Strukturální prvky: organizace stránky
Strukturální prvky vám pomohou uspořádat hlavní části vaší stránky. Obvykle obsahují další HTML prvky.
Typická webová stránka může obsahovat následující:
tak jako První prvek stránky, který může obsahovat logo a slogan; jako titulek stránky;
jako hlavní obsah stránky, jako je článek na blogu;
Textové prvky: Definování obsahu
Uvnitř konstrukčních prvků obvykle najdete text prvky určené k definování cílová váš obsah.
Využijete především:
Pro odstavce;
- pro (neuspořádané) seznamy;
- pro (uspořádané) seznamy;
- pro jednotlivé položky seznamu;
pro uvozovky.
Vložené prvky: Různé Texty
Protože textové prvky mohou být dlouhé, ale s různým obsahem, malá písmena prvky umožňují rozlišovatčásti textu.
Existuje mnoho vložených prvků, ale obvykle se setkáte s těmito:
Pouhým přečtením tohoto HTML kódu snadno pochopíte, co každý z nich znamená HTML prvek.
Všechny druhy různých věcí a některé oddaný a dokonce Důležité slova. Další odstavec.Titulek hlavní stránky
Titulky
Jednou řekl
Společné prvky
Pokud pro váš obsah není vhodný žádný sémantický prvek, ale přesto chcete vložit prvek HTML (pro účely seskupování nebo stylingu), můžete se rozhodnout pro jeden ze dvou Všeobecné Prvky:
- Pro blokové prvky;
- Pro inline prvky.
I když tyto HTML prvky ve skutečnosti žádné nenesou význam, budou se nám hodit, až začneme používat CSS.
Netrapte se sémantikou
Na výběr je asi 100 sémantických prvků HTML. To je hodně. Procházet tento seznam a vybrat vhodnou položku pro váš obsah může být zdrcující.
Ale neztrácejte příliš času starostmi o to. Pokud se budete držet následujícího seznamu tento moment, to by stačilo.
Strukturální Text Malá písmena
Co je sémantika v HTML
Slovo „sémantika“ přišlo do HTML z běžných lingvistických (lingvistických) disciplín. Tam se pojem „sémantika“ vztahuje k oddílům, které studují význam a účel jednotek lidského jazyka. Na rozdíl od skutečných lidských jazyků není v HTML potřeba učit se jazykové jednotky. V HTML se jazykové jednotky nazývají „tagy“ a jejich účel je již specifikován ve specifikaci HTML, dokumentu společném pro všechny webové vývojáře. V tuto chvíli existuje několik variací na téma specifikace HTML (v závislosti na verzi jazyka), ale o to nejde. Nyní je pro nás a tento článek důležité něco jiného. Jedná se o přítomnost jasného a srozumitelného vysvětlení pro každou jazykovou jednotku - značku HTML, v odpovídající specifikaci HTML. Jestliže tedy v reálné lingvistice lidského jazyka je sémantika studiem účelu nesrozumitelných slov a pojmů, pak v HTML je naopak sémantika správnou aplikací a používáním hotových a vysvětlených značek.
Sémantické rozložení webového dokumentu
Sémantické rozvržení webové stránky nebo sémantický kód HTML dokumentu je rozvržení se správným použitím HTML tagů v souladu s jejich účelem (sémantikou). Sémantické rozvržení navíc předpokládá logickou a konzistentní hierarchii pro konstrukci celé webové stránky v souladu se zákony dokumentu HTML.
Jaký je rozdíl mezi sémantickým rozložením a běžným rozložením?
Sémantické rozvržení webového dokumentu je v kontrastu s konvenčním rozvržením, ve kterém je psaní HTML kódu určeno pouze vzhledem webové stránky. Se sémantickým rozložením má řada prvků stránky své vlastní značky, které přímo odrážejí jejich účel. Toto je „sémantika“ v HTML. Struktura jednoduché webové stránky s normálním rozložením tedy může vypadat například takto:Záhlaví webuObsah webové stránky
Poté, stejně jako u sémantického rozvržení, bude struktura stejné webové stránky vypadat takto:Záhlaví webu Obsah webové stránky
Jak je vidět z příkladu, příslušné značky se používají k označení a specifikaci odpovídajících standardních prvků webové stránky. Kromě toho je kód mnohem jednodušší. Vzhled takové stránky pro lidské oko přitom zůstane absolutně nezměněn. Nabízí se rozumná otázka – proč tedy potřebujeme sémantické rozložení a označení webové stránky, když ji lidé nevidí?Proč je potřeba sémantické rozložení?
Sémantické rozvržení a označení webové stránky je viditelné pro prohlížeč a roboty. Sémantické rozvržení a označení umožňuje přesněji určit význam jednotlivých prvků webové stránky a celého textu jako celku. Proto je v prvé řadě potřeba sémantické rozvržení pro zlepšení robotické funkčnosti webu a v důsledku toho , lepší indexování vyhledávání. Není to to, o čem všichni sníme?
Sémantické rozložení v HTML5
Naprostá senzace a revoluce v pojetí webové sémantiky nastala s příchodem HTML5.
V HTML4 bylo všechno docela jednoduché. Pro návrh webových stránek napsaných v souladu se sémantikou stačilo použít externí kaskádové styly (CSS) a několik jednoduchých inovací, jako je nahrazení tagů A na A . HTML5 je mnohem více „sémantické“ a to je vidět z uvedeného příkladu.
Nové oblíbené sémantické značky HTML5
Nejdříve,- jednoduchý a srozumitelný dokument.
Problémy s kompatibilitou HTML5 a XHTML
V zásadě neexistují žádné problémy s kompatibilitou HTML5 a XHTML. Všechny nové prohlížeče dokonale podporují a spouštějí značky HTML5. Jediné zklamání čeká fanoušky platného kódu. Protože většina webů není uspořádána v HTML, ale v XHTML. A nyní se dostáváme ke zvláštní situaci – doctype je z XHTML a značky jsou z HTML5. Validátor se zavěsí a píše červeně. V tuto chvíli všichni přivírali oči nad takovou „nesrovnalostí“. Tak co dělat? Ostatně XHTML byl vždy pouze odvozený jazyk od HTML.
Hlavním jazykem webu je tedy stále HTML5. V blízké budoucnosti budou problémy s kompatibilitou mezi HTML5 a XHTML s největší pravděpodobností vyřešeny buď pouhým ignorováním problému ve prospěch HTML5, nebo jednoduchým přidáním HTML5 tagů do specifikace XHTML. V každém případě půjde o jednoduché řešení, bez zásadní restrukturalizace stavu. Toto HTML5 utrpělo příliš mnoho na to, aby se nyní začalo vážně pohrávat s XHTML5.
Plynulý přechod šablony z XHTML do HTML5
Podle odborníků není HTML5 jedna velká věc, je to soubor různých funkcí. Proto můžete začít postupně přecházet z XHTML na HTML5 a do šablony přidávat potřebný kód kousek po kousku. XHTML validátor bude proklínat a vše se brzy zformuje. Koneckonců, všem ostatním je to fuk; HTML5 tagy fungují všude a všechno. Nejprve můžete změnit obecnou strukturu své šablony jednoduchým nahrazením tříd CSS sémantickými značkami z příkladu „Jaký je rozdíl mezi sémantickým rozložením a běžným rozložením“.
HTML5 | Sémantické označení webu
(hlavní je začít)
Opět, jak říkají známí odborníci, „upgrade“ na HTML5 lze provést jednoduchou změnou doctype. Živelv HTML5 má extrémně jednoduchý tvar:. Po takové „aktualizaci“ se nestane absolutně nic, protože všechny tagy definované v HTML4 jsou podporovány i v HTML5. Co se týče přechodu z XHTML na HTML5, neodvážil jsem se to na svém webu tak dramaticky změnit, rozhodl jsem se pouze postupně vyměnit některé tagy a změnit strukturu stránky.Ilustrace: Kevin Cornell
Překlad: Vlad Merzhevich
Chci učinit odvážnou předpověď. Až ty a já zmizíme, HTML tu bude stále. Nejen na miliardách archivovaných stránek naší doby, ale jako živý, dýchající organismus. Do vývoje internetových nástrojů, protokolů a platforem bylo vynaloženo příliš mnoho úsilí, energie a investic, než aby bylo možné jej tak snadno opustit.
Soustřeďme se na svou odpovědnost. Bohužel jsme v historii spojeni s vývojem důležitého nástroje pro naši civilizaci, který bude sloužit ke komunikaci po desítky let. Když tedy věnujeme svou mysl, nečinně nebo vážně, zlepšování HTML, musíme dnes pochopit důsledky dalekosáhlých rozhodnutí.
HTML5, které W3C nedávno zdvojnásobilo své úsilí o vytvoření nové generace HTML, se významně rozvinulo. Jedná se o obrovský projekt, který zahrnuje nejen strukturu HTML, ale také model analýzy, zpracování chyb, DOM, algoritmy extrakce zdrojů, mediální obsah, 2D grafiku, datové šablony, zabezpečení, načítání stránek, ukládání dat na straně klienta a mnoho dalšího. .
Dochází také ke změnám ve struktuře, syntaxi a sémantice HTML, kterými se Lachlan Hunt v článku částečně zabýval.
V tomto článku se ale zaměřme pouze na sémantiku HTML. Zajímá mě to už mnoho let a věřím, že sémantika je pro budoucnost HTML zásadně důležitá.
BBC nedávno oznámila, že opouští mikroformát hCalendar používaný ve svých programových seznamech ve prospěch pohodlné a přístupné šablony zkratek. To naznačuje, že jsme nepochybně překročili sémantické schopnosti HTML, které byly pro tento jazyk určeny. Jednoduše nám došly prvky a atributy HTML, které obohacují sémantické značení dokumentů. Pokud budeme pokračovat v podvádění se stávajícími konstrukcemi HTML, vyvstane mnoho problémů, protože HTML jako sémantický značkovací jazyk trpí zásadní chybou – jeho sémantika je pevná a není rozšiřitelná.
Nejde jen o teoretický problém. Stovky tisíc vývojářů používají atributy class a id k vytvoření bohatého sémantického označení. Zároveň vývojáři téměř vždy používají speciální slovníky, které sami skládají, spíše než hodnoty převzaté z existujících schémat. To je v nejlepším případě pseudosémantika.
Mnoho stránek na internetu používá mikroformáty k přidání strukturovanější sémantiky než chudá sada dostupných prvků a atributů HTML. V tomto případě jsou hodnoty použité pro atribut class nastaveny z konsensuálních slovníků, někdy převzatých z jiných standardů, jako je vCard, a někdy z nově vytvořených slovníků, kde neexistuje žádný pevný standard (jako v hReview).
Rozšiřitelná sémantika
Existuje skutečný problém, který je třeba vyřešit. Potřebujeme mechanismy v HTML, které jasně a jednoznačně umožní vývojářům přidávat do značek smysluplnější sémantiku spíše než pseudosémantiku. To je možná jeden z důležitých cílů projektu HTML5.
Ale přijít na takový mechanismus není tak snadné, protože každé řešení má svá omezení. Existují významná omezení, z nichž možná největším je zpětná kompatibilita. Řešení by nemělo zlomit stovky milionů zařízení, která se dnes používají a která se budou používat ještě mnoho let. Jakékoli řešení bez zpětné kompatibility nebude vývojáři široce přijímáno ze strachu ze ztráty čtenářů. Taková rozhodnutí rychle chřadnou na révě.
Řešení by mělo být kompatibilní i s budoucími verzemi. Ne v tom smyslu, že by měl fungovat v budoucích prohlížečích – to je odpovědností vývojářů prohlížečů, ale měl by být rozšiřitelný. Nemůžeme očekávat, že by se právě teď vyvíjelo jediné řešení, které vyřeší všechny myslitelné i nepředstavitelné budoucí sémantické potřeby. Můžeme navrhnout řešení, které bude vyhovovat rozšiřujícím se potřebám, jakmile nastanou.
Tento tandem dvou omezení je skutečně obrovský problém. Ale v kontextu jazyka, jehož hlavní iterace se opakují po celá desetiletí a jehož význam jako globální platformy pro komunikaci je prvořadý, je třeba tuto výzvu splnit.
Jak tedy HTML5 řeší tento problém? HTML5 zavádí řadu nových prvků, z nichž některé nazývám „strukturální“ –
, I když tyto prvky mohou být užitečné a zdá se, že vyvolaly určitý zájem, skutečně řeší problém, zejména zpětná a budoucí kompatibilita?
Podívejme se na každé omezení.
zpětná kompatibilita
Jak moderní prohlížeče zvládají nové prvky jako
? No, nejnovější verze Safari, Opera, Mozilla a dokonce i IE7 vykreslí všechny stránky takto. Záhlaví nejvyšší úrovně
Nadpis druhé úrovně
toto je text uvnitř sekce
Nadpis třetí úrovně
Vypadá to na skvělý začátek. Ale když se pokusíme nastavit například tento styl pro prvek
: Sekce (barva: červená)
Většina zmíněných prohlížečů změnila styl prvku, ale IE8 (a IE6–7) nikoli.
Máme tedy vážný problém se zpětnou kompatibilitou se 75 % aktuálně používaných prohlížečů. Vzhledem k poločasu rozpadu Internet Exploreru můžeme předpovědět, že většina uživatelů bude i po několika letech stále používat IE6 a IE7.
Pokud HTML5 zavádí nové prvky, jaká je pravděpodobnost, že je většina vývojářů převezme vzhledem k tomu, že jsou v podstatě nekompatibilní s většinou prohlížečů? Bohužel, pokud vidíte alternativní řešení problému CSS, je zahrnutí atributu třídy do prvku
a pak zkuste změnit styl pomocí třídy, pak to v IE nebude fungovat. Může existovat řešení, ale pokud ne, tam to končí. Pojďme k druhému omezení – kompatibilitě s budoucími verzemi.
Budoucí kompatibilní
Začněme tím, že si položíme otázku: "Proč vymýšlet nové prvky?" Rozumná odpověď by byla: „Protože HTML postrádá sémantickou bohatost a přidáním těchto prvků zvyšujeme sémantickou bohatost HTML – což není špatná věc, že?“
Přidáním těchto prvků se snažíme o větší sémantické schopnosti v HTML, ale pouze v úzké oblasti. Bez ohledu na to, kolik prvků je zavedeno, vždy budeme přemýšlet o přidání více sémantiky do HTML. Přidání tolika nových prvků, kolik chceme, stále problém nevyřeší. Nemusíme dodávat jisté podmínky do HTML slovníku musíme přidat mechanismus, který nám umožní obohatit dokument o sémantiku podle potřeby. Z technického hlediska musíme udělat HTML rozšiřitelný. V HTML5 neexistuje žádný mechanismus pro rozšíření. To je důvod, proč HTML5 zabije značné procento moderních prohlížečů a ve skutečnosti vůbec nepřidává sémantiku.
Proč nepřijmout stávající slovník, stejný Docbook? Jeho slovník struktury dokumentů je mnohem bohatší a byl vyvinut řadou odborníků v průběhu mnoha let. To však není argument ve prospěch Docbooku, jde o to, že úkol poskytnout mechanismus pro sémantické bohatství v HTML jde svou vlastní cestou, přičemž věnuje malou pozornost osvědčeným postupům ve vztahu k práci před třiceti lety (původní práce začala na počátku 70. let).
Pár myšlenek na řešení
Kritizuji současné snahy, mám nějaké praktické rady o tom, jak tento problém vyřešit? No, začnu jedním.
Zatímco přidávání prvků do HTML je mimo téma, alespoň pro tuto diskusi, atributy jsou další logickou oblastí HTML, na kterou se zaměříme. Koneckonců již téměř deset let používáme atributy class a id jako mechanismy pro rozšíření sémantiky HTML. Mnoho vývojářů tento přístup zná a vyhovuje jim. Projekt mikroformátů ukázal, že existující atributy HTML nejsou dostatečné k poskytnutí univerzálního mechanismu pro rozšíření sémantiky HTML. Pokud tedy chceme pomocí atributů pomoci vyřešit tento problém, musíme zahrnout jeden nebo více nových atributů. Než se pustíme do mechaniky toho, jak to funguje, otestujme toto řešení se stejnými požadavky jako u nových HTML prvky 5. A co je nejdůležitější, jsou nové atributy HTML zpětně kompatibilní? A pokud ano, poskytne to skutečný mechanismus pro sémantické rozšíření HTML?
Pojďme implementovat nový atribut. Budu tomu říkat "struktura", ale na konkrétním názvu nezáleží. Můžeme to použít takto:
Pojďme se podívat, jak si s tím poradí naše prohlížeče. A samozřejmě všechny prohlížeče musí změnit svůj styl pomocí CSS.
Div (barva: červená)
Ale jak to udělat?
Div (tloušťka písma: tučné)
Ve skutečnosti téměř všechny prohlížeče, včetně IE7, styl
s atributem struktura, i když takový atribut neexistuje! Bohužel zde naše štěstí končí, protože... IE6 to nedělá. Ale můžeme použít atribut v HTML a je to stávající prohlížeče poznat ho. Můžeme dokonce použít CSS ke stylování našeho HTML s atributem ve všech moderní prohlížeče. A pokud chceme obejít starší prohlížeče, můžeme k prvku přidat hodnotu třídy a ovládat jeho styl. Porovnejte to s řešením HTML5, které přidává nové prvky, které nelze stylizovat v Internet Exploreru 6 nebo 7, a uvidíte, že toto řešení je rozhodně lépe zpětně kompatibilní.Rozšiřitelnost pomocí atributů
Místo nových prvků by HTML5 mělo přijmout řadu nových atributů. Každý z těchto atributů bude zahrnut do kategorie nebo typu sémantiky. Například, stejně jako já, HTML zahrnuje strukturální sémantiku, rétorickou sémantiku, sémantiku rolí (převzatou z XHTML) a další třídy nebo kategorie sémantiky. Tyto nové atributy lze použít stejným způsobem jako atribut class: k připojení sémantiky k prvku, která popisuje povahu prvku, a také k přidání metadat o prvku.
To se neliší od atributu role v XHTML, ale místo toho, aby jeden atribut převzal zásluhy za všechny sémantické prvky, musíme definovat různé typy sémantiky prvků a oddělit je. Například atribut role v XHTML funguje takto:
Hodnoty atributu role jsou mezerami oddělený seznam slov z výchozího slovníku nebo z konkrétního slovníku.
Proč prostě nevzít atribut role tak, jak je? No, existují další druhy sémantiky, pro které není slovník rolí použitelný. Například:
Je to fantastický člověk.
Zde je znázorněn teoretický typ sémantiky – „rétorika“, kterou lze použít k označení rétorického charakteru dokumentu. Tento prvek zjevně v dokumentu nehraje roli ironie. Spíše obsahuje prvek ironie.
Zde je další příklad. HTML zjevně postrádá způsob, jak připojit strojově čitelné verze k člověkem čitelné verzi například data. Toto je jádro problému BBC s mikroformátem hCalendar, o kterém jsme hovořili dříve. Ačkoli Prvního května příštího roku opravdu nedává smysl, něco jako čára Prvního května příštího roku objeví se.
Opět není důležité, zda pro tento sémantický atribut použijeme konkrétní termín „ekvivalent“ nebo nějaký jiný termín. Hlavní věc, kterou je třeba poznamenat, je, že to není tak jednoduché jako použití jedné třídy nebo atributu role pro všechny případy. Pro správné rozšiřitelné řešení, které poskytuje zpětnou kompatibilitu a dostatečnou flexibilitu, stojí za to prozkoumat řešení v tomto směru. Tuto část jsem nazval „Některé myšlenky na řešení“, protože je potřeba vykonat značné množství práce, abychom skutečně dosáhli přijatelného řešení. Mezi otevřené otázky patří následující.
- Kolik různých sémantických atributů by mělo být? Jsou kategorie rozšířeny, a pokud ano, jak?
- Jak jsou definovány slovníky?
- Jednoduše vymýšlíme termíny, které chceme, podobně jako se používá atribut class, nebo by měly být možné hodnoty definovány standardní specifikací? Nebo by měl existovat mechanismus pro implementaci (a doufejme, že sdílení) slovníků pomocí nějakého profilu?
- Pokud dojde ke konfliktu mezi dvěma slovníky, jako jsou dva stejné termíny v různých slovnících, jak se to vyřeší?
- Je vyžadován jmenný prostor nebo jiný podobný mechanismus?
Místo toho, abych spěchal s odpovědí na tyto otázky, upozorním na problémy, které je třeba řešit, a zahájím dialog. Důsledky a dopad rozhodnutí učiněných v HTML5 jsou příliš velké pro rozhodnutí učiněná bez dobrého pochopení lingvistiky, sémantiky, sémiotiky a příbuzných oborů. Doufám, že je jasné, že pouhé „vytváření nových prvků“ není řešením pro zvýšení sémantické síly HTML. Nespěchejme s těmito rozhodnutími, vždyť jsme našim vnoučatům nadělali dost problémů se změnou klimatu. Nechme je alespoň nejlepší HTML co můžeme.