HTML
Basis
Børre Stenseth

HTML

Hva

Siden Tim Berners-Lee [1] ved CERN introduserte HTML (hypertext Markup language) i 1989, har vi hatt flere versjoner av HTML med litt forskjellige egenskaper, og vi har hatt en serie med nettlesere som i varierende grad har tolket de ulike HTML-versjonene litt forskjellig. Nettleserene har hatt det til felles at de har hatt en stor grad av toleranse når det gjelder å tolke HTML. De har akseptert HTML som ikke er velformet i henhold til krav om at elementer skal være lukkede, ikke overlappe osv. Nettleserne har også vært bakover kompatible slik at både gamle HTML-formuleringer og etablerte dårlige skrivevaner skal fungere.

Vi har også hatt tilløp til at nettlesere har introdusert sine egne små finurligeheter for å oppnå spesielle effekter. Som regel er dette gjort slik at effektene ikke gjør noen skade i andre nettlesere, men slik at den spesielle nettleseren har hatt et fortrinn som framvisningsprogram. Det er lett å forstå at det har blitt slik ut fra markedsvurderinger. En nettleser som f.eks. bare ville akseptere velformet HTML ville trolig få en skare idealistiske tilhengere, men ville neppe bli noen slager i markedet.

En konsekvens av denne utviklingen er at vi har en ganske forvirret verden, og det er praktisk talt umulig å holde seg ajour med hva som virker, hvordan det virker og under hvilke betingelser det virker. Det beste vi kan gjøre er å fokusere på det abeidet som gjøres i W3C og håpe at anbefalingene derfra får gjennomslag.

Oversikten over definisjonene av alle de HTML-versjonene vi har hatt siden 1989 overlater jeg til de som har historiske interesser. W3C er en kilde for materiale. I denne modulen setter vi fokus på på HTML 4, XHTML og overgangen til HTML5.

Noen begreper i et historisk perspektiv

Historien om World Wide Web og tilhørende teknologier er skrevet i utallige versjoner og finnes en eller annen form i de fleste lærebøker i relevante emner. Denne historien tolkes og analyseres på forskjellig måte, alt etter hvilket fokus forfatteren har.

SGML

(Standard Generalized Mark-up Language) [2]

SGML var opprinnelig et initiativ fra IBM for å muliggjøre utveksling av dokumenter mellom systemer. Arbeidet ble påbegynt så tidlig som på slutten av 60-tallet av Goldfarb, med hjelp av Mosher og Lorie (GML). Arbeidet endte opp som ISO-standard (ISO 8879) i 1986. SGML er en svært omfattende standard som har hatt en viss utbredelse innen organisasjoner med stort behov for dokumentadministrasjon. Typiske anvendelser er forlag som ønsker å kunne publisere i forskjellige formater og f.eks. flyfabrikker med stort behov for å kunne dokumentere produksjon, der kvalitetssikring og sporbarhet er nøkkelord.

SGML har de samme karakteristika som vi forbinder med XML. SGML er utvidbart, det vil si at det ikke er et endelig språk, men et regelsett for å definere språk, et metaspråk. SGML-språk var basert på definisjon av dokumenttyper, DTD (Document Type Definition). Det ble skrevet parsere for SGML og det ble definert et språk for å definere stilsett for SGML-dokumenter, DSSSL (Document Style Semantics and Spesification Language). [3]

Det er alltid vanskelig å vurdere hva som gjør at en teknologi "tar av" mens en annen ikke gjør det. Det finnes en god del logiske argumenter for at SGML kunne slått gjennom som en viktig nøkkelteknologi i et større marked. Hovedgrunnene til at det ikke skjedde var trolig for det første at det er for omfattende og for det andre at behovet for dokumentstrukturering ikke var allment annerkjent som en generelt stor og allmen utfordring før bruken av Internett hadde modnet.

HTML

