Överblick över W3C, SGML, DTD, DSSSL, HTML, CSS, XML, XSL, RDF, PICS, P3P, osv...

Jag vill försöka ge en överblick över arbetet vid World Wide Web Consortium (W3C), och förklara varför det är så viktigt. Jag vill visa värdet av äkta hypertext. Få er att förstå hur fel hela tankesättet WYSIWYG är.

Jag vill också visa lite på trender och möjligheter inför framtiden.

W3C består av ett antal universitet runt om i världen, samt representanter från många större företag med web-anknytning. Bland medlemmarna återfinns American Online, AT&T, Autodesk, Canal +, Canon, Cisco Systems, CNET, Compaq, Disney, ERicsson, Ernst & Young, HP, IBM, Lotus, Macromedia, Marimba, Microsoft, Motorola, Netscape, Nokia, Novell, Oracle, Reuters, Sema Group, Silicon Graphics, Toshiba och Xerox. Se också den kompletta listan. Alla "standarder" är framtagna i samverkan mellan de aktivt medverkande företagen.

Äkta HTML

Standard Generalized Markup Language (SGML) är ett språk för att skapa Document Type Definitions (DTD). Varje DTD är en beskrivning för ett visst sätt att logiskt märka upp data, så att det kan läsas in och behandlas automatiskt av datorn. Exempelvis kan man spara innehållet i en databas som en textfil med en uppmärkning som bestäms av den DTD som man kan skapa utifrån datamodellen.

Om vi exempelvis har databasen:

Person
Id Förnamn Efternamn
jonas Jonas Liljegren
harald Johan Samuelsson
Grupp
Id Person
eliten jonas
alla jonas
alla harald

Skulle kunna märkas upp såhär (med SGML eller XML):

<person>
	<id> jonas </id>
	<förnamn> Jonas </förnamn>
	<efternamn> Liljegren </efternamn>
</person>
<person>
	<id> harald </id>
	<förnamn> Johan </förnamn>
	<efternamn> Samuelsson </efternamn>
</person>
<grupp>
	<id> eliten </id>
	<person> jonas </person>
</grupp>
<grupp>
	<id> alla </id>
	<person> jonas </person>
</grupp>
<grupp>
	<id> alla </id>
	<person> harald </person>
</grupp>

Hypertext Markup Language (HTML) är en SGML DTD skapad för att märka upp den logiska strukturen i akademiska skrifter. HTML har sedan utökats för kunan hantera flera sorters dokument. HTML har två generella tags som gör att den kan anpassas för vilket ändamål som helst. Samma tabeller kan märkas upp såhär med HTML:

<div class="person" id="jonas">
	<span class="förnamn"> Jonas </span>
	<span class="efternamn"> Liljegren </span>
</div>
<div class="person" id="harald">
	<span class="förnamn"> Johan </span>
	<span class="efternamn"> Samuelsson </span>
</div>
<div class="grupp" id="eliten">
	<span class="person"> jonas </span>
</div>
<div class="grupp" id="alla">
	<span class="person"> jonas </span>
	<span class="person"> harald </span>
</div>

HTML anger alltså enbart dokumentets logiska form. Det är upp till browsern, hur denna data ska behandlas. Koden ovan skulle exempelvis kunna lagras tillbaka i en databas, importeras till Rational Rose eller kanske ritas ut som tabeller, motsvarande de två tabellerna vi utgick ifrån ovan. Attributen class, id och ett par andra kan användas på nästan alla tags, för att inkapsla all den information som behövs för att behandla dokumenten på ett intelligent sätt.

Jag vill ge några exmpel på hur logiskt uppmärkta dokument med HTML skulle kunna behandlas av olika program:

Listor
Listor kan vara ordnade eller oordnade. Oordnade listor kan sorteras av browsern för att passa läsarens preferenser. Listor innuti andra listor skulle kunna expanderas och kollapsas ungefär som i MS filhanteraren, för att på så vis ge en kompakt överblick över hela trädet. Om trädet exempelvis bestod av länkar, klassificerade med class-attributet, skulle browsern kunna placera de mest intressanta länkarna överst, i förhållande till varje enskild läsare.
Rubriker
h1, h2, h3, osv används för att skapa rubrikheiarkin i dokumentet. Utifrån dessa kan man enkelt automatiskt generera en innehållsförteckning.
Span
Med span kan du märka upp alla sorters ord och fraser mitt i texten, även om de inte är länkar eller liknande. Exempelvis kan alla personnamn, förkortningar, osv, märkas upp. Genom dess class och ID kopplas dessa enkelt till en databas. Det är då enkelt att skriva ett program som kan uppdatera en HTML-sida utifrån innehållet i en databas.
Länkar
Länkar kan ges ytterligare information. Speciellt kan man ange vad för relation de två dokumenten har till varandra. På så vis kan ett program som går igenom en webbplats skapa en avancerad datamodell över relationen mellan platsens alla webbdokument. Man kan beskriva sådana saker som att personer är anställda i ett företag; dokumentet är fortsättningen på en sekvens av sidor; att en länk går till en definition av en term, osv, osv.
Metadata
HTML har länge haft rekommendationer för ett antal metadata om dokumenten. De mest accepterade är "description" och "keywords". Men de riktigt användbara metadata, är de som kan användas för en universell navigering i en webbplats. Det finns metadata för att ange webbplatsens hemsida, hjälpsida, indexträd-sida, nästa sida i förhållande till denna, föregående sida, huvudsida för denna sekvens, osv. Med dessa skulle en webbrowser kunna generera en rad med navigeringsknappar för webbsidan. Denna skulle kunna se lika dan ut för alla webbplatse. Det är helt fel att skapa ett navigeringsgränssnitt för en webbplats. Navigeringsknapparna skulle kunna anpassas till personligt tycke, eller kanske för att användas med röststyrning, eller för blinda, eller i mobiltelefon, osv, osv. webbplatsen kan gärna föreslå en grafisk design för navigeringsfunktionen. Men om dessa inte är definierade enligt standarden, finns inte möjligheten att hoppa mellan webbsidorna genom exempelvis röststyrning.
Översättning
Givetvis är det vidrigt att använda bilder för skapa rubriker av olika slag. Tänk bara på när datorn automatisk ska översätta en webbsida från ett språk till ett annat. Om dokumentet är logiskt uppmarkerat, så datorn kan avgöra varje styckes kontext, blir en automatisk översättning mycket enklare.

Listan kan göras lång...

Det store religionskriget

Under hela ordbehandlingens historia har användare försökt styra utseendet av sina dokument genom att i detalj instruera datorn exakt hur de vill att deras dokument ska se ut. De lägger in radmatningar, tabsteg och mellanslag för att positionera sin text. De bestämmer storlek och form på sina bokstäver. De placerar in figurer på exakt de platser där de vill ha dem. Suck...

Den typ av lågnivå utplaceranden av pixlar på skärmen gör det svårt för program att automatiskt behandla texten. Med logiskt uppmärkta dokument, där strutkur och innehåll definieras, och en stil definieras separat och appliceras på dokumentet, blir förändringar mycket enkla. Globala förändringar kan enkelt genomföras. Exemeplvis kan all text av samma sort få ändrad fontstorlek och typsnitt. Kommentarer får ett utseende, referenser ett andra, citat ett tredje, osv.

W3C är ljusets budbärare. Idealister och visionärer från många större företag och institutioner konspirerar här för att tillsammans skapa en bättre värld. En värld där komplexa datastrukturer och mänskliga begrepp på allt högre abstarkionsnivåer kan kommuniceras fritt över nätet.

De måste vinna över webbsidemakare som gärna missbrukar varenda lilla detalj å det grövsta för att få fram de finesser de tänkt sig. webbsidemakare som inte förstår eller inte bryr sig om det större goda.

Men ändå har kanske Netscape Communications Corporation varit W3C's strösta fiende. Det enda positiva med deras browser var att den kunde ladda och visa sidorna snabbare än sina konkurenter på den tiden. Deras egna tillägg till HTML har hela tiden handlat om att möjliggöra detaljerad styrning av utseendet, snarere än att stödja de högnivåfunktioner W3C försökt introducera. Många andra browsers har haft dessa funktioner, som exempelvis expanderbara listor, fotnötter, koppling till ordlista, sitenavigering på metanivå, osv. Men istället för att möjliggöra dessa kraftfulla och användbara funktionerna, har Netscape lagt sina ansträgningar på att skapa möjlighet till detaljstryning, genom javascript, font-taggar, frames, plugins, mm. Detta är saker som splittrar, komplicerar och försvårar informationens utbytbarhet. Exempelvis används javascript ibland för att validera inmatade formulär, när man istället borde ange i fältdefinitionen vad för datatyp som förväntas, och låta browsern styra detta på en högre nivå.

