HTML

**HyperText Markup Language** (*HTML*, *hypertekstmarkeringsspråk*) er et markeringsspråk for formatering av nettsider med hypertekst og annen informasjon som kan vises i en nettleser. HTML benyttes til å strukturere informasjon &ndash; angi noe tekst som overskrifter, avsnitt, lister og så videre &ndash; og kan, i en viss grad, brukes til å beskrive utseende og semantikk i et dokument. HTMLs grammatiske struktur er HTML DTD som ble skapt ved å gjøre bruk av SGML syntaks, som er en internasjonal standard for tekstformatering (ISO 8879). 

HTML ble opprinnelig definert i 1989 av Tim Berners-Lee og Robert Caillau. De tok utgangspunkt i SGML, som er en syntaks for tekstformatering (ISO 8879). Senere har HTML løsrevet seg fra SGML og siden 2010 er det dialekten HTML5 som har dominert i bruk på nettet. Denne vedlikeholdes av World Wide Web Consortium (W3C).

XHTML er en annen HTML-dialekt som er basert på XML.

## Historie
Konseptet bak hypertekst stammer helt fra middelalderen, da det ble utviklet et system for kryssreferanser. Hypertekst
refererer i dag ikke overraskende til lenker, men «hyper» omfatter også at man kan legge inn «lenker» til filer med grafikk og bilder som nettleseren laster inn i dokumentet som om det var en integrert del. I 1940-årene skrev Vannevar Bush artikkelen *[[As We May Think]]*, der han beskrev et datamaskin-drevet hypertekstsystem han kalte memex. Det var starten. Utover 1960-tallet, da datamaskiner begynte å bli vanligere, ble det gjort flere forsøk på å lage et slikt system som var praktisk å bruke. Første gang et slikt system ble laget, slik vi kjenner det, var i 1989, da HTML ble utviklet primært for å utveksle informasjon ved CERN. Systemet ble etter hvert populært rundt om på andre universiteter, og resten er historie.

## Teknikk
HTML utveksles mellom maskiner gjennom et sett datamaskininstruksjoner kalt HyperText Transfer Protocol, HTTP. HTTP kan sammenliknes med sosiale regler (hva vi skal si når) på samme måte som HTML kan sammenliknes med et språk (hvordan vi sier det vi sier).

HTML-spesifikasjonen utvikles i offentlige fora ved World Wide Web Consortium (W3C), en medlemsorganisasjon som har som mål å jobbe for et samlet Internett. Organisasjonen består av representanter fra forskjellige selskaper, som alle publiserer innhold (f.eks. nettsider) eller utvikler programvare som brukes på Internett, slik som nettlesere og vevtjenere. Av norske medlemmer kan Opera Software og NRK nevnes. Spesifikasjonen for HTML legges ut i flere skisser (drafts) før den endelig vedtas. Denne prosessen tar gjerne langt over et år, og diskuteres grundig (og ofte høylytt) av alle interesserte i mellomtiden.

Et HTML-dokument består av en rekke *elementer*, avgrenset av *tagger*, med forskjellige betydninger. Ved å «tagge» informasjonen man vil publisere, får man et HTML-dokument som kan legges ut på Internett (en nettside) og leses av en nettleser, som tolker de ulike elementene. Dokumentet vises så formatert i henhold til elementenes betydning. Elementene kan også hjelpe f.eks. søkemotorer med å forstå hvilken del av dokumentet som er tittelen, hva som er sitater osv.

De fleste HTML-dokumenter inneholder blant annet:

```
&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;/body&gt;
&lt;/html&gt;
```

Det er også vanlig at -seksjonen inneholder metadata. Innholdet i slike metatagger er i hovedsak innhold som skal fanges opp av søkemotorer.
Et element åpnes med en starttagg, &lt;element&gt;, og lukkes med en sluttagg, &lt;/element&gt;. Man trenger ikke å lukke samtlige elementer, da de fleste nettlesere forstår hvor de fleste lukkes likevel. Det er likevel sterkt anbefalt av W3C å lukke elementene, da dette gjør arbeidet med å tolke dokumentet enklere både for mennesker og programmer. XHTML-standarden sier at man **må** lukke alle elementer. Et element kan ha forskjellige *attributter* som beskriver enkelte egenskaper ved det. På mange av elementene er det med attributter mulig å angi bakgrunn, farge o.l., men siden HTML-standarden i utgangspunktet ikke tok høyde for visuelle uttrykk, har man utviklet et nytt språk for dette, kalt Cascading Style Sheets, som åpner for mer fleksible visuelle uttrykk.

