HTML
Hyper Text Markup Language
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.
.HTML 4
Nåværende definisjon av HTML er HTML 4.01. HTML 4, er som tidligere versjoner av HTML, definert på en slik måte at det er ganske mye toleranse for hva som akspeteres som lovlig HTML. HTML som avledet av SGML har i seg selv en viss toleranse for avvik fra det som er korrekt XML. For oss som publiserer på web er det av og til litt uklart hva som er lovlig i forhold til en HTML-definisjon, og hva som "virker" fordi nettleserne har stor toleranse.
.XHTML
XHTML er HTML 4 formulert som ekte XML. Det vil si at det er definert en DTD som beskriver XHTML. Alle de kravene til velformethet som følger av XML skal være oppfylt. De viktigste kravene 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: www.w3.org/TR/xhtml1/
XHTML kommer i tre versjoner: strict, transitional og frameset. Vi ser nærmere på de to første. Begge 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"/>
Nedenfor finner du et dokument som er formulert på litt forskjellige måter for å tilfredstille kravene til strict og loose. begge versjonene bruker et stilsett som forutsettes å ligge i samme katalog som brukerfila og som ser slik ut:
body {
color: #783E1E;
font-family: "Geneva", "Verdana", sans-serif;
text-align: left;
margin-left:10px;
margin-top:10px;
}
h1{
font-size: 24px;
font-weight: bold;}
p{
font-size:13px;
}
a:link {color:#3333FF;}
a:visited {color:#6666FF;}
a:active {color:#AAAAAA;}
a:hover {color:#FF3333;}
img {
border-style: none;
}
Strict
Dette er den formen som er strengest, og skillet mellom struktur og form er gjennomført i henhold til XHTML-definisjonen. En validerbar fil kan se slik ut:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<link rel="STYLESHEET" href="def.css"/>
<title>Strict</title>
</head>
<body>
<h1>Hallo</h1>
<p>alle sammen</p>
<p>
<a href="http://validator.w3.org/check/referer">
<img src="../gfx/valid-xhtml.gif" alt="strict"/>
</a>
</p>
<p>
<a href="javascript:history.back()">Tilbake</a>
</p>
</body>
</html>
Nettleserne aksepterer at vi utelater den første linja. Se fila i nettleseren: strict.html
W3C anbefaler at den første linja beholdes og at filene gis extension .xml. Dett kan imidlertid skape problemer siden en server kan sende en mime-angivelse som ikke tolkes riktig av nettleseren. Det er en del grumsete farvann her.
Transitional
Transitional, eller "loose", er en slags overgangsvariant som tillater layout spesifikasjon i elementene. Begrunnelsen for denne er to. Dels skal det være mulig å lage layout beregnet på nettlesere som ikke handterer stilsett. Dels skal det være mulig for forfattere som ikke behersker stilsett å lage layout, slik de er vant til. En validerbar fil kan se slik ut:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <link rel=STYLESHEET href="def.css"> <meta name="GENERATOR" content="SiteLite 3"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>loose</title> </head> <body> <h1>Hallo</h1> <p>alle sammen</p> <p> <a href="http://validator.w3.org/check/referer"> <img border="0" src="../gfx/valid-html401.gif" alt="loose"/></a> </p> <p> <a href="javascript:history.back()">Tilbake</a> </p> </body> </html>.
Rydding og sjekking
Når vi skriver en ny fil er det lurt å validere den med jevne mellomrom mot valideringstjenesten hos W3C eller mot et annet valideringsverktøy.
Hvis vi har en gammel fil vi ønsker å oppdatere, så finnes det verktøy som hjelper oss å gjøre grovarbeidet. Tidy er et slikt verktøy, se tidy.sourceforge.net