W3C har en enkel strategi för att bekämpa mörkrets horder. De försöker identifiera den enkle mannens lustar och rädslor. Deras strategi är att ge massorna vad de vill ha, på ett sådant vis att de får strukturen på köpet. Nyheterna marknadsförs på ett sätt som tros tilltala de breda massorna, men baktanken är att sprida det sanna ljuset. Det finns flera exempel på detta:

CSS
"Ger större kontroll över designen på webbsidorna". Sant. Men det viktiga är att CSS skiljer på information och presentation.
PICS
"Skyddar dina barn från olämpligt material på nätet". Sant. Men det viktiga är att det är ett universellt sätt att klassificera innehållet på sidorna. Rena drömmen för all typ av sökning på nätet.
P3P
"Skyddar din anonymitet och integritet på nätet." Sant. Men det viktga är att det möjliggör kommunikation mellan alla besökare på nätet. Du kan enkelt hitta den ende personen i världen som kan lösa just ditt problem.

SGML används för att definiera informationsstrukturen. Presentation definieras med Document Style Semantics and Specification Language (DSSSL). Både SGML och DSSSL är jämförelsevis avancerade. HTML's motsvarighet heter Cascading Style Sheets (CSS) och är en kraftig förenkling av DSSSL, för att den snabbare ska slå igenom på webben.

CSS separerar information och presentation. Samtidigt ger CSS större möjlighet till kontroll över presentation än vad som hittills gått med Netscapes förvrängning av HTML.

Men det viktiga är att CSS uppmuntrar till användning av class-atributet i HTML. Här kan varje element klassificeras utefter dess innebörd, så som "inledning", "sammanfattning", "kommentar", "exempel", "varning", osv. Med CSS kan man ge olika sorters innehåll, olika utseende. Och detta går att göra på ett mycket detaljerat sätt. En sammanfattning kan ha ett speciellt utseende om det sammanfattar ett kapitel, ett annat utseende om det sammanfattar hela dokumentet och ett tredje utseende om det är en sammanfattning av typen "vägning av för och nackdelar", osv. CSS är enkelt, men mycket kraftfullt och användbart. Och det verkligt goda av detta är att det ger möjligheten att skriva program som kan finna speciella sorters innehåll och specialbehandla dem.

En ny början

Trots alla ansträgningar att skapa ett vettigt sätt att använda HTML, har användingen av uppmärkningsspecifikationen degenererat till den punkt, då man kanske borde klippa banden och börja om från början. HTML skapades för att enkelt skriva strukturerade dokument. Men numera associeras HTML med ett sätt att skapa layout för WWW.

För att klippa alla band med historien, skapade man ett nytt "uppmärkningsspråk" för WWW; nämligen Extensible Markup Language (XML). På så vis satsar man nu på ett ML som inte förstörts av tidigare missförstånd. XML är en förenkling och webb-anpassning av SGML. Man är mycket mån om att inte hamna i samma fälla som tidigare. Man vill inte associera speciella uppmärkningstaggar med ett speciellt utseende i presentationen. I ett första steg får varje enskild användare helt enkelt hitta på sina egna taggar och använda dem för att kommunicera strukturerad information. Någon DTD behövs inte.

XML's version av DSSSL heter Extensible Style Language (XSL). Och XSL är klart mera kraftfull än CSS.

XML och XSL ersätter templates

Det finns många leverantörer av system för databasdriven webbpublicering. Många av dem använder templates, dvs HTML-sidor med speciella koder som byts ut mot innehållet i databasen. Problemet är att alla leverantörer har sina egna sorters templates; exempelvis Rubin, Revize, Perl (i ett tiotal varianter), MS ASP, osv.

XSL är ett standardiserat, kraftfullt template-språk som i stort sett kan ersätta alla andra. CSS kan bara ändra utseende och marginaler av den data som formateras. XSL kan möblera ut innehållet från en databas, till en webbsida. Informationsordningen kan hystas om i presentationen.

XML kan fungera som ett standardiserat format för utbyte av information mellan programmoduler. Detta enkla kommunikationsformat gör att det blir allt enklare att foga samamn olika programmoduler.

  1. Databasen exporterar de efterfrågade posterna i XML
  2. XSL-tolken läser in XML-posterna och skapar, med hjälp av ett XSL-dokument, HTML som utdata

Vi kan också ha hela webbplatsen i XML. Data kan komma från många olika håll. En del kanske i filer. Andra delar från olika databaser, eller direkt från olika webb-program. HTML-sidorna skapas dynamiskt utifrån XSL-dokumenten. Sådant som en footer till webbplatsen kan förändras genom en ändring på en enda plats.

