HTML (engl. ) jezik je osnova svake veb stranice, uz pomoć koga se prezentuje izgled i sadržaj iste. Omogućava formatiranje stranice, obradu slika, teksta i još mnogo toga. Konzorcijum za veb (engl. ) (W3C) je zadužen za određivanje standarda, ovo je neophodno zato što ne bi bilo moguće pregledavati bilo koju stranicu u bilo kom pretraživaču.

**HTML5** je predlog novih standarda koji nam pružaju nove mogućnosti, kao i da isprave i nadomeste neke dosadašnje nedostatke. Radi se o novoj verziji HTML-a, koja donosi niz novina i mogućnosti koje do sada nisu bile dostupne koristiti za izradu veb sajtova bez dodatnih dodataka (engl. ), kao što su Flash, Java i Silverlight. HTML5 predstavlja evoluciju HTML 4.01 standarda, a ne zamenu.

Istorija
--------

Ne možemo početi priču o HTML5 bez pomena najzaslužnijih ljudi, kao i bez osvrta na prethodne verzije i do danas utvrđenih standarda.

Najzaslužniji za razvoj HTML-a 5 je Tim Berners-Lee. Sve je počelo još 1980. godine, dok je Tim Berners-Lee radio po ugovoru u CERN-u (engl. ). Predložio je prototip sistema za istraživače u CERN-u, uz pomoć koga bi mogli da koriste i dele dokumente. 1989. godine, Tim Berners-Lee je napisao rad kojim predlaže hipertekst (engl. )  sistem baziran na Internetu. U drugoj polovini 1990. godine specificirao je HTML i napisao softver i za server i za pretraživač. Te iste godine Tim Berners-Lee i inženjer informatike u CERN-u Robert Cailliau, su sarađivali i zajedno zahtevali sredstva, ali projekat nije formalno usvojen od strane CERN-a. U svojim ličnim beleškama iz 1990. godine Tim Berners-Lee je nabrojao  neke od mnogih oblasti gde se hipertekst koristi, a kao prvu je stavio enciklopediju. Prvi pisani javni dostupni dokument o HTML-u je bio dokument pod nazivom „HTML Tags". Objavio ga je Tim Berbers-Lee u drugoj polovini 1991. godine. U ovom dokumentu je opisano 20 elemenata, koji su sačinjavali relativno jednostavan dizajn HTML-a.

HTML je skraćenica od *HyperText Markup Language* koji veb pretraživači koriste da interpretiraju i slože tekst, slike i ostale materijale na veb strani. Početne karakteristike za svaki element HTML-a je definisan u pretraživaču, a ove karakteristike se mogu dopuniti i izmeniti korišćenjem CSS-a. Tim Berners-Lee je smatrao HTML kao primenu SGML-a (engl. ). Formalno je definisan kao takav od strane IETF-a(engl. ) radom iz sredine 1993. godine, koji je bio predlog prve specifikacije HTML-a: "Hypertext Markup Language (HTML)" Internet-Draft by Berners-Lee and Dan Connolly, koja je uključivala SGML Document Type Definition da definiše pravila, tj. gramatiku. Pri kraju 1993. godine, Dave Raggett je predložio standardizaciju već implementiranih elemenata kao što su tabele i forme. 1994. godine je Beerners-Lee osnovao W3C na Masačusetskom tehnološkom institutu (engl. ), koji je usvojen kao standard prema kojem će sve veb stranice u budućnosti raditi na isti način.
Posle isticanja HTML-a sa dopunama, na početku 1994. godine IETF je osnovao HTML radnu grupu (engl. ), koja je 1995. godine završila „HTML 2.0", prvu HTML specifikaciju sa namerom da se na njoj temelje sva dalja usavršavanja i izmene. HTML 2.0 je uključio ideje iz HTML-a, kao i iz HTML-a sa dopunama, ali sa osnovnom namerom da se razlikuje od prethodnih verzija. Budući razvoj pod okriljem IETF-a je prekinut zbog sukoba interesa.

