Rapport om XML


Sammanfattning

Den här rapporten på kursen IT – XML, 5 p, vid BBS, HiK, tar upp XML:s historia och utvecklingen och motiven som ledde fram till dagens situation. Vidare tar den upp XML:s olika användningsområden, och XML:s uppbyggnad och struktur. Då förklaras hur innehåll, presentation och struktur realiseras med XML-tekniker. Eftersom XML lanseras som ett alternativ till HTML för webbsidor så jämför jag dessa teknologier. Sist tar jag upp XML:s framtid.

Ett mål med uppsatsen är att ta upp lite nya synpunkter och funderingar kring XML som mig veterligen inte tagits upp tidigare.

Författare: Mikael Bonnier, e-post: mikael.bonnier@gmail.com

Kurs: IT – XML, 5 p

Datum: 21/8 2002, Lund

Högskola: Baltic Business School, Högskolan i Kalmar

Skicka gärna synpunkter och rättelser.

 

Historien bakom XML

XML är en vidareutveckling och förenkling av SGML som är en ISO-standard från 1986 (W3C 2002, ISO 2002a, OASIS 2002). ISO är en överstatlig organisation som har statliga nationella standardiseringsorgan som medlemmar (ISO 2002b). SGML är ett språk i vilket man kan beskriva andra språk, s.k. tillämpningsspråk. Det mest kända tillämpningsspråket är HTML från 1995 (W3C 2002). SGML används dock sedan länge inom industrin (Semcon 2002) för att strukturera teknisk dokumentation.

XML utvecklas av W3C. W3C grundades av Tim Berners Lee, webbens uppfinnare, 1994. Lee arbetade för CERN då han utvecklade den första webbservern och webbläsaren (CERN 1998). De protokoll, t.ex. HTTP, han och andra medarbetare då utvecklade är registrerade hos IETF och inte W3C, och det gäller även den första versionen av HTML. IEFT grundades 1986 och är en organisation som beskriver sig själv som en "löst självorganiserad grupp människor". Jag har inte rett ut hur IETF finansieras, men kostnaden för verksamheten är tydligen liten (IETF 2001). W3C finansieras av medlemsavgifter på ca 50 000 kr/år för statliga organisationer, ideella föreningar och småföretag, och 500 000 kr/år för storföretag (W3C 2002a). Eftersom listan på medlemsorganisationer är mycket lång torde W3C ha en hel del pengar att röra sig med (W3C 2002b). Arbetet inom W3C sker genom att olika arbetsgrupper lägger fram utkast till standarder. I IETF är det oftast individer som utarbetar förslagen, s.k. RFC:er. Bägge organisationerna har mailinglistor där vem som helst kan deltaga och komma med synpunkter på de nya standarderna.

SGML är alltså ett språk i vilket man kan beskriva uppmärkningsspråk. Ett uppmärkningsspråk består normalt av text där man kan markera ord och meningar med en start och slutsymbol, s.k. taggar. Uppmärkningsspråk har använts ända sedan 1400-talet för att ange korrektur och sättningsanvisningar för typsättare (Marchal 2002, s 14). I slutet av 70-talet uppfanns ett nytt uppmärkningsspråk för främst matematisk typografi, TeX, av datorvetaren Donald Knuth (TUC 2000). Även printerstyrningsspråk är oftast någon sorts uppmärkningsspråk (Epson 1983). Det finns andra hierarkiska textfilformat, som dock inte är SGML-baserade uppmärkningsspråk: t.ex. de som används för att skapa Winhelp-filer, en sorts rtf-filer, ini-filer och reg-filer, vilka används av Registereditorn fr.o.m. Windows 95. Detta här var bara några exempel på hierarkiska filtyper från OS:et Windows. De flesta objektorienterade programspråk, t.ex. C++ och Java har också ett hierarkiskt filformat (Holub 1992, Naughton 1998). Även VRML är ett hierarkiskt filformat, där man kan beskriva objekt uppbyggda av mindre objekt (Ames 1997). Alltså varken uppmärkningsspråk eller hierarkiska filformat är någon nyhet.

SGML-baserade språk är hierarkiska och man kan jämföra elementen de består av med mappar, undermappar och filer i ett hierarkiskt filsystem. SGML-dokument som t.ex. HTML lagras i vanliga textfiler med 8-bitars tecken, även om det är fullt möjligt att använda bara 7-bitarstecken.