HTML ble utviklet ved CERN (opprinnelig: Conseil Européen pour la Recherche Nucléaire, nå:Organisation Européenne pour la Recherche Nucléaire) i 1989 av Tim Berners-Lee. Hensikten var å kunne utveksle og binde sammen dokumenter innen organisasjonen. Arbeidet ble basert på SGML, og HTML kan betraktes som et språk definert i SGML. HTML skiller seg altså fra SGML, og XML, ved at det er et definert språk med et fast ordforråd. HTML har et endelig sett med elementer.

HTML ble utviklet uten at noen var i stand til å forutse hvor stor utbredelsen av dette språket skulle bli. Word Wide Web eksploderte og vi fikk generelle nettlesere som kunne parse og framstille HTML.

Det er mange som i ettertid har fundert på hvordan HTML burde ha vært og hvordan nettleserne burde ha utviklet seg for at vi idag skulle hatt en litt enklere verden enn vi har. Slike spekulasjoner er interessante i den grad vi kan bruke dem til å belyse aktuelle problemstillinger. Det er to forhold som fortjener oppmerksomhet som grunnlag for forståelse.

  1. HTML bidrar ikke til å gjennomføre et klart skille mellom struktur og layout. I hovedsak ble HTML designet med elementer som er av strukturell art, men vi vet at mangelen på stilsett tidlig i utviklingen har ført til att de strukturelle elementene brukes til å tvinge fram layout.

  2. Nettleserne ble alt fra starten laget med en betydelig toleranse for misformede dokumenter. SGML har til en viss grad en slik toleranse. Dette har opp gjennom mange generasjoner av HTML og nettlesere ført til en ganske uoversiktlig situasjon der dokumenter blir tolket og framstilt på forskjellig og ofte uforutsette måter. Det har dessuten ført til at den dokumentstrukturen som legges til grunn ved parsing blir tvetydig. Scripting, dynamisk HTML på klientsiden, blir vanskeliggjort.

HTML har eksistert i forskjellige versjoner, med HTML4 som den siste offisielle anbefalte versjonen lansert 1998. HTML5 som ble lansert i, 2010/2011, er idag dominerende. Se wikipedia [4] . Mer om HTML5 nedenfor.

CSS

Cascading Style Sheets. [5]

Vi må minne om at en av hovedpersonene bak CSS, Håkon Wium Lie, kommer fra Halden og har sin grunnutdanning i informatikk fra HiØ. Første verson av CSS ble lansert 1994.

CSS er et språk som gjør det mulig å definere hvordan ulike elementer i et HTML- eller XML- dokument skal vises. Hensikten med dette er altså at dokumentet kan lages (i hovedsak) med tanke på struktur, mens utseendet kan defineres og endres uten å endre i selve dokumentet. Dette er interessant også fordi ett og samme dokument kan vises etter de behov ulike medier krever (Store skjermer, små skjermer, papir). CSS er et svar på noe av det som ble ivaretatt med DSSSL i forhold til SGML, men som ikke ble ivaretatt når HTML opprinnelig ble definert.

XML

eXtensible Markup Language [6]

Siden 1998

XML er i en viss forstand en ny start, der erfaringene fra historien er ivaretatt. XML er bygget på samme lest som SGML, og er i stor utstrekning et subsett av SGML. Det er vesentlig enklere enn SGML, det har ingen toleranse for ufullstendige formuleringer og det er altså, i motsetning til HTML, ikke et språk men et metaspråk. Det vil si: et regelsett for å definere språk. XML mangler noe viktig for å være et språk, nemlig ord.

Det betyr at når vi skriver et XML-dokument kan vi kontrollere at det er velformet i henhold til de grunnleggende generelle syntaksreglene, og vi kan kontrollere at det er validerbart som dokument av en bestemt type. Det siste forutsetter at vi har definert en dokumenttype i form av en DTD (Document Type Defnition) eller et SCHEMA. Å definere en DTD betyr egentlig at vi definerer vårt eget språk. En validering betyr at vi sjekker at et dokument er skrevet i henhold til dette spåket. XHTML er et slikt språk, se nedenfor.