Od 1996. godine HTML specifikacija je održavana, dopunjavana od strane tvoraca komercijalnih softvera, kao i od strane W3C-a, čiji je osnivač Tim Berners-Lee. 2000. godine HTML postaje internacionalni standard (ISO/IEC 15445:2000). HTML 4.01 je objavljen krajem 1999. godine, sa dopunom je objavljena još jedna verzija 2001. godine.

2004. godine se počinje sa radom na HTML5. Ovom projektu se uz W3C priključila i WHATWG (engl. ) 2007. Godine. Mnogi su mislili da će WHATWG nestati kao samostalna organizacija, ali se zadržala kao takva i nastavila rad na specifikaciji HTML-a 5. Trenutno postoje dve paralelne verzije HTML-a 5, jedna službena na kojoj radi W3C, i neslužbena na kojoj rade stručnjaci iz Applea, Mozille, Opere i Googlea, koji imaju veliki uticaj na razvoj Interneta, iako iza sebe nemaju formalnu organizaciju kao što je W3C. Ipak, urednici HTML-a 5 specifikacije za oba tima su isti ljudi, što znači da grupe međusobno sarađuju i da će na kraju ipak postojati jedan standard. Urednici HTML 5 specifikacije su Ian Hickson iz Googlea i David Hyatt koji radi za Apple.

Specifikacije
-------------

* 2.0 – ( 1866)
* 3.2 – 14 januar 1997,
* 4.0 – 18. decembar 1997,
* 4.01 (manje izmene) – 24. decembar 1999,
* 15445:2000 (, bazirano na ) – 15. maj 2000.
* 5 – 22. januar 2008 (još uvek u razvoju)

Šta je HTML5?
-------------

Iako je WHATWG počeo sam da razvija HTML 5, može se reći da je HTML 5 proizvod saradnje W3C-a i WHATWG-a. HTML5 je još uvek u fazi razvoja, a standardizacija se očekuje 2014. godine, po procenama W3C-a. Kao peta verzija HTML-a osnovni cilj je bio unapređenje ovog jezika, kao i podrška za najnovije multimedijalne sadržaje. Pri tome je *cross-platform*, tako da nije bitno da li se dokument pregleda pomoću tableta, smartphonea, netbooka, sve dok postoji podrška za HTML5 na pretraživaču.

HTML5 je namenjen da prevaziđe ne samo HTML4, nego XHTML1 i HTML DOM. WHATWG je radio na veb formama i aplikacijama, dok je W3C radio na XHTML 2.0. 2006. godine su počeli zajedničku saradnju, tako da se HTML5 može smatrati mešavinom karakteristika i specifikacija HTML-a i XHTML-a. Ovome je doprinela zajednička praksa, kao i mnoge greške u postojećim veb dokumentima  Ovo je takođe i pokušaj da se definiše jedinstveni markup jezik, koji se može pisati i u HTML-u i u XHTML-u. Ovo uključuje detaljne procesne modele da bi ohrabrilo još interoperabilnih implementacija. To proširuje, unapređuje i racionalizuje označavanje dokumenata, kao što je omogućen i API (engl. ), za kompleksne veb aplikacije Neki od novih elemenata su video, audio, canvas, kao i mnogi drugi, o kojima će biti reč kasnije. Pored novih elemenata ne možemo a da ne pomenemo integraciju SVG (engl. ) sadržaja, koji zamenjuje upotrebu ‘’object’’ taga. Ove inovacije olakšavaju rukovanje multimedijalnim i grafičkim sadržajem na veb-u bez dodatnih *plugin*-ova i API-a. Neki od elemenata su promenjeni, neki izbačeni, sve u cilju pojednostavljenja organizacije i strukture dokumenta.

Osnovni principi
----------------

Na razvoju HTML-a 5 pored pokretača projekta, uključeni su i stručnjaci iz svih većih pretraživača, da bi svojim iskustvom i znanjem doprineli boljem i uspešnijem razvoju. Neke od ideja i principa kojima se vode ljudi koji učestvuju u razvoju HTML-a 5 su: 

