Modularisering av XHTML

Xavier Borderie

JDN Développeurs

2004-08-31

Sammanfattning:
Om webbens framtid ligger i handhållna terminaler, så ligger XHTML:s framtid i dess uppdelning i logiska moduler.
I denna artikel ges en kort beskrivning av hur XHTML har modulariserats. Detta ger en slags legobygglåda där den uppsättning märktaggar som behövs i ett dokument explicit kan begränsas till en delmängd av den fulla uppsättningen av taggar i XHTML. Därmed kan webbsidor byggas som kan stödjas av små apparater med begränsad kraftfullhet, samtidigt som vi fortfarande håller oss inom ramen för de märkspråk som stöds av den vanliga webben.

Modularisering: mål och principer

W3C:s viktigaste mål är att möjliggöra universell tillgång till information på nätet: för vem som helst, var som helst, när som helst, och där hänsyn tas till personliga egenskaper (språk, fysiska möjligheter, etc.).

Ett annat viktigt mål är att göra det möjligt att använda Internet från alla typer av terminaler, vilka de än må vara, såsom mobiltelefoner, PDA:er och liknande. Men hur skall man göra för att alla dessa apparater, hur olika de än må vara, ska kunna förstå samma språk?

Webbstandarden Modularization of XHTML (som är en W3C Recommendation) är W3C:s svar på det knepiga problemet att skapa ett enkelt språk för uppmärkning som samtidigt kan konfigureras till olika versioner. W3C har valt att uppdela XHTML-specifikationen genom att definiera en grundläggande DTD och 28 moduler som utvidgar denna, för att skapa den nödvändiga uppsättningen av märktaggar som behövs för att erbjuda fullt stöd för XHTML (se "les apports de XHTML").

XHTML blir på detta sätt modulariserad, men också utvidgningsbar: på samma sätt som man kan lägga till en av de officiella modulerna så kan man lägga till en modul som representerar exakt de uppmärkningstaggar som behövs i ett speciellt fall. XHTML blir en slags Lego-låda, med vars hjälp man kan konstruera den DTD man behöver.

Modulariseringen av XHTML är alltså en arkitektur som tillåter att man kan gruppera uppmärkningstaggar av samma kategori i form av en modul, och att gruppera dessa moduler för att skapa ett specifikt språk.

De viktigaste modulerna

Nedan följer en beskrivning av några av de moduler som erbjuds, listade enligt en naturlig kategorisering:

Basmoduler
STRUCTURE : allt det som handlar om struktur hos dokument (body, head, html, title)
TEXT: märktaggar som definierar olika typer av text, men inte listor (p, acronym, em, strong...)
HYPERTEXT: länkar (a)
LIST: definition av listor (ul, li, dt, dd...)
PRESENTATION: märktaggar för hur text skall presenteras (b, i, hr, sub...)
BASIC FORMS: märktaggar som är nödvändiga för att definiera formulär (form, input, label, textarea...)
BASIC TABLES: märktaggar som är nödvändiga för att definiera tabeller (table, td, tr, th, caption)
IMAGE: märktagg för bilder (img)
OBJECT: märktaggar för hantering av objekt (object, param)
SCRIPTING: det som behövs för att definiera exekverbart innehåll (script, noscript)
STYLE SHEET: stöd för formattering av dokument (style)
LEGACY : taggar som inte längre bör användas, men som ändå finns tillgängliga (font, center, strike, u...)

Av de 28 tillgängliga modulerna är fyra nödvändiga för att ett dokument skall kunna betraktas som XHTML: basmodulerna Structure, Text, Hypertext och List.

Om man grupperar alla 28 modulerna så får man XHTML 1.1 (modulbaserad XHTML), som ger samma funktionalitet som XHTML 1.0. Med XHTML förlorar man alltså ingen funktionalitet, men vinner mycket i flexibilitet, såsom möjligheten att skapa profiler av XHTML och att skapa mer begränsade språk.