Syftet med vissa SGML-språk är att vara ett medieoberoende lagringsformat (Marchal 2002, s 19). Man använder sedan olika program för att tillverka specialversioner av ett dokument för t.ex. webben, CD-ROM eller en broschyr.

XML från W3C är i stort sett en delmängd av SGML, d.v.s. allt som finns i XML finns också i SGML, med ett undantag: namnrymder. Syftet med XML-nyheten namnrymder är att man skall kunna kombinera olika XML-språk i en fil utan att råka ut för namnkonflikter. En annan nyhet i XML är att man kan använda Unicode, d.v.s. 16-bitarstecken; det innebär att man kan använda tecken från vilka språk som helst i filerna (Marchal 2002, s 47). Om det är 8-bitars- eller 16-bitarstecken i filen bestäms av hur det första tecknet i filen är representerat.

XML är inte bara enklare än SGML utan även striktare. Syftet med detta är att man kan kontrollera att ett dokument är välformat utan att känna till betydelsen hos taggarna. Detta har även fört med sig att man har kunnat minska storleken och komplexiteten för XML-tolkar jämfört med SGML-tolkar och detta är en fördel för små mobila enheter (Åström 2000, s 88; Marchal 2002, s 84, 7).

 

Vad används XML till?

Användningsområdet för XML är detsamma som för SGML, plus ytterligare några. Eftersom XML är enklare än SGML så har det lett till en formlig explosion av nya XML-baserade språk. T.ex. så finns Astronomical Markup Language, AML, Astronomical Instrument Markup Language, AIML (XML.org 2002; NASA 2000) och X3D (Reddy 2002), en omskrivning och modularisering av VRML i XML. Precis som fallet VRML, så formuleras HTML om i XML och kallas då XHTML. W3C har nyligen lanserat ett paket som gör att XHTML, SVG, och MathML, den nya tidens TeX, fungerar väl tillsammans. (W3C 2002c)

XML används även inom e-handel för att t.ex. automatisera beställningar. Ett annat användningsområde för XML är rollbaserad åtkomst av information (Karlsson 2002). Man kan även tänka sig att sökmotorer kan utnyttja den extra informationen i en XML-fil, men då behövs det en allmänt accepterad standard för metainformation som författare, publiceringsort m.m., och sådana har visat sig vara svåra att etablera. Motsvarande system för metainformation i HTML-filer har aldrig slagit igenom på Internet, däremot skulle det säkert fungera på ett intranät.

XML kan användas direkt i moderna webbläsare, men man kan även använda program som omvandlar XML till HTML för att vara kompatibel med äldre webbläsare.

 

Hur XML är uppbyggt

XML är inte bara språket som används för att skapa nya uppmärkningsspråk, utan det är en hel familj med tekniker (Statskontoret 2000). Man använder en XML-fil för att beskriva innehållet i ett dokument. Presentationen för olika medier bestäms av olika stilmallsfiler. Strukturen, d.v.s. vilka språkliga element som är tillåtna var bestäms av ytterligare en fil, en s.k. dokumenttypsdefinition, DTD. Istället för DTD som är ett icke-XML-språk, så kan man i moderna system använda XML Schema – då kan man dessutom fastställa vilka datatyper som är tillåtna på olika platser i dokumentet. Det är inte obligatoriskt att använda vare sig DTD eller XML Schema, men om man inte använder dem så kan man bara kontrollera att dokumentet är välformat, och inte att det är giltigt enligt det speciella XML-språk som används (Marchal 2002, s 84).

Även när det gäller stilmallar så finns det två alternativ: CSS och XSLT. CSS är ett äldre icke-XML-baserat alternativ med begränsade möjligheter, t.ex. kan man inte åstadkomma tabeller i CSS. XSLT är egentligen ett kraftfullt textbehandlingsspråk med ungefär samma användningsområde som AWK och Perl. Med XSLT kan man t.ex. skapa filer i HTML eller XHTML, och eftersom HTML – och därmed XHTML – kan innehålla CSS och JavaScript kan man även få det i sina målfiler (Åström 2000, s 215). Det finns även ett speciellt XML-språk vars filer kan skapas med XSLT: XSL FO. Detta används än så länge mest för trycksaksproduktion (Marchal 2002, s 188).