* Nove karakteristike treba da se baziraju na HTML-u, CSS-u, DOM-u i JavaScript-u
* Smanjiti potrebu za eksternim *plugin*-ovima (Flash)
* Bolja obrada grešaka
* Više tagova koji bi zamenili skripte
* HTML5 bi trebalo da ne zavisi od uređaja na kome se koristi
* Proces razvoja treba biti dostupan javnosti

Novi elementi i karakteristike
------------------------------

### Strukturni i semantički elementi

Novi strukturni elementi | `<article>` | Definiše članak |
| `<aside>` | Definiše sadržaj, pored sadržaja same stranice |
| `<bdi>` | Izoluje deo teksta koji bi mogao biti formatiran drugačije, u odnosu na tekst izvan njega |
| `<command>` | Definiše komandno dugme koje korisnik može da pozove |
| `<details>` | Definiše dodatne detalje koje korisnik može da vidi ili da sakrije |
| `<summary>` | Definiše vidljiv naslov za *<details>* element |
| `<figure>` | Navodi samostojeći sadržaj, kao što su ilustracije, dijagrami, fotografije, spiskovi kodova, itd. |
| `<figcaption>` | Definiše naslov za *<figure>* element |
| `<footer>` | Definiše *footer* za dokument ili odeljak |
| `<header>` | Definiše *header* za dokument ili odeljak |
| `<mark>` | Definiše označeni tekst |
| `<meter>` | Definiše skalarno merenje u okviru poznatog opsega (manometar) |
| `<nav>` | Definiše navigacione linkove (hiperveza) |
| `<progress>` | Predstavlja napredak nekog zadatka |
| `<ruby>` | Definiše *ruby* anotaciju (za istočnoazijsku tipografiju) |
| `<rt>` | Definiše objašnjenje/izgovor karaktera (za istočnoazijsku tipografiju) |
| `<rp>` | Definiše šta da pokaže u pretrazivacima koji ne podržavaju *ruby* anotacije |
| `<section>` | Definiše odeljak u dokumentu |
| `<time>` | Definiše datum/vreme |
| `<wbr>` | Definiše mogući prekid linije(engl. ) |

### Medijski elementi

Novi medijski elementi | `<audio>` | Definiše zvučni sadržaj |
| `<video>` | Definiše video ili film |
| `<source>` | Definiše veze ka datotekama za *<video>* i *<audio>*, koje mogu biti u različitim formatima |
| `<embed>` | Definiše *container* za spoljnu primenu interaktivnih sadržaja (engl. ) |
| `<track>` | Definiše tekstualne trake za *<video>* i *<audio>* |

Atribut `control` na `<audio>` i `<video>` elementima dodaje kontrole kao što su /, kao i mogućnost kontrole jačine zvuka. Atribut `autoplay` omogućuje automatsku reprodukciju sadržaja po njegovom preuzimanju. `<video>` element poseduje i `poster` koji predstavlja link na sliku koja se prikazuje na samom elementu pre reprodukcije; u slučaju da ovaj atribut nije prisutan, prikazuje se prvi engl.  samog video snimka.

*<source>* element omogućava da audio i video datoteke budu na različitim lokacijama i u različitim formatima, a pretraživač će otvoriti prvi format koji podržava.  Preporuka je da se zbog razlika u kompatibilnosti i video kodecima dodaju izvori ka više datoteka u različitim formatima, kao i da se prikaže poruka sa linkovima ka samim audio i video datotekama kako bi posetioci mogli da pristupe sadržaju u slučaju da njihovi pretraživači ne podržavaju HTML5 audio i video.

#### Audio

Pre HTML5 nije postojao standard za reprodukciju audio datoteka na veb stranama, već se ona vršila uz pomoć *plugin*-ova (Flash). HTML5 kao jedno od unapređenja sadrži `<audio>` element, kojim je definisan način za postavljanje i reprodukciju audio snimaka na veb stranama.