De grunnleggende syntaksreglene i XML er befriende enkle, men bildet kompliseres en god del av en del praktiske nødvendigheter som dukker opp når fragmenter fra ulike dokumenttyper skal blandes osv. Mer om slike komplikasjoner andre steder i dette materialet.

CSS kan koples mot XML.

XHTML

XHTML, anbefalt 2000 , er i kort sagt HTML4 formulert som ekte XML. Det betyr at XML er basis istedet for SGML. XHTML stiller altså krav til en strengere syntax. I perioden 2000 - 2006 ble det arbeidet med flere varianter av XHTML. XHTML bringer skillet mellom struktur og utseende framover. En rekke attributter som er lovlige i HTML4 er tatt ut av XHTML, og må erstattes med CSS.

XHTML kommer i tre versjoner: strict, transitional og frameset. Vi ser nærmere på de to første. Alle krever velformethet, men de skiller seg litt når det gjelder krav til hva vi kan legge inn av layout i selve HTML-koden, det vil i hovedsak si hvilke attributter vi kan anvende. Strict-versjonen aksepterer f.eks. ikke:

<img src="up.gif" border="1" alt="bilde"/>
  

Årsaken er at attributten border anses å være formatering som skal ivaretas i et stilsett. Vi kan imidlertid skrive:

<img src="up.gif" style="border:1px" alt="bilde"/>

De viktigste kravene til velformethet som følger av XML-plattformen er:

Riktig Galt
Elementer må ikke overlappe.
     <h1>Overskrift</h1>
     <p>Avsnitt2</p>
     
     <h1>Overskrift
     <p></h1>Avsnitt2</p>
     
Element- og atributtnavn skal skrives med små bokstaver (minuskler).
       <h1>Overskrift</h1>
       <p>Avsnitt</p>
       
       <H1>Overskrift</H1>
       <P>Avsnitt</p>
       
Ikke-tomme elementer skal avsluttes eksplisitt med en sluttag.
   <p>Avsnitt1</p>
   <p>Avsnitt2</p>
   
   <p>Avsnitt1
   <p>Avsnitt2
   
Attributtverdier skal stå i anførselstegn.
   <img src="up.gif" alt="Bildet"/>
   
   <img src=up.gif alt=Bildet/>
   
Verdi-attributt par skal skrives fullt ut
   <dl compact="compact"/>
   
   <dl compact/>
   
Tomme elementer skal enten ha en sluttag, eller slutte med />
   <hr/>
   <br/>
   
   <hr>
   <br>
   

På W3C finner du en komplett liste og noen gode råd. Se f.eks. W3C [7]

HTML5

HTML5 representerer trolig et viktig skritt i utviklingen av teknologien for nettpublisering. HTML5 rydder opp i en del gamle lappverk og forenkler kraftig all forvirringen omkring ulike typer doctypes som har eksistert (og forsatt eksisterer) paralellt.

Det er to organisasjoner involvert i arbeidet med HTML5: W3C(World Wide Web Consortium) [8] og WHATWG(Web Hypertext Application Technology Working Group) [9] .

WHATWG begrunner sitt engasjement slik på sine egne sider:

The WHATWG was founded by individuals of Apple, the Mozilla Foundation, and Opera Software in 2004, after a W3C workshop. Apple, Mozilla and Opera were becoming increasingly concerned about the W3C’s direction with XHTML, lack of interest in HTML and apparent disregard for the needs of real-world authors. So, in response, these organisations set out with a mission to address these concerns and the Web Hypertext Application Technology Working Group was born.

En av konsekvensene av dette er at HTML5 ikke er strict XML, og at W3C's arbeid med neste versjon av XHTML er lagt på is (?). Det er dog slik at W3C bruker betegnelsen XHTML5 på velformet HTML5. En konsekvens av at HTML5 ikke trenger være velformet XML er at det blir vanskeligere å parse HTML-sider. Det er ikke uten videre lett å forstå at dette er en utvikling i riktig retning. Nettleserne implementerer ganske kompliserte parsere med en god del toleranse, men for de av oss som ønsker å arbeide med automatisk generering av web-sider er dette en komplikasjon. Det er imidlertid viktig å mereke seg at en etablert DOM i nettleseren kan behandles som XML, det vil si at vi kan bruke både XPath og XSLT i nettleseren.

