HTML

HTML-keele esimese kirjelduse HTML 1.0 esitas Internet Engineering Task Force (ITRF) 1993 a juunis. Kirjeldus oli nn "mustand" (working draft), kuid see kiideti heaks esimesel WWW-konverentsil 1994 ja sellest ei saanudki kunagi standardit. Berners-Lee eesmärk HTML 1.0 loomisel oli anda Cern-i teadlastele lihtne vahend uurimistulemuste levitamiseks arvutivõrgu abil. Kuna need uurimisrapordid olid tavaliselt lihtsa struktuuriga tekstid: pealkiri, mõned alapealkirjad, siis puudusid HTML-i esimeses versioonis vahendid piltide ja tabelite esitamiseks ja esimesed www-sirvijad esitasid www-dokumente tavalises tekstiaknas. Kuid www-kasutamine levis kiiresti ja 1993 aastal avaldas NCSA (National Center for Supercomputer Applications, Univesity of Illinois at Urbana-Champaign) graafilise kasutajaliidesega sirvija Mosaic, mis paari kuuga muutus kõige populaarsemaks sirvijaks. Juba aasta pärast, novembris 1995 esitas ITRF kommentaaride saamiseks (RFC - Request For Comments) järgmise versiooni HTML 2.0, kus lisati paljud praegugi kasutusel olevad HTML-keele elemendid (aastal 2000 kuulutati HTML 2.0 aegunuks).

WWW populaarsus kasvas kulutulena ja 1994 a asutasid MIT (Massachusetts Institute of Technology), ERCIM (European Research Consortium for Informatics and Mathematics) ja Jaapani Keio Ülikooli arvutiteaduste laboratoorium rahvusvahelise koordinatsiooniorganisatsiooni W3C (World Wide Web Consortium), mis Tim Berners-Lee juhtimisel hakkas koordineerima WWW arengut ja on praeguseks välja tööanud rohkem kui 90 WWW-d reguleerivat standardit. 1994 a ilmus ka uus sirvija: Netscape; Netscape populaarsus kasvas väga kiiresti ja oli aasta lõuks 70% kõigist WWW-sirvijatest.

Järgmisel aastal kuulutas Bill Gates Netscapele ja teistele sirvijatele sõja. Oma seitsmendal detsembril (Pearl Harbour-i aastrapäeval) peetud kõnes vihjas ja Pearl Harbour-ile ja Mikrosoft võttis oma www-sirvija Internet Explorer-i (IE) levitamiseks kasutusele terve rea abinõusid, mis ei ole kooskõlas turunduse heade tavadega: IE kuulutati Windows-i lahutamatuks osaks, mida uutesse arvutitesse installeeritud Windows-ist ei tohtinud eemaldada ja PC-de tootjad ja müüjad (näiteks Compaq) pidid reklaamima IE-d kui kõige eelistatavamat sirvijat.

"Sirvijate sõja" ajal võtsid nii Netscape kui ka IE kasutusele palju HTML-keele laiendeid, mis toimisid vaid "oma" sirvijas, nii et "võõras" ei oskaks lehekülge üldse näidata. Et olukorda veidi normaliseerida, võttis W3W vastu uusi HTML-i standardeid, millesse püüti lisada parimad Netscape ja Mikrosofti poolt leiutatud (selle ajani mittestandartsed) HTML-keele laiendused:

HTML 4.01 põhjal avaldas rahvusvaheline standardiorganisatsioon ISO 15.05.2000 oma standardi ISO/IEC 15445:2000 (nn "ISO HTML").