Rent konkret så består en XML-fil av ett rotelement och inuti det kan man ha andra element, men man får inte ha överlappande element: t.ex. man får inte starta fetstil, sedan starta kursiv, sedan avsluta fetstil och sist avsluta kursiv, utan ett inre element måste alltid avslutas innan ett yttre element avslutas. Detta var egentligen inte tillåtet i HTML heller, men eftersom webbläsarna var toleranta så fungerade det ändå.

 

Jämförelse mellan XML och HTML

Att jämföra XML och HTML är som att jämföra frukt med en seg råtta. Om vi kallar XML för frukt så är SGML godis. XHTML som är baserat på XML skulle man kunna kalla en banan. En likhet är dock att en modern webbläsare klarar av att visa både XML- och HTML-filer direkt.

När man visar en XML-fil, utan stilmall, i en webbläsare så visas den som en trädstruktur, liknande ett hierarkiskt filsystem i Utforskaren i Windows. För att den skall visas på ett snyggare och mer ändamålsenligt sätt så krävs en stilmall. Man skulle kunna använda CSS som stilmallsspråk, men detta fungerar bara för mycket enkla webbsidor – i praktiken använder man XSLT i en XSL-fil. XSLT kan generera XHTML eller HTML, men i XSL-filen måste man skriva XHTML, annars blir inte XSL-filen ett välformat XML-dokument. Detta innebär att man måste kunna XHTML för att utveckla XSLT-dokument för användning i en webbläsare. XHTML är dock bara HTML 4.01 med XML-syntax.

Att en XML-fil i praktiken alltid kräver att även en XSL-fil hämtas ner för att innehållet skall visas, innebär att den tar något längre tid att hämta ner, än en HTML-fil som har innehåll och presentation i samma fil. En XSL-fil kan dock användas för att presentera flera XML-dokument och den behöver därför bara hämtas ner en gång. Även i HTML kan man använda separata stilmallsfiler, i CSS, och kan på så sätt uppnå nästan samma fördelar med tidsbesparing och enhetlig design som med XML. Eftersom XSLT är betydligt kraftfullare och har ett delvis annat syfte än CSS så kan XML-filerna renodlas till att endast innehålla den information som är unik för webbsidan. XML-filer blir alltså kompaktare än motsvarande HTML-filer, bl.a. kan man ta bort redundant information. Vill man t.ex. alltid ha samma text som titel och rubrik på sidan, så behöver den bara skrivas en gång i XML-filen, sedan gör man dubbleringen med XSLT.

Ytterligare en fil som måste skickas över nätet är DTD-filen – d.v.s. om man använder DTD överhuvudtaget. Man skulle kunna tänka sig att denna fil endast behövde skickas över vid validering av ett dokument, men eftersom en DTD-fil även kan innehålla något som kallas entiteter, vilka är egendefinierade förkortningar, så måste filen skickas över. Man kan även ha en DTD internt i XML-filen, och man skulle kunna ha ett program som automatiskt tog bort den länkade DTD-filen och i stället lade in eventuella entiteter internt i dokumentet. Då skulle visserligen inte surfare längre kunna validera XML-filen, men detta behöver man bara göra under utveckling. På så sätt kan man minska överföringstiden för ett dokument.

Både HTML och XHTML har fasta taggar, men det har inte XML utan man kan fritt definiera sitt eget språk. Eftersom HTML är SGML-baserat så är det nädvändigt att veta om en tagg eller attribut är tomt för att avgöra om ett HTML-dokument är välformat, men någon sådan kunskap krävs inte för att avgöra om ett XHTML-dokument är välformat. För både HTML och XHTML krävs det en DTD, respektive DTD eller XML Schema för att validera dokumentet.

Eftersom HTML-dokument ursprungligen skrevs av människor så gjorde man webbläsarna toleranta mot misstag. Man kan alltså visa ett HTML-dokument trots att det inte går att validera, men detta fungerar inte för XML, dock får man oftast ett bra felmeddelande. HTML-taggar har också missbrukats för att åstadkomma grafiska effekter, t.ex. använder webbdesigners rubriktaggar för att åstadkomma stor text i fetstil trots att det kanske inte är en rubrik. Det finns logiska och fysiska taggar i HTML, t.ex. kan man tala om att något är programkod, respektive skall se ut som skrivmaskinstext (Hagberg 1997). Tyvärr använder många webbdesigners detta på ett inkonsekvent sätt.