HTML5 følger opp trenden med å skille klarere mellom struktur og utseende, og HTML er langt mer inrettet mot å inkludere dynamikk (Javascript). På denne måten inntar HTML5 en tydelig rolle i et resonnemnet basert på SOC (Separation Of Concern).

HTML5 innfører en del nye elementer som er av semantisk natur. Det er greitt å se at disse, i hvert fall de fleste av dem, svarer til web-komponenter som er ganske tydelig. I hviken grad de blir brukt, og hvilke konsekvenser dette får, er det vanskelig å forutsi.

Hva gjør vi

Mange, blandt dem forfatteren, anså XHTML som et skritt i riktig retning. XHTML-definisjonen førte til et klarere skile mellom struktur og utseende og basisen i formell XML førte til at XHTML-materiale lett kan behandles programmatisk i de fleste språk som har en generell API for XML-handtering.

Det er derfor en viss skepis mot HTML5 som altså fjerner kravet til velformethet, selv om skille mellom struktur og utseende opprettholdes, og forsterkes. HTML5 forslaget forbyr ikke velformethet og det er mulig å skrive velformet HTML5 og få den validert. Men vi kan ikke stole på at HTML5 dokumenter generelt er parsbare med XML-verktøy. Nå ser det ut til at w3c paralellt med HTML5 arbeider med XHTML5 som en paralell teknologi. Hva dette innebærer når det gjelder dokumenttype (doctype) og nettleser komplikasjoner er noe uklart (?)

Min holdning til dette er å skrive velformet HTML5. Det gjør det mulig for meg å handtere kildemateriale som XML, parse dette med en standard XML-parser og skru sammen en validerbar HTML5 - side.

Et problem er at HTML5 utvikler seg så raskt at det er en viss forskjell på hvordan nettleserne henger med. Det er nødvendig å teste ganske nøye hvis en forsøker seg på nyere begreper.

Når det gjelder disse sidene er de bygget etter følgende filosofi:

Det skal framstilles en del "state of the art" materiale. Jeg sikter meg inn på at brukeren har siste versjon av minst en av nettleserne FireFox, Chrome, IE eller Opera. Jeg inntar altså en ganske arrogant holdning til eldre nettlesere og til et publikum som ikke er oppdatert på nettleserteknologi. Jeg skriver i all hovedak koden i en ren tekstbehandler, og jeg bygger og vedlikeholder sider og struktur ved hjelp WXT 6 .

Med dette som utgangspunkt lager jeg velformet HTML5, men er forsiktig med å introdusere for mange HTML5-spesifikke finesser før jeg er rimelig sikker på at de nevnte nettleserne henger med. Jeg bruker konsekvent utf-8 som tegnkoding.

Dersom jeg skulle markedsføre tjenester eller produkter mot et så bredt publikum som mulig måtte jeg kanskje være mindre arrogant med tanke på nettlesere.

Referanser
  1. Tim Berners-Lee Wikipedia no.wikipedia.org/wiki/Tim_Berners-Lee 14-03-2010
  1. SGML (Standard Generalized Mark-up Language) w3.org www.w3.org/MarkUp/SGML/ 14-03-2010
  1. DSSSL(Document Style Semantics and Spesification Language) ISO www.jclark.com/dsssl/ 14-03-2010
  1. HTML5 Wikipedia en.wikipedia.org/wiki/HTML_5 14-03-2010
  1. CSS (Cascading Style Sheets) w3.org www.w3.org/Style/CSS/ 14-03-2010
  1. XML (Extensible Markup Language) w3.org www.w3.org/XML/ 14-03-2010
  1. XHTML W3C www.w3.org/TR/xhtml1/ 14-03-2010
  1. World Wide Web Consortium www.w3.org 14-03-2010
  1. WHATWG Web Hypertext Application Technology Working Group www.whatwg.org/ 01-02-2014