Kuid peale "iseleiutatud" laienduste oli kogu HTML-keele kasutamine muutunud väga lohakaks. Kuna HTML-dokumente kirjutati enamasti tavaliste tekstieditoridega (Notepad), oli neis väga palju süntaksivigu, kuid et "parem" olla, püüdsid nii Netscape kui ka IE igal juhul midagi näidata ja vigadele mitte reageerida. Kuid kuna sirvijad sallisid vigu, levis väga lohakas HTML-dokumentide vormistamise stiil - märgendid võsid "minna risti", s.t. võis esineda näiteks selline märgendus: <b>... <i> ...</b> ... </i> (standardi järgi täiesti lubamatu), paljude kaheosaliste märgendite lõpumärgend puudus ( näiteks võib esineda märgendus <html><head>...<body>...</html> ) jne. Kuna sellise vigase märgenduse analüüsimiseks kulub rohkem programmiridu, siis sirvijate programm paisus palju suuremaks kui oleks tarvis korrektse ja standardeid jälgiva HTML-dokumendi esitamiseks. Kuid programmide suurus on väga oluline pihu- ja mobiilseadmetes, sellepärast on viimased W3W HTML-keele standardid (XHTML 1.0, 26.01.2000 ja XHTML 1.1, avaldatud 1.8.2002) hakanud taas nõudma ranget reeglite järgimist ja ühtlasi muutnud reeglid rangemaks: lõikuvad märgendid pole lubatud, kõigil märgenditel peab olema lõpp (kas eraldi lõpumärgend (<p>...</p>) või on lõpp samas märgendis (<br/>). Ainult formateerimiseks kasutatavad märgendid (<font>, <b>, <i> jne) pole uuemates HTML-versioonides (alates versioonist HTML 4.01 ) üldse enam lubatud; et selgitada, millise HTML-keele versiooni HTML-dokument jälgib, peab dokumendi algul olema dokumendi tüübi deklaratsioon, näiteks HTML 4.01 korral

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

HTML ja WWW-s dokumentide saatmise protokoll HTTP (HyperText Transfer Protocol) käsitlevad kogu dokumenti kui ühtset tervikut, mis kõik laetakse korraga. Pole võimalik muuta vaid avatud dokumendi mõnda osa - kui tahate midagi sellist, peab kogu lehekülje uuesti saatma ja kuvama. WWW-sirvijal (browseril) puudub igasugune (tagasi)side sellise ajas toimuva meedia esitamise kontrolliks ja tulemustest, HTML-failide (www-lehekülgede) edastamise protokoll HTTP on ühesuunaline: serverilt kasutaja sirvijasse.

Kui tekkis vajadus ka sisestamiseks (kasutaja peab sisestama mingeid andmeid), tuli hakata süsteemi HTML+HTTP täiendama - lisada võimalus kasutaja poolt www-lehe vormi kirjutatud andmete salvestamiseks serveril (vastupidise suunaga andmevoog). Selle realiseerib CGI (Common Gateway interface); CGI jaoks loodi rida skriptikeeli (Perl, PHP, Python, Ruby jne).

"Puhas" HTML- formaat (esimese standardi järgi) on väga lihtne ja kergestiõpitav, tavaliselt uurivad algajad vaid mõne juhuslikult avatud www-lehekülje teksi (käsk "View source"sirvijates) ja suudavad seejärel kohe hakata oma lehekülgi kirjutama - see oli (vist) kõige olulisem tegur, mis aitas kaasa WWW-plahvatuslikule levikule.

<html>
<head>
<title>HTML</title>
</head>
<body>
<H1>HTML</H1>
HTML-keele esimene standard võeti vastu...
</body>
</html>

HTML

HTML-keele esimene standard võeti vastu ...

Dokumendi HTML-tekst (source) Ja nii näitab seda HTML-i sirvija (IE, Firefox jne)

Nagu siit näha, on kohu dokument piiratud märgenditega <html>...</html> ja jaguneb kaheks osaks: märgendite <head...</head> vahel on päis, milles olev metainfo pole määratud kasutajale ja märgendite <body>....</body> vahel olev osa, milles kirjeldatakse kasutajale näidatav info. HTML-keele märgendid jagunevad oma otstarbelt kahte rühma:

- dokumendi kujundust kirjeldavad elemendid: rasvase- ja kaldkirja loomine, teksti värvi määramine, mitmesuguste kirjastiilide, loendite ja tabelite määramine jne - märgendid b, em, ol, ul, hr, blockquote, table ja teised.

- informatsiooni sisu ja struktuuri kirjeldavad elemendid: dokumendi nimi (märgend title), sisu kirjeldavad metamõisted (märgend meta), dokumendi eri tasemeteks jagavad alapealkirjad h1, h2, ... , h6, linke kirjeldavad märgendid a, link ja dokumendi tekstile pildi lisamise märgend img; peale selle saab (HTML kaasaegsetes versioonides) dokumendile lisada ka ajas toimuvaid meediaelemente: heli, videot ja animatsioone (Flash).

Kui HTML-i kasutamine muutus massiliseks, osutus, et mõlemad rühmad on liiga piiratud. Kuna www-lehekülgi vaadeldakse väga erineva suurusega ekraanidel (erineva suurusega aknas), siis on www-lehekülje tekst nö "voolav" - sirvija (browser) otsustab, millal toimub reavahetus; tabulatsiooni ei ole ja järjestikused tühikud asendatakse ühe tühikuga, seega võib sama lehekülg erinevates arvutites (erineva suurusega aknas) väge erinev välja näha. Teksti kujundasid oigasid: "kogu mu ilus formateering läheb kaotsi..." ja hakkasid kasutama teksti formateerimiseks (lehekülje elementide sundimiseks täpselt määratud kohale) tabeleid. Kogu lehekülje struktuuri kirjeldava (pea)tabeli ruutudes võivad olla uued alamtabelid, nende ruutudes taas uued; kui pilt peaks olema erinevate tabeliruutude kohal, lõigataksei see tükkideks ja mõnikord kasutatakse isegi ühe pikseli suuruseid tühje (läbipaistvaid) pildikesi, et mingi täht või rida õigesse kohta nihutada. Selline tabelitega "nipitamine" lõhub kogu dokumendi struktuuri ja paisutab WWW-lehe faili, nii et seda ei saa kasutada uutes, pihu- ja mobiilseadmetes. Veel halvem on dokumendi teisendamine .pdf formaati - see muudab kogu lehekülje pildiks ja faili suurus kasvab mitu korda. Formateerimine hakkas muutuma loogiliseks ja normaalseks alles siis, kui ilmusid CSS-stiililehed (Cascading Style Sheets) - stiililehed eraldavad formateerimiskirjeldused dokumendi sisust, nii et dokumentile võib olenevalt vajadusest määrata isegi mitu erinevat formateeringut - näiteks trükkimiseks, suurel ekraanil vaatamiseks ja pihu- või mobiilseadmes vaatamiseks.

Kuid ka dokumendi sisu ja loogilise struktuuri kirjeldamiseks pole HTML-is piisavalt vahendeid. HTML-i loomisel arvati, et lehekülje sisu iseloomustamiseks on piisav lehekülje päises dokumendi sisu kirjeldavate metamõistete loetlemine (meta märgendis). Kuid leheküljele võimalikult paljude külastajate saamiseks (külastajate arvust sõltub, kui paljud reklaamijad tahavad osta leheküljelt pinda oma reklaamile, s.t. puhas raha) hakkasid www-lehekülgede tegijad panema meta-märgenditesse sadu märksõnu, mis peagi muutsid kogu meta-märgendi peaaegu mõtetuks, nii et kõige populaarsem otsingumootor Google ei vaata selle poolegi. Pealegi ei võimalda meta-märgendid liigendada dokumenti alamosadeks - kui see on näiteks e-kaupluse hinnakiri, siis kuidas sealt leida just teid huvitava toote kirjeldus ja hind?

WWW levimisel erinevatesse maadesse avastati veel üks probleem - märgistik. Esimesed HTML-dokumendid olid ingliskeelsed ja kasutasid ASCII märgistikku, kuid peagi tahtsid WWW-lehekülgede kirjutajad hakata kasutama oma rahvuslikke tähestikke, milles peaegu kõigis esineb tähti, mida pole ASCII standardis (eesti nn "täpitähed" ja "susisevad"). Et need kindlasti õieti välja tuleks, peab kasutatava märgistiku ära näitama kas HTML-dokumendi päises meta-märgendiga

<meta http-equiv="Content-Type" content="text/html; charset=cp-1252">

voi XHTML-i puhul dokumendi tüübi deklaratsioonis:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="et">

Kõigi dokumendi sisu, s.t. dokumendis esitatava informatsiooni kirjeldamisega seotud probleemide lahenduseks peakski olema XML. Kui HTML on (rohkem) lehekülje esitamiseks ja kujundamiseks, siis XML on loodud just informatsiooni esitamiseks; selles puuduvad täielikult kujunduselemendid - kujundus tuleb kirjeldada stiililehtedega.


Ülesandeid:

1. Keele terminalide tähestik on T = {<b>, </b>, <i>, </i>, <p>, </p>} (terminalid on üksteisest eraldatud komadega, s.t. <b> on üks terminal!). Keelde kuuluvad kõik jadad, mis saadakse neist terminalidest , kui neid on kasutatud paarikaupa: kui kusagil lisatakse <x>, siis peab hiljem olema ka sellele vastav sulgev terminal/märgend </x> (x on kas b,i või p); "avav" märgend <x> peab alati olema enne sellele vastavat sulgevat märgendit  </x>. Kas see keel on kontekstivaba, kui muid tingimusi pole  (s.t. lubatud on ka märgendite "risti" kasutamine, näiteks selline jada <b><i></b></i>).

Kas see keel on kontekstivaba, kui "risti" kasutamine keelata, s.t. kusagil ei või avava märgendi <x> ja sellele vastava sulgeva märgendi  </x>  vahele jääda mingit teist avavat märgendit, millele vastav sulgev märgend ei ole enne märgendit </x> .   

2. Kuidas muutuvad vastused eelmise ülesande küsimustele, kui tähestikku on laiendatud "isesulgevate" terminalidega <br/> , <img/> ?


Küsimused, probleemid: ©2004-2013 Jaak Henno