XHTML-Basic kan ses som en profil av XHTML 1.1: den använder bara 11 av de 28 modulerna (Structure, Text, HyperText, List, Basic Forms, Basic Tables, Image, Object, Metainformation, Link och Base). Det är ett 'lättvikts-språk', framtaget för att till slut ersätta WML (använt i WAP) och C-HTML (använt i i-Mode). Dess andra stora fördel är att stödja en viss presentation av en sida på en vanlig dator och en annan presentation på en handhållen apparat, utan att leverantören ska behöva hantera olika versioner av samma dokument.

Här följer ett kort dokument som använder XHTML-Basic:


  <?xml version="1.0"?>
  <!DOCTYPE html PUBLIC
    "-//W3C//DTD XHTML Basic 1.0//EN"
    "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
  <html xmlns = "http://www.w3.org/1999/xhtml">
    <head>
      <title>Sötnos?</title>
    </head>
    <body>
      <p>En näsa som doppats i honung.</p>
    </body>
  </html>
      

Användning

Modulerna läggs till XHTML-dokumentet utöver dokumentets DTD: utgående från XHTML:s bas-DTD kan vem som helst skapa en DTD anpassad för sina behov, och även skapa märktaggar för att leverera det stöd som passar situationen bäst. Om man enbart vill presentation av text, länkar och bilder, så är det onödigt att använda den fulla DTD:n för XHTML 1.1. Det är alltså att föredra att dokument använder en mycket enklare DTD, en DTD som bara innehåller de märktaggar som används.

Tanken är alltså att skapa en egen DTD (se "Lire et écrire une DTD"), som använder XHTML:s bas-DTD (Structure, Text, HyperText, List) och lägga till enbart den ytterligare modul som man har behov av, Image. Man kan ge denna namnet XHTML-Image-only 1.0, och ett dokument som refererar till denna har en DOCTYPE enligt följande modell (anm.: URL:en är bara ett påhittat exempel, som en illustration av principen):


<!DOCTYPE html PUBLIC 
  "-//Journal du Net//DTD XHTML-Image-Only 1.0//EN" 
  "http://www.journaldunet.com/dtd/xhtml-image-only10.dtd"> 
      

Filen xhtml-image-only10.dtd kan se ut som följer:


<?xml version="1.0" encoding="iso-8859-1"?>
<!ENTITY % XHTML.ns "http://www.w3.org/1999/xhtml" > 
<ENTITY % xhtml-framework.mod 
  PUBLIC "-//W3C//ENTITIES XHTML 1.1 Modular Framework 1.0//EN"
	"xhtml11-framework-1.mod" >
  %xhtml-framework.mod;

<!ENTITY % xhtml-struct.mod
  PUBLIC "-//W3C//ELEMENTS XHTML 1.1 Structure 1.0//EN"
  "xhtml11-struct-1.mod" >
  %xhtml-struct.mod;

<!ENTITY % xhtml-text.mod
  PUBLIC "-//W3C//ELEMENTS XHTML 1.1 Text 1.0//EN"
  "xhtml11-text-1.mod" >
  %xhtml-text.mod;

<!ENTITY % xhtml-hypertext.mod
  PUBLIC "-//W3C//ELEMENTS XHTML 1.1 Hypertext 1.0//EN"
  "xhtml11-hypertext-1.mod" >
  %xhtml-hypertext.mod

<!ENTITY % xhtml-list.mod
  PUBLIC "-//W3C//ELEMENTS XHTML 1.1 Lists 1.0//EN"
  "xhtml11-list-1.mod" >
  %xhtml-list.mod;

<!ENTITY % xhtml-image.mod
  PUBLIC "-//W3C//ELEMENTS XHTML 1.1 Images 1.0//EN"
  "xhtml11-image-1.mod" >
  %xhtml-image.mod;
	

Vi har i denna artikel visat några steg i hur vi kan använda byggblock av märktaggar; först genom att definiera vår DTD enligt ramverket för XHTML Modularization, sedan hur vi lagt till grundläggande komponenter för uppmärkning (Structure, Text, HyperText, Lists), och slutligen, vår komponent för Image -- allt i form av moduler.


[Översättning av artikeln Tutoriel: La modularisation de XHTML, ursprungligen publicerad på webbplatsen JDN Développeurs 31 augusti 2004]