XML-dokumentet kan alltså antingen presenteras visuellt, eller användas som indata till ett annat program, som vidarbehandlar uppgifterna på något vis. Och när webb-browsers börjar kunna tolka XML/XSL, kan sökmotorer och agenter indexera XML direkt. Det blir enklare än någonsin att hitta rätt. Varje element i sidan är uppmärkt med dess datatyp, innebörd, etc.

Metadata

XML är bara ännu ett litet steg mot en ljusare framtid. Med XML kan var och en hitta på sina egna taggar. I ett dokument är kankse skaparen av dokumentet märkt med <author>jonas@infohwy.net</author> och i ett annat kanske med <writer>jonas@infohwy.net</writer>. Programmet måste veta precis hur varje enskild dokumenttyp ska tolkas.

Därför hoppas vi på ett flertal standardiserade XML DTD's för olika avgränsade områden. Flera finns redan, för matematiska formler, kemiska data, etc. MS har exempelvis CDF för definiering av push-kanaler, som är en XML DTD. När den breda massan börjar förstå vad XML är och vad HTML var tänkt att vara, kommer även HTML att omdefinieras som en XML DTD. Det blir troligen HTML 5.0, och är tänkt som en mjuk övergång till en helt ny tidsålder.

För att lyfta hela skapandet av DTD's till en högre nivå, har W3C samlat kompetensen från arbete med HTML metadata, PICS, biblioteksväsendet, XML och teorierna för representation av kunskap. Resultatet heter Resource Description Framework (RDF).

RDF är ett standardiserat sätt att representera data, fast på en högre nivå. Representationen kan till viss del liknas vid en objektrelationell databas. Representationen består av ett antal noder med vardera några egenskaper. Varje egenskap består av ett namn/värdepar. Värdet är ofta en annan nod som i sin tur har egna egenskaper. Namnet är ofta även det definierad som en nod, som utgör egenskapens klass. RDF är ett mycket kraftfullt sätt att beskriva data. XML används för at kommunicera data i RDF mellan olika program.

RDF i sig har ingen semantik (förståelse av innebörd) kopplad till sig. Den bestämmer exempelvis inte om man ska kalla dokumentets skapare för "writer" eller "author". För detta behövs vad som kallas ett RDF Schema. Styrkan hos RDF är att det ger ett ramverk för att skapa schemas, använda flera schemas i samma dokument och att utöka standard-schemas för sina egna behov. Alla anävnda scheman ingår också i den objektstruktur som RDF-dokumenten utgör.

Ett program kan utifrån RDF lära sig väldigt mycket om datans struktur. En hel del av definitionerna kan hämtas direkt från nätet via de inbakade schema-deklarationerna. Även om programmet inte har någon semantik för en speciell utökning av ett schema, kan de behandla datan utifrån de superklasser, där den har semantik.

Schemas kan liknas vid programbibliotek. Ett antal standardschemas kommer att finnas. Dessa kan sedan utökas av olika företag, eller inför specifika projekt. Ett standard-schema kanske definierar en person att ha förnamn, efternamn och emailadress. För mitt privata projekt kan jag subklassa schemat till att även inbegripa skonummer. Min webbplats innehåller XML-dokument i RDF-format med mitt schema, där ett antal personer, med förnamn, efternamn, emailadress och skonummer, finns beskrivna. Sökroboten Nisse borta i usa, som bygger en gigantisk persondatabas hittar mina webbsidor och läser in persondatan. Den har ingen semantik för mitt schema, så den förstår inte vad den ska göra med skonummer. Men tack vara RDF, känner den igen att detta är en utvidgning av ett standard-schema, så den kan ändå läsa in förnamn, efternamn och emailadress i sin databas.

Hela utvecklingen inom datorvärden verkar bygga på lager efter lager av kommunikationsstandarder:

  1. Semantik
  2. Scheman
  3. RDF
  4. XML
  5. HTTP
  6. TCP/IP

Platform for Internet Content Selection (PICS)

Metadata har evolverat genom alla nivåer och versioner. I HTML är det nästan bara en enda metadata som används, nämligen <TITLE>. I och med XML har formatet för andra "språk" standardiserats. XSL skrivs i XML. PICS-dokument skrevs tidigare på ett LISP-liknande vis, men omarbetas nu för att utgöra en del av RDF standard-schemas.