```
<audio controls>
	<source src="song.ogg" type="audio/ogg" />
	<source src="song.mp3" type="audio/mpeg" />
	<p>Your browser does not support HTML5 audio.</p>
	<p>Download:
		<a type="audio/ogg" href="song.ogg">Ogg</a> |
		<a type="audio/mpeg" href="song.mp3">MP3</a>
	</p>
</audio>

```

#### Video

Pre HTML5 standarda nije postojao standard za postavljanja videa na veb stranama,  pa su za pregled video snimaka bili potrebni razni dodaci, Apple QuickTime, RealPlayer ili Adobe Flash.  Najveći problem je u usaglašavanju formata. Implementacije HTML5 u pretraživačima podržavaju .ogg, .mpeg4 i .webM.

```
<video width="320" height="240" controls>
	<source src="movie.mp4" type="video/mp4" />
	<source src="movie.ogg" type="video/ogg" />
	<p>Your browser does not support the HTML5 video.</p>
	<p>Download:
		<a type="video/mp4" href="movie.mp4">MP4</a> |
		<a type="video/ogg" href="movie.ogg">Ogg</a>
	</p>
</video>

```

### Formulari

Do pojave HTML5 standarda, postojalo je samo par osnovnih tipova kontrola na formularima (*text*, *checkbox*, *radio button*, *popup list* itd.), koji su u trenutku u kome su definisani bili dovoljni. Međutim, sa brzom ekspanizijom interneta, kako po broju korisnika, tako i po količini servisa i aplikacija, formulari su postajale sve korišćeniji, a potrebe sve veće. 

#### Elementi

|  |  |
| --- | --- |
| `<datalist>` | precizira listu unapred definisanih opcija za `<input>` element, što omogućuje dodavanje tzv. *AutoComplete* funkcionalnosti na elementima formulara; korisnici će videti padajuću listu unapred definisanih opcija dok unose podatke |
| `<keygen>` | svrha elementa je da obezbedi siguran način za proveru identiteta korisnika |
| `<output>` | element prikazuje rezultat neke operacije nad formularom  |

#### Atributi

HTML5 uvodi nekoliko novih atributa za `<form>` i `<input>`:

Novi atributi za `<form>` elemente| `autocomplete` | uključuje ili isključuje automatsko popunjavanje polja za sve kontrole na formularu |
| `novalidate` | uključuje ili isključuje validaciju za sve kontrole na formularu |

Novi atributi za `<input>` elemente| `autocomplete` | uključuje ili isključuje automatsko popunjavanje za datu kontrolu |
| `autofocus` | postavlja kursor za unos teksta u polje sa ovim atributom; može ga imati samo jedan element na stranici |
| `form`, `formaction`, `formenctype`, `formmethod`, `formnovalidate`, `formtarget` | omogućuju da se kontroli dodele svojstva formulara, bez potrebe da se sam elementi nalazi u okviru formulara; ovi atributi imaju identično ponašanje kao atributi istog imena na `<form>` elementu. |
| `height` i `width` | definišu dimenzije kontrole |
| `list` | definiše vezu na `<datalist>` element iz kojeg će uzimati vrednosti |
| `min` i `max` | definiše najmanju i najveću vrednost za kontrole tipa "" i "" |
| `pattern` | regularni izraz po kojem se vrši provera vrednosti polja **\*** |
| `placeholder` | predstavlja tekst koji se nalazi u polju do unosa, uglavnom predstavljen sivom bojom, koji se najčešće koristi kao vizuelni ključ o svrsi polja ili tipu/formatu sadržaja |
| `required` | označava polje koje obavezno mora imati vrednost **\*** |
| `step` | definiše korak povećanja vrednosti za kontrole tipa "" i "" |
| **\*** pretraživač zaustavlja slanje formulara ukoliko uslovi nisu zadovoljeni |

#### Tipovi kontrola

HTML5 uvovi pregršt novih tipova elemenata u veb formama, što u mnogome olakšava unos različitih tipova podataka i njihovu proveru. 