Det finns verktyg för att utveckla XML, dock ännu inte så många som för HTML. Framförallt saknas motsvarigheter till WYSIWYG-editorer som Macromedia Dreamweaver och Claris Home Page. Detta är begripligt eftersom det är svårare att konstruera ett program som skall generera en XML-, en DTD- och en XSL-fil i stället för bara en HTML-fil. Uppdelningen av information kan göras på många sätt mellan filerna men målet är att få XML-filerna på en webbplats så enkla och framtidssäkra som möjligt.

Det är lättare att utveckla handikappanpassade webbplatser med XML, eftersom man kan skapa olika presentationer för olika grupper av handikappade, men ändå på ett enkelt sätt underhålla webbplatsen. Avänder man t.ex. MathML i stället för gif-bilder så kan även synskadade ta del av matematiska uttryck. Det har funnits vissa tendenser till handikappanpassning i HTML, t.ex. text som visas i stället för en bild, men med speciella DTD:er och XML Schema är det lättare att se till att handikappanpassningen inte försummas av dem som underhåller en webbplats.

Det är lättare att lägga in JavaScript i HTML-sidor än i XML, eftersom koden då måste skapas av XSLT. Det är även lättare att lägga in länkar i HTML-webbsidor, eftersom man i XML antingen måste skriva XSLT-kod som tillverkar HTML-länkar eller också använda det generella men svårkonfigurerade XLink-systemet (Marchall 2002, s 303 ff).

En nackdel i början av XML:s karriär är att buggar kan finnas i programmen som tolkar XML och att detta kan utnyttjas av virusmakare (Nordner 2001). Buggar kan få stor spridning eftersom W3C uppmuntrar till koddelning av olika XML-implementationer. Dock kommer nog dessa problem att vara ganska övergående.

Alla taggar, attribut och attributvärden i XML är case-senitive och inte som i HTML där man kan blanda små och stora bokstäver. Oftast används små bokstäver samt bindestreck för att markera ordgränser. Alla taggar måste avslutas, men för tomma taggar finns ett speciellt avslutningssätt. Alla attribut måste ha ett värde, d.v.s. om attributet måste vara med. Attributvärden skrivs alltid inom citattecken. Dessa regler gör det möjligt att kontrollera att ett dokument är välformat utan att ha någon kännedom om det aktuella XML-språket.

Något av det första en ny XML utvecklare stöter på är de taggliknande sakerna med frågetecken, detta är XML-deklarationen, och används bl.a. för att tala om vilken version av XML och vilken teckenuppsättning som används. En annan taggliknande sak med frågetecken är stylesheet-deklarationen. De andra taggliknande sakerna med utropstecken kommer från SGML och använd för att tala om vilken DTD som används och för att skriva kommentarer (W3Schools 2002).

XSLT är Java-inspirerat, och det ser man genom att studera XSLT-specifikationen på W3C, som ofta refererar till hur datatyper fungerar i Java.

 

XML:s framtid

Kärnan i XML är något mycket enkelt och att det är möjligt att automatiskt kontrollera att ett dokument är välformat är en stor fördel. Det är alltså troligt att alla nuvarande SGML-språk kommer att konverteras till XML. Eftersom XML är strikt är det lättare att konstruera en tolk för språket. Troligen kommer alla programspråk i framtiden att kunna hantera XML-filer som standard.

Alla konfigurationsfiler i ett OS skulle kunna konverteras till XML, t.ex. en nameserver-konfiguration. En strategi för att underlätta denna övergång vore att utveckla XML-språk för alla nuvarande konfigurationsfiler och program för att konvertera mellan dessa format. Sedan eliminerar man de gamla formaten och låter OS:en direkt använda XML-filerna. Fördelen med detta är att OS:en blir minnessnåla och att inlärningstiden minskar, eftersom man nu bara behöver hantera en syntax.

En egenhet hos XSLT är det är svårt att skriva traditionella funktioner med loopar eftersom variabler inte kan tilldelas nya värden, men rekursiva funktioner passar bättre. Det kommer innebära att fler människor måste lära sig tänka rekursivt. XSLT känns också begränsat och ovant för en ny utvecklare. Ett alternativ vore att använda andra etablerade programspråk för att omforma XML-filer. T.ex. kan ett uttryck i XSLT eller Xpath vara kompakt men ändå ta lång tid att exekvera. Situationen liknar den som gäller för SQL, men där har personer skrivit böcker om hur man optimerar språket, så att tids- och minnesåtgång blir så liten som möjligt (Gulutzan 1994).

Man skulle även behöva att XSLT skulle kunna dela upp en fil i flera eller sätta ihop många filer till en.