PICS är en standard för att klassificera webbsidor under ett antal olika kategorier. Vilka kategoerier, och valalternativen per kategori, kan definieras från fall till fall. PICS inbegriper en infrastruktur för hur dessa metadata kommuniceras och lagras. Klassificeringen kan ske av webbplatsen själv eller av en extern central. En tidig version av PICS stödjs faktiskt delvis av MS Internet Explorer.

PICS har främts användts för gradering av webbsidors innehåll i kategorier, ämnade som stöd för föräldrar, om vilket material som är lämpligt för sina barn. Webläsaren (exempelvis MSIE) kan ställas in för att inte acceptera sidor som inte uppfyller vissa minimikrav på anständigt innehåll. Detta användingsområdet är ett exempel på hur W3C använder en tillämpning som folk kan förstå, för att ge draghjälp åt den underliggande teknologin, dvs klassificering av alla sidor på WWW. Med PICS finns det ett standardiserat sätt att anmäla en webbsidas innehåll till sökmotorer och index, som leder till betydligt högre kvalitet vid sökningar på nätet. Och varje enskild besökare kan själv välja om de litar på upphovsmannen, eller kräver att få klassificeringen av sidan från en betrodd tredjepart. Kanske kommer Yahoo i framtiden att konvertera sin webbplats till en PICS-server.

Platform for Privace Preference Project (P3P)

En dynamisk webplats har ett innehåll anpassat för varje enskild individ. P3P utgör en standard för hur information om besökaren följer med besökaren och kommuniceras till de olika webbplatserna. Varje enskild webplats kan be om ytterligare info om besökaren. Besökaren har hela tiden full kontroll över vad som lämnas över till webbplatsen.

Det betyder att användaren kan i sin browser fylla på med standarduppgifter om sig själv, samt bestämma sig för vilka webplatser som får lov att använda dessa data. Man kan ange en betrodd tredjepart, som håller en lista på "seriösa" webbplatser. Man kan välja att vid övriga fall få göra ett explicit val och kan få upp dialogrutor för att kompletera sina uppgifter med vad den specifika webbplatsen vill veta. Man behöver alltså inte fylla i sina uppgifter gång på gång, för varje ny webplats man vill ska specialanpassas för sina behov.

Givetvis är formatet för P3-sessionerna XML.

Och mera...

W3C utvecklar också specifikationer för digitalia signaturer, elektronisk handel, HTTP-protokollet, mm. Document Object Model (DOM) är ett språk-neturalt sätt att komma åt och förändra ett dokuments struktur, med dess olika element, attribut och dess style sheets. Detta för att användas av javascript, VB-script, perl, java, osv, vid hatering av XML/HTML-dokument på klienten eller servern. Ett viktigt arbete är internationaliseringen. Det finns noga uttänkta sätt att handskas med dokument som finns i flera språkvarianter. Och mera...

Utvecklingsmiljö

Idag kan man räkna med grundstöd för HTML 3.2. Informaitonen presenteras, men väldigt mycket av finesserna i HTML kommer inte till sin rätta i MSIE och NN. De stödjer delar av CSS 1.0 och HTML 4.0. MSIE har begränsat stöd för PICS.

W3C ger inte bara specifikationer. De utvecklar även en hel del program och bibliotek för att testa koncepten. Jigsaw är en webserver i Java med stöd för HTTP 1.1. Amaya är en browser med stöd för mycket av HTML 4.0 och andra projekt. Bland annat stöds uppmärkningstaggar för matematiska formler.

Utvecklingbibliotek (LibWWW) för webtillämpningar finns för C och Perl. Källkod och dokumentation finns för allt. Exempelprogram finns för de flesta projekt, inklusive XML, XSL, RDF och PICS. XML-parser finns för både perl, C och java.

Utvecklingen mot XML som ett universalformat för informationsöverföring syns på många håll. Många produkter utvecklar gränssnitt mot XML. MS kommer att använda XML som universalformat för hela Officepaketet och andra delar av sitt operativsystem. Ett antal stora system för databasdriven webpublicering arbetar med XML-dokument.

här är en lista på ett fåtal grupper och företag som använder XML i någon form:

Användningsområden

De olika W3C-specifikationerna är ett bra alternativet när man vill kunna koppla in nya tekniker i framtiden. Det blir enklare när dataformatet redan finns där via XML-gränssnittet. Även om den stora fördelen kommer när starkt stöd finns på klientsidan, och när en stor del av nätet använder tekniken, finns ändå stora fördelar att använda tekniken enbart på serversidan.


Skicka kommentarer till Jonas Liljegren: jonas@paranormal.se