## Vanlige elementer med forklaringer
* **h1** (Header 1) – Overskriften på dokumentet 
* **h2 – h6 ** (Header 2 – Header 6) – Underoverskrifter (angir underseksjoner), oftest i mindre skrift jo høyere tall
* **b** (Bold) – Gir fet skrift, men ingen viktighetshentydning
* **em** (Emphasis) – Indikerer vektlagt tekst, vises normalt i kursiv
* **i** (Italics) – Gir kursiv tekst
* **a** (Anchor) – En lenke til en annen ressurs på nettet (nettside, e-postadresse, nyhetsgruppe etc.)
* **p** (Paragraph) – Et avsnitt, vises som regel med en blank linje over og under
* **table**  (Table) – Lager en tabell
* **ul** (Unordered List) – Punktliste
* **ol** (Ordered List) – Nummerert liste 
* **br** (Break) – Linjeskift
* **div** (Division) – Som avsnitt, med linjeskift foran og bak, men normalt uten blank linje over og under, ofte brukt som skille for egne CSS-definisjoner eller med id-er som Javascript-programkode skal gjøre operasjoner på
* **span** (Span) – Som div men normalt uten linjeskift foran og bak
* **pre** (Preformatted) – vises normalt i en skrifttype der alle bokstaver og tegn er like brede og der linjeskift i HTML-en tas hensyn til, ofte brukt i egenoppsatte "tabulerte" tabeller uten bruk av 
* **strong** (Strong) – Indikerer viktig tekst, vises vanligvis i fete typer
* **form** (Form) – Benyttes for skjemaer rundt input-skjemaelementer, skrivefelt, tekstredigeringsområder, nedtrekksmenyer, knapper, avkryssningsbokser, flervalgsruter og lignende med elementene **input**, **select** og **textarea**.

Nettleserne har standardinnstillinger for hvordan disse elementene vises frem, bl.a. for skriftstyper, skriftsstørrelser, størrelse på mellomrom, farger osv. Overstyring for å bestemme egne innstillinger for HTML-dokumentet skjer normalt vha CSS.

## Versjoner

### HTML 1.0
Dette er den versjonen av HTML som Tim Berners-Lee og Robert Caillau utviklet i 1991. Denne versjonen inneholdt bare grunnleggende elementer for tekststrukturering. De fleste av disse er i dag utgått eller har blitt forandret.

### HTML 2.0
Dette er HTML 1.0 med noen få ekstra elementer.

### HTML +
Etter HTML 2.0 kom det mange forskjellige miljøer med egne versjoner av HTML, noe som førte til vanskeligheter med å lese dokumentene med mindre man hadde de rette programmene. **HTML +** var ment å være en fornyelse og forbedring av HTML-språket som alle kunne lese. Det ble laget støtte for tabeller, og strukturen i dokumentet ble formalisert. Det var på dette stadiet at dokumentene begynte å se ut som beskrevet ovenfor. HTML + ble foreslått av Dave Ragget i 1993, men ble aldri tatt opp som formell standard.

### HTML 3.2
Ingen av nettleserprodusentene implementerte alt av HTML 3.0 eller HTML +, så man hoppet rett på versjon 3.2 som bare tok opp i seg de viktigste delene av det de forskjellige produsentene allerede hadde laget, HTML 3.0 og HTML +. Mange elementer ble dermed ofret. HTML 3.2 er i all hovedsak grunnlaget for HTML slik vi kjenner det i dag.

### XHTML 1.0
I all hovedsak HTML 4, men med strengere syntaktiske regler (lukke alle elementer etc.). Ordet er en sammenføyning av HTML og XML. Grunnen til at man vil ha reglene så strenge er blant annet at utbredelsen av såkalte WYSIWYG-programmer, som har gjort det lettere å lage internettsider, har ført til mer rot og flere sider som ikke følger standardene. En annen grunn er at sider som følger de rigide, men ryddige reglene blir lettere å lese for små datamaskiner, som for eksempel PDA-er og Mobiltelefoner.

### HTML5
HTML5 er lansert og tok over for HTML4 i oktober 2014. Et av hovedmålene til HTML5 er å minimere behovet for å måtte installere eksterne programvarer ("plugins", webapplikasjoner) som Adobe Flash, QuickTime og Silverlight da lyd, video, vektorgrafikk og interaksjon er mer støttet direkte i nettleseren. HTML5 med Javascript støtter også bedre geolokasjon og lokasjonsbaserte tjenester, i tillegg til nyere åpne formater som skalerbar vektorgrafikk. 
HTML5 ble godkjent som en W3C Recommendation 28. oktober 2014.

### XHTML5
XHTML5 skulle utvikles parallelt med HTML5 og erstatte XHTML 1.0. XHTML har vært lite brukt etter 2012.

## Se også
* Cascading Style Sheets (CSS)
* JavaScript
* PHP
* Common Gateway Interface (CGI)
* SGML
* XML

## Referanser


## Eksterne lenker
*