Det är lätt att definiera nya XML-språk, däremot går det trögare med implementationen av tolkar för dessa. Men t.ex. kommer nästa version av Netscape att klara MathML (W3C 2002d). Tidigare har man varit tvungen att använda gif-bilder eller Java-appletter för att visa matematiska uttryck. Troligen kommer snart webbläsare som klarar SVG.

Nya utvecklingsverktyg kommer säkert att komma: t.ex. intelligenta editorer som utnyttjar en DTD eller ett XML Schema för att föreslå vad man kan skriva i ett visst sammanhang. Eftersom det finns stora likheter mellan objektorienterad analys och datamodellering, och utveckling av XML-träd, så kan man tänka sig att de grafiska verktyg som idag finns kommer att utvidgas så att de även kan generera DTD:er och XML Schema. Ett utmärkande drag för XML är dock att det har ett rotelement. Även WYSIWYG-editorer som kan användas för att automatiskt skapa XSL-filer kommer förmodligen att utvecklas.

Idag använder man relationsdatabaser för att skapa dynamiska webbsidor, man skulle kunna tänka sig att använda XML som databasformat. En nackdel med XML som databasformat är att det är ett textfilsformat och att binär information som t.ex. flyttal lagras på ett ineffektiv sätt (Olofsson 2002). En annan nackdel är att det är strikt hierarkiskt och att detta framtvingar redundans. Förmodligen kommer man att fortsätta att använda relationsdatabaser för stora databaser, men XML för små. Förmodligen kommer man kunna få svaret på en SQL-fråga direkt i ett XML-språk, vilket sedan kan presenteras med XSLT.

Eftersom det är nödvändigt att lära sig XHTML för att skapa webbsidor med XML så är det en bra inlärningsstrategi att lära sig XHTML i stället för HTML, och jag tror att nybörjarkurser i webbutveckling kommer att övergå till detta. XHTML är uppdelat i moduler för olika tillämpningar. Detta gör det också lättare att strukturera en kurs eftersom man kan börja med de grundläggande modulerna och sedan bygga på med de mer resurskrävande. Eftersom man kommer att använda XHTML enbart för den grafiska designen så kan man ytterligare förenkla inlärningen genom att bara lära ut de fysiska taggarna och bortse ifrån de logiska alternativen. Separationen mellan innehåll och presentation kan man ta upp när man senare lär sig XML.

XML kommer även att få stor betydelse inom e-handel, eftersom man kan lägga ut prislistor med beställningsinformation som dels kan visas för människor, dels kan behandlas automatiskt av datorer. System för digitala signaturer i XML håller också på att utvecklas. Den binära informationen omkodas då till textblock.

Det finns de som kallar XML en oavhängighetsförklaring (Nordner 2002). Tidigare har programtillverkare kunnat låsa fast sina kunder vid sina system eftersom filformaten har varit proprietära. Nu kommer W3C och andra aktörer se till att det utvecklas filformat för alla tillämpningar. Det gör att marknaden öppnas upp för konkurrens och att små utvecklare har en chans att hävda sig mot de stora systemutvecklingsföretagen genom att t.ex. utveckla nischprodukter för analys av ekonomisk redovisning.

 

Referenser

 

Bilaga 1

Akronymer

AIML, Astronomical Instrument Markup Language
AML, Astronomical Markup Language
AWK, Aho Weinberg Kernighan
CERN, Organisation Européenne pour la Recherche Nucléaire
CSS, Cascading StyleSheets
DTD, Document Type Definition
HTML, HyperText Markup Language
HTTP, HyperText Transfer Protocol
IETF, Internet Engineering Task Force
ISO, International Organization for Standardization
NASA, National Aeronautics and Space Administration
OASIS, Organization for the Advancement of Structured Information Standards
OS, OperativSystem
Perl, Practical Extraction and Report Language
RFC, Request For Comments
RTF, Rich Text Format
SGML, Standard Generalized Markup Language
SVG, Scalable Vector Graphics
TUG, TeX Users Group
VRML, Virtual Reality Modeling Language
W3C, World Wide Web Consortium
WYSIWYG, What You See Is What You Get
XML, eXtensible Markup Language
XSLT, eXtensible Stylesheet Language Transformations
XSL FO, eXtensible Stylesheet Language Formatting Objects


Copyright © 2001 by Mikael O. Bonnier, Lund, Sweden. All rights reserved.