!

Dette materialet blir ikke lenger vedlikeholdt. Du vil finne oppdatert materiale på siden: http://borres.hiof.no/wep/

XHTML
HTML4
Strict
Transitional
CSS
Børre Stenseth

HTML

Hva
Ulike versjoner av HTML og noen andre begreper

Siden Tim Berners-Lee [1] ved CERN introduserte HTML 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. Nettlesere har også 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 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.

I et langsiktig perspektiv synes det klart at alt nytt materiale som publiseres på Internett bør være XML. Når alle de vanlige nettleserne kommer dit at de kan handtere XML koplet med et eller annet stilsett (CSS og/eller XSLT_FO) kan vi publisere i våre egendefinerte XML-språk eller vi kan publisere i et allment kjent og standardisert XML-språk som XHTML. I øyeblikket er vi ikke der, men det er i alle fall lurt å legge seg til vaner som er tilpasset en slik framtid.

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 og tilhørende varianter.

Noen begreper

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. Det du finner her er en svært kort versjon som har fokus på å forstå hvorfor XML er et svar på en utvikling som delvis har vært styrt av et felles mål, og dels har gått av sporet på noen avgjørende punkter.

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

(Hyper Text Markup Language) [4]

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 nå, 2010/2011, er under behandling i W3C [5] og WHATWG [6] er neste versjon som nå er i ferd med å bli tatt i bruk. HTML5 er nærmere omtalt i modulen HTML5 . Litt om historien så langt og noe av usikkerheten rundt HTML 5 er beskrevet på Wikipedia [7] .

CSS

(Cascading Style Sheets). [8]

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.

CSS ble en periode holdt opp mot XSL-FO (eXtensible Stylesheet Language-Formatting) som en alternativ eller komplementerende teknologi. I dette materialet vil du finne stoff om CSS og litt om XSL-FO. Det er vel liten tvil om at det er CSS som idag er den dominerende teknologien av de to alternativene.

CSS finnes i flere versjoner. Siste versjon som er under behandling er vel CSS 3.

XML

(eXtensible Markup Language ) [9]

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 XMLer 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 [10]

Hva skal vi velge ?

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 så vidt jeg kan forstå er det 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 (?)

Hva vi skal lage våre vevsider i er salvsagt avhengig av mange ting, blandt annet:

  • Hva skal vi framstille. Er det ren enkel tekst, er det interaktivt materiale, er det bruk av medier (lyd, video) ?
  • Hvem er målgruppa. Kan vi forutsette at de er oppdaterte på nettleserversjoner ?
  • Hva slags verktøy for produksjon bruker vi. Skriver vi inn i omgivelser som blog, skriver vi i en eller annen HTML-editor eller skriver vi ren tekst med markup ?

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 selvsagt 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. HTML 4.01(HyperText Markup Language) w3.org www.w3.org/TR/html4/ 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/ 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. XML-validering W3C validator.w3.org/ 14-05-2010
  1. XML-validering Proze Network www.validator.ca/ 14-03-2010
Vedlikehold
Børre Stenseth, april 2011
( Velkommen ) ( HTML-headere )