Novi tipovi kontrola| `color` | boja u heksadecimalnom zapisu (npr. `#FF00FF`) |
| `date`, `time, `datetime`, `datetime-local`, `month`, `week``  | različiti formati datuma i vremena |
| `email` | adresa elektronske pošte (npr. `example@example.com`) |
| `number` | brojna vrednost |
| `range` | opseg brojnih vrednosti |
| `search` | pretraga; nema funkcionalne razlike u odnosu na obično teksualno polje, ali se vizuelno razlikuje i nudi mogućnost pamćenja prethodno traženih termina |
| `tel` | broj telefona |
| `url` | veb adresa (npr. ) |

### Grafika

Do nedavno, veb programeri su bili ograničeni na CSS i JavaScript kod stvaranja animacija i vizuelnih efekata za svoje veb stranice, ili prinuđeni da koriste *plugin*-ove kao što je Flash. Sa dodatkom novih tehnologija kao što su Canvas elementi, Web GL i SVG slike, više nema potrebe za ovim. Čak sada imamo i nove mogućnosti, nove funkcije koje možemo koristiti za grafiku na vebu: 

* 2D Canvas
* WebGL
* SVG
* SMIL (engl. )

Naravno, nijedna od ovih novih tehnologija ne bi bile od koristi da se brzo ne izvršavaju. JavaScript *engine* su postali dovoljno brzi za pokretanje 3D igara i za manipulaciju videom u realnom vremenu. Programeri iskorišćavaju ove olakšice, poplava HTML grafičkih radova se pojavljuje na vebu, od implementacije starih 2D grafičkih algoritama do najnovijih tehnika stvorenih specijalno za moderni veb. 

### Drag and drop

*Drag and drop* se veoma često koriste. Predstavlja opciju „hvatanja" i „puštanja" objekta na određenu lokaciju. U HTML5 *drag and drop* je deo standarda i bilo koji element može biti premeštan na taj način. 

### Izbačeni elementi iz HTML4

Sledeći elementi koji su se koristili u HTML4 su uklonjeni u HTML5:

* <acronym>
* <applet>
* <basefont>
* <big>
* <center>
* <dir>
* <font>
* <frame>
* <frameset>
* isindex
* <noframes>
* <strike>
* <tt>

Novi objekti
------------

### Veb skladištenje

HTML5 Veb skladištenje (engl. ) i sesija (engl. ) skladištenja je najjednostavniji nivo veb skladištenja koji skladišti podatke za trenutnu sesiju – drugim rečima, sve dok je tab pretraživača ili prozor otvoren. Ovo možda i nije najbolje rešenje budući da specifikacije ostavljaju otvorenu mogućnost pretraživaču da sačuva ove podatke tokom ponovnog pokretanja.
Svaki dokument dobija *sessionStorage* objekat uz nekoliko glavnih funkcija a podaci su klonovi trenutnih vrednosti. Prave prednosti dolaze sa pristupom *localStorage* objektu koji je sličan *sessionStorage* objektu ali se ponaša potpuno drugačije. Tamo gde *sessionStorage* zaboravlja, *localStorage* pamti. Podaci bi trebalo da budu sačuvani čak i nakon što se prozori zatvore i računar isključi.

### Veb radnici

Veb radnik (engl. ) je JavaScript skripta definisana od strane W3C-a i WHATWG-a koju izvršava HTML strana u pozadini, nezavisno od ostalih *user-interface* skipti koje se takođe mogu izvršavati od strane iste HTML strane. 
W3C i WHATWG su zamislili JavaScript radnike kao skriptu koju ne prekidaju *user-interface* skripte, skripte koje odgovaraju na klik miša ili druge interakcije korisnika. Neprekidanje rada JavaScript radnika od strane korisničkih aktivnosti omogućava veb stranama da ostanu dostupne u trenutku izvršenja dugih procesa u pozadini. Najjednostavnija primena je u tome da se izvršavaju zahtevni procesi u pozadini bez prekidanja korisničkog interfejsa. W3C i WHATWG trenutno rade na definisanju API-a za veb radnike.

### Aplikacije sa keširanjem podataka

Od sve većeg značaja je dostupnost veb aplikacija kada smo *offline*. Svi pretraživači imaju svoje mehanizme za keširanje, ali oni su nepouzdani i neće raditi onako kako želimo. Sa *ApplicationCache* interfejsom HTML 5 pokušava da reši neke neprijatnosti koje se mogu desiti kada smo *offline*.

Korišćenje keš interfejsa nam pruža tri prednosti:

* *Offline* pretraživanje – korisnici se mogu kretati po vašoj stranici iako su *offline*.
* Brzina – keširani podaci su sačuvani na lokalnom disku, tako da se učitavaju brže.
* Smanjenje opterećenja server – pretraživač skida samo podatke koji su se promenili.

*AppCache* omogućava programerima da odrede koje fajlove će pretraživač keširati, a koje ne, za njihovu dostupnost kada je korisnik *offline*. Aplikacija će se učitati i raditi kako treba, čak iako korisnik osveži stranicu.

### SSE

HTML5 događaji slanja na server (engl. ) omogućavaju veb stranici da se automatski nadogradjuje (engl. ) sa servera. To je bilo moguće i ranije, ali je prvo veb stranica morala da pita da li su novi *update*-ovi dostupni. Sa SSE *update* stiže automatski.

* Primanje SSE notifikacije

*EventSource* objekat se koristi da bi se primila SSE notifikacija.

1. Kreiramo nov *EventSource* objekat, i određujemo *URL* stranice koja šalje *update*.
2. Svaki put kada je *update* primljen, *onmessage* događaj se pojavljuje.
3. Kada se *onmessage* događaj pojavi, staviti primljene podatke u element sa id="result".

Podrška pretraživača
--------------------

U ovom poglavlju ćemo videti koji nivo podrške za HTML 5 nam pružaju najpopularniji veb pretraživači. HTML 5 se veoma brzo menja i veb pretraživači podržavaju sve veći broj njegovih funkcionalnosti. U sledećoj tablici je prikazana trenutna podrška veb pretraživača za HTML 5 (Tabela 3).

|  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- |
|  |  **Chrome** | **Firefox** | **Explorer** | **Opera** | **Safari** |
| **Canvas** | Da | Da | Da | Da | Da |
| **Video element** | Da | Da | Da | Da | Ne |
| **Local storage** | Da | Da | Da | Da | Da |
| **Offline apps** | Da | Da | Ne | Da | Da |
| **HTML5 forms** | Delimično | Delimično | Ne | Da | Delimično |
| **Drag and Drop** | Da | Da | Da | Ne | Da |

Povezano
--------

* HTML
* CSS
* SVG

Literatura
----------

* Raggett, Dave (1998). *Raggett on HTML 4*. Pristupljeno 14. Maj 2013.
* Raymond, Eric. „IETF and the RFC Standards Process". *The Art of Unix Programming*. Arhivirano iz originala na datum 2005-03-17. Pristupljeno 2015-07-17.

Spoljašnje veze
---------------

* HTML5 – aktuelna specifikacija
* HTML 4.01 — aktuelna specifikacija
* Konzorcijum za web — organizacija koja je propisala HTML standard
* W3C validator — alat za proveru HTML dokumenata
* HTML5 Bookmarks Arhivirano 2015-07-26 na Wayback Machine-u — korisni članci i beleške
* HTML5 Center Arhivirano 2015-04-27 na Wayback Machine-u —HTML5 centar za pomoć
* HTML5 Demos — probne verzije i primeri
* Support — testiranje vašeg trenutnog veb pretraživača
* Mobile HTML5 — HTML5 za mobilne telefone
* FindMeByIP — podrška za konkretne funkcionalnosti HTML-a 5 kao i CSS-a
* TestingCenter Arhivirano 2013-05-12 na Wayback Machine-u — upoređivanje podrške veb pretraživača za HTML 5