kaxigt.com

Jag skriver om webben för webben

XHTML guide: från SGML till XHTML

Postad: 26 september 2008 | XHTML-guider | No Comments
Lästid: 5 minuter

XHTML (Extensible HyperText Markup Language), liksom HTML (HyperText Markup Language), är ett märkspråk.

Med märkspråk menas att det finns en bakomliggande text på dokumentet som består av taggar och märken och deras uppgifter är att ge anvisningar om hur sidan är uppbyggd. Vi känner igen märkspråket i våra taggar som bland annat indelar en sida i stycken. Men märkspråket är också till för den strukturella semantiken – den så kallade syntaxen i koderna.

Vi återkommer till det lite längre fram.

HTML utarbetades för att man skulle kunna ge struktur och formatera texter, att kunna skapa hypertexter som är kopplade till länkar – hyperlänkar, element och objekt, företrädesvis i hemsidor, men även i email.

Man kan ju tycka att det här är allt som behövs, varför då krångla till det när det faktiskt är så många i världen som använder HTML?

Hemligheten ligger i att det räcker, men det räcker inte för alla därför att HTML är ett sådant enkelt programspråk att det inte klarar av en mer specialiserad och detaljerad information som kräver mer än bara rubriker och listor. Vi vill kanske använda vårt material i flera sammanhang och vi vill kanske strukturera våra element och attribut ännu mer (och på djupet).

Vi vill med andra ord bygga ut det vi redan har. För att kunna göra detta lägger vi ytterligare till ett kodspråk – nämligen XML – eXstensible Markup Language. XHTML har sålunda vidareutvecklats ur HTML. Låt oss därför få en intressant och enkel inblick om hur vårt programspråk XHTML har vuxit fram genom åren.

Förstår du hur grunden för byggstenarna är konstruerad kommer Du att bli en suverän arkitekt!

SGML och ISO – International Organization for Standardization

Ett första format för att kunna leverera en strukturerad och ordnad text är SGMLStandard Generalized Markup Language. Nyttan med SGML var just standardiseringen.

Genom att använda ISO-märkningen (ISO 8879) som International Organization for Standardization arbetat fram, tillsammans med ett relevant Doctype, öppnade sig nya möjligheter; man kunde använda ren text som data eftersom Doctype definierade vilken typ av text som användes tack vare ”taggarna”, samt att ISO-märkningen också kunde definiera vilket språk som användes på hemsidan (ev svenska).

SGML är därför inte ett märkspråk utan ett metaspråk.

Mimetype för SGML är text/sgml – med andra ord; sidan levereras i rent textformat.

ISO-märkningen Character Encoding – teckenkodningen för det latinska språket – är charset=iso-8859-1. Eftersom denna teckenkodning också tillåter bokstäverna å ä och ö använder vi samma iso-märkning om vi ska skriva på svenska.

SGML, HTML och XML

HTML har sin förankring i SGML eftersom HTML levererar ett textformat. Bryggan mellan HTML och XHTML går som tidigare beskrivits via XMLeXtensible Markup Language. XML är en utbyggnad från SGML. Benämningen extensible innebär just att den klarar av att bygga ut, något HTML inte kan.

Det gör det möjligt att skapa egna specialgjorda märken som i detalj beskriver en websidas innehåll och uppbyggnad. För att webbläsaren sedan ska förstå hur märkena ska definieras infogas en namespace tillsammans med ett relevant Doctype. XML ett universellt märkspråk.

Tanken bakom XML är att varierande informationssystem ska kunna göra ett utbyte med varandra och till det krävs en XML-tolk. Till skillnad från HTML så beskriver och strukturerar nämligen XML själva datan som ska läsas in, och det gör den med något som kallas för en XML-parser som finns i webbläsaren.

En XML-parser verifierar att det finns en korrekt syntax på samma gång som den läser in xml-filen. Har man en xml-fil med en regelrätt skriven syntax som xml-parsern dessutom kan läsa in brukar man säga att filen är ”well formed” – det vill säga väl utformad.

Mimetype för HTML är text/html och filändelsen är .htm eller .html.

Mimetype för en xml-fil är application/xml och filändelsen är .xml. Den första deklarationen, om den används, bör ligga allra högst uppi xml-filen/dokumentet. < ?xml version="1.0" encoding="iso-8859-1"?>.
Förutom att denna verifierar vilken xml-version som används informerar den också om vilket språk som är tänkt att användas – i detta fall det latinska språket med å ä och ö.

Så här långt har vi fått veta följande:

  • HTML skapades för att visa data på webben.
  • Eftersom HTML levererar rent textformat i sin mimetyp – text/html – är det ett märkspråk
  • HTML bygger på SGML som är ett format för att kunna leverera en strukturerad ordnad text
  • SGML behöver ISO-märkningen för att standardisera taggarna i märkspråket
  • SGML är därför ett metaspråk
  • ISO-märkningen tillsammans med SGML och ett relevant Doctype skapar ett webbdokument
  • HTML bygger på SGML men kan inte byggas ut eftersom båda är ett textformat
  • XML är ett märkspråk samtidigt som den har sina rötter i SGML
  • XML strukturerar datan, det vill säga texten (HTML), eftersom den har en förmåga att kunna bygga ut
  • XML är därför en application

HTML + XML = XHTML

Vi fortsätter där vi började; XHTML (Extensible HyperText Markup Language) är ett märkspråk som bygger på HTML. Eftersom HTML bygger på SGML medan XHTML därutöver även bygger på XML så innebär det i praktiken att med XHTML så följer det lite snävare regler då XHTML är mer strikt och ren i sin kod.

XHTML är en XML-applikation för HTML eftersom den innehåller alla element som finns med HTML 4.0 samtidigt som den implementerar syntaxen för XML. Tar vi bort alla tekniska och ibland krångliga uttryck så är XHTML 1.0 och HTML 4.01 faktiskt samma sak förutom att man har lagt till XML. XHTML är därmed en kombination mellan HTML och XML.

XHTML – tre versioner

Man brukar säga att XHTML har tre versioner, eller tre olika nivåer.

XHTML 1.0 Strict – Den här versionen är likställd HTML 4.01 Strict fast med en XML-syntax. Främst använder man strict för att få en ren och strukturerad kodning. Därtill kopplar man en stilmall – Cascading Style Sheet (CSS) i formateringen av sidans utseende. Doctype för XHTML 1.0 Strict ser ut så här:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

XHTML 1.0 Transitional – Den här versionen är också likställd HTML 4.01 Transitional fast med xml speciella syntax. Vissa tecken är fortfarande tillåtna i koden, ex target. Denna version styrs också av CSS. Doctype för XHTML 1.0 Transitional ser ut så här:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

XHTML 1.0 Frameset – Den här versionen är likställd HTML 4.01 Frameset, fast med tillägg av XML-syntax. OBS! Detta doctype används endast i dokumentet där ramarna finns, de sidor som laddas in i ramarna ska ha XHTML 1.0 Transitional. Doctype för XHTML 1.0 Frameset ser ut så här:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"https://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

Mimetyp för XHTML är application/xhtml+xml och filändelserna är .xhtml .xht .html eller .htm.

Namespace – namnrymd

Som tidigare beskrivits kan man bygga ut HTML genom att lägga till programspråket XML. Så fort vi väljer att göra detta förändras förutsättningarna för vår HTML.

Eftersom XML gör det möjligt att skapa egna detaljerade märkningar måste vi också ge webbläsarens XML-parser en förutsättning att läsa strukturen (informationen) som XML ger vår data, och det gör vi genom att infoga något som kallas för en namespacedeklaration.

Enkelt uttryckt kan man säga att namespace är en refererande lista som talar om vilka giltiga attribut och märken som får finnas i xml-dokumentet och det är namespacedeklarationen som öppnar upp möjligheten att kunna lägga in detaljerade märken och attribut. Det är alltså kombinationen XML och namespacedeklarationen som möjliggör grunden för XHTMLs utbyggbarhet.

Vår namespacedeklaration lägger vi i HTML-taggen eftersom vi ska bygga ut HTML.

<html xmlns="https://www.w3.org/1999/xhtml" charset="iso-8859-1"></html>

Som vi ser så pekar namespacedeklarationen mot World Wide Web Consortium – W3C. I klartext innebär det att namnrymden identifierar det särskilda dokumentet (doctype) som beskriver gällande namespace för ditt XHTML-dokument, och det gör den hos W3C via URI-referensen (länken).

Länken leder alltså till W3C aktuella dokumentation om hur namespace ska identifieras beroende doctype, till sin hjälp använder det därför xmlns.

Så här långt har vi fått veta följande:

  • XHTML finns i tre olika nivåer/versioner
  • XHTML 1.0 och HTML 4.01 är egentligen samma sak fast man har lagt till XML
  • XML bygger ut HTML till XHTML
  • Därför måste vi byta doctype
  • Webläsaren identifierar datan som XML levererar med en xml-parser
  • För att webläsaren ska förstå detta används också en namespacedeklaration
  • Datan som levereras från dokumentet läses sedan in av webläsaren beroende på doctype och namespacedeklaration
  • Namespacedeklarationen, namnrymden (länken), identifierar det aktuella doctype som angivits beroende på vilken XHTML version som används
  • Det aktuella doctype verifierar vilka tillåtna attribut och märken som lagts till via XML
  • HTML, XML, namespacedeklarationen och gällande doctype, är källan för XHTML

Det här var en förenklad introduktion till XHTML.

Jag tror att om man verkligen ger sig några extra minuter till att läsa hur XHTML har vuxit fram så ökar också förståelsen och kunskapen för själva programmeringen. Det finns ju ett ordspråk som säger kunskap ger färdighet – och så är det. Lär man sig grunderna går det mycket lättare att klara inlärningen i den mer avancerade programmeringskonsten.

Jag hoppas att denna introduktion har givit dig lite mer kött på benen än vad du hade innan du kom hit. Vill Du läsa mer om hur man använder XHTML så finns det i länkarna. Lycka till!