Hopp til innholdet

cjohansen.no

Vår semantiske fremtid: HTML5 og XHTML2

De fleste har kanskje fått med seg introduksjonen til HTML 5 på A List Apart, eller på annet vis fulgt med på utviklingen av denne standarden. Standarden som utarbeides forsøker å løse mange av dagens problemer, men fikk uventet mye kritikk på A List Apart. Hvordan står det egentlig til med vår semantiske fremtid?

Bakgrunn: XHTML 2 og HTML 5

Noen føler seg kanskje forvirret av at det nå snakkes om (X)HTML 5. Hvor ble det av XHTML 2? W3C har jobbet med XHTML 2 i flere år nå, og spesifiserer dette som språket som skal ta over for dagens XHTML 1.x og HTML 4.01. XHTML 2 er ikke bakoverkompatibelt, og vil bare fungere som XML.

WHATWG (Web Hypertext Application Technology Working Group), en gruppering startet av Opera, Apple og Mozilla, startet på sin side med utviklingen av HTML 5 som en reaksjon på at W3C jobbet for seint med XHTML 2, og det faktum at XHTML 2 er et helt nytt språk som ikke er designet for å være bakoverkompatibelt. I senere tid har W3C og WHATWG kommet sammen i W3C HTML WG, og jobber nå sammen med HTML 5.

Resultatet er den smått forvirrende situasjonen at W3C nå aktivt jobber med to potensielle erstattere for samme teknologi. I tillegg er de to kandidatene i direkte konkurranse med hverandre - det er svært lite sannsynlig at begge overlever.

Hva er XHTML 2?

XHTML 2 er W3Cs opprinnelig oppfølger til XHTML 1.x og HTML 4.01. Snarere enn oppfølger er det egentlig en arvtaker, siden XHTML 2 ikke er designet for å være bakoverkompatibelt, men i grunnen er et nytt språk. At det er et nytt språk understrekes av at navnerommet til XHTML 2 i utgangspunktet ble redefinert til http://www.w3.org/2002/06/xhtml2/.

Hva er nytt i XHTML 2?

XHTML 2 legger en del funksjonalitet som er "deprecated" i dagens versjoener av HTML på hylla. Eksempler på dette er ting som <i>, <b>, <iframe>, <font> og flere. Jeg tror ingen vil savne disse elementene. Blant nye ting er det mye spennende å notere seg:

Alle elementer kan ta href-attributtet og dermed bli lenker

Definisjonslister kan gruppere termer med <di>-elementet:

<dl>  
    <di>
        <dt>Mandarin (http://no.wikipedia.org/wiki/Mandarin_%28frukt%29)</dt>  
        <dd>frukten fra mandarintreet</dd>  
        <dd>en standardisert og offisiell form av den vanligste dialekten i det kinesiske språket</dd>  
    </di>
    <di>
        <dt>Klementin (http://no.wikipedia.org/wiki/Klementin)</dt>  
        <dd>frukt; krysning mellom mandarin og pomerans</dd>  
    </di>
</dl> 

Vi får den nye listetypen <nl>, navigasjonsliste, som kan ta role-attributtet.

<nl role="breadcrumbs">
    <label>Du er her:</label>
    <li href="/">Hjem</li>
    <li href="/blogg">Blogg</li>
    <li>Nytt i XHTML 2</li>
</nl>

Ikke minst innfører XHTML 2 <section>-elementet og det generiske <h>-elementet. Sammen kan disse på en langt tydligere måte enn dagens <h1> ... <h6> brukes til å gi struktur og hierarki i dokumentene våre:

<section>
    <h>Vår semantiske fremtid: HTML5 vs XHTML2</h>
    <p>...</p>
    <section>
        <h>Bakgrunn</h>
        <p>...</p>
    </section>
    <section>
        <h>Hva er XHTML2?</h>
        <p>...</p>
        <section>
            <h>Nytt i XHTML2</h>
            <p>...</p>
        </section>
    </section>
</section>

Hva er problemet med XHTML2?

Vel, et stort ankepunkt mange har er at XHTML slettes ikke sikter å være bakoverkompatibelt. Ved å droppe ut mye funksjonalitet, og ved å endre en del funksjonalitet på en måte som ikke har en naturlig fallback i dagens nettlesere vil det ta lang tid til vi er der at vi kan bruke XHTML2 til de store massene.

Et annet problem er at XHTML2 serveres som XML, noe som foreløpig ikke har vist seg å være en suksess for HTML-dokumenter. Dette problemet er også tett knyttet til det siste problemet med XHTML2; fullstendig fravær av støtte fra nettleserprodusentene. Med tanke på at Internet Explorer enda ikke støtter XHTML 1.x er det ikke mye som tyder på at det er spesielt gjennomførbart å hoppe rett på en ny teknologi som skiller seg såppass fra dagens teknologi som det XHTML2 gjør.

Hva er HTML 5?

Som jeg nevnte innledningsvis er HTML5 en alternativ spesifikasjon til XHTML 2, laget av WHATWG, som igjen er en organisasjon startet av Opera, Apple og Mozilla. HTML5 vil på sikt inkorporere Web Forms 2.0, som er en oppdatering av forms-delen av HTML 4.01/XHTML 1.x. Web Forms 2.0 er formelt sett ferdig spekket.

HTML5 er, i motsetning til XHTML2, en moderat videreutvikling av HTML 4.01/XHTML 1.x som er designet for å være bakoverkompatibel. Målet er at dagens nettlesere skal kunne gjøre noe fornuftig med et HTML 5-dokument selvom det ikke forstår teknologien.

Hva er nytt i HTML5?

HTML 5 løser mange av de samme løsningene som XHTML 2, og har dermed også en del tilsvarende løsninger. En ting er headinger og seksjons-elementet som HTML 5 løser på følgende måte (sakset fra A List Apart-artikkelen):

<section>
     <h1>Level 1</h1>
     <section>
         <h1>Level 2</h1>
         <section>
             <h1>Level 3</h1>
         </section>
     </section>
</section>

Dette ligner mye på XHTML 2-løsningen med ett viktig unntak: HTML 5 har inget <h>-element, men bruker <h1>-elementet på en noe annen måte enn de fleste av oss gjør i dagens HTML.

HTML 5 har en hel gjeng nye elementer til å bygge side-layout med: <header>, <footer>, <aside>, <nav> osv.HTML 5 har desverre ikke noe <nl>-element slik XHTML 2 har, men foreslår i stedet følgende løsning:

<nav id="breadcrumbs">
    <h1>Du er her:</h1>
    <ul>
        <li><a href="/">Hjem</a></li>
        <li><a href="/blogg">Blogg</a></li>
        <li>Nytt i XHTML 2</li>
    </ul>
</nav>

HTML 5 stiller også med de spesifikke elementene <video> og <audio> for å inkludere henholdsvis video- og musikk-spillere. "Spesifikke" fordi de står i kontrast til XHTML2s (og forsåvidt dagens) mer generelle <object>.

Hva er problemet med HTML5?

Tidshorisont vs "tidsriktig" innhold

Forventningen til HTML5 er at spesifikasjonen er ferdigstilt, og implementasjonene så gode at man kan bruke det utstrakt om ca 10-15 år. Med tanke på at HTML 4.01 allerede snart er 10 år gammel er det mange som syns dette er lenge å vente. I motsetning mener mange at HTML5-spesifikasjonen er stresset og går for fort frem.

Et problem jeg ser med tidshorisonten er i forhold til innholdet i spesifikasjonen. Mange av løsningene virker urovekkenede knyttet til dagens praksis i webutvikling, og jeg er usikker på om alle løsningene i HTML 5 vil tåle tidens tann. Gjør de ikke det står vi i fare for å ha en standard klar om 10 år som er delvis utdatert i det samme den er brukbar.

Syntaks

Med HTML 5 er vi tilbake til SGML-syntaks. Det finnes riktignok en XHTML 5-versjon også, men denne er spesifisert på en måte som krever at dokumentene serveres som XML, noe som er et problem i dagens nettlesere. Det sannsynligvis også være et problem i overskuelig fremtid.

HTML 5 viderefører altså en syntaks hvor slutt-tag er valgfritt i noen sammenhenger, mens den er påkrevet i andre. Tomme elementer ("void elements" i HTML5) trenger heller ikke å lukke seg selv. Slikt spillerom i syntaksen tjener i mine øyne ingen godt, og vil bare gjøre det vanskeligere for nye utviklere å skrive språket riktig.

Bakoverkompatibilitet

Å lage en spesifikasjon bakoverkompatibel gir ikke så mye mening for meg. Å designe språket slik at eldre nettlesere kan gjøre fornuftige ting med ny teknologi de ikke forstår er helt greit, men å videreføre ting som <font> og <i> gir virkelig ingen mening for meg. Spesielt ikke når semantikken til <i> i tillegg er endret (noe som i praksis fjerner bakoverkompatibiliteten). At nettlesere fortsetter å støtte <font> for gamle dagers skyld er nå en ting, men å videreføre et så feilslått element i en spesifikasjon hører ingensteds hjemme.

Videre lesing

Jeg innledet dette innlegget med å nevne A List Aparts artikkel om HTML5, som absolutt er verdt å få med seg. Ikke minst kommentarene her er interessante for å se det brede publikums mottakelse av den nye teknologien.

xhtml.com har en interessant sammenligning av HTML5 og XHTML2. Utover disse er spesifikasjonene selv ( HTML5, XHTML2) gode steder å starte for de virkelig interesserte.

Muligens relatert

2006 - 2014 Christian Johansen Creative Commons Lisens