Björns studiewebb logotyp

XML - en kort beskrivning

Innehåll

På denna hemsida beskrivs kort vad XML är. Här visas även ett enkelt exempel på hur ett XML-dokument ser ut och hur man kan applicera stilmallar (CSS) på ett XML-dokument för att visa innehållet på ett mer intressant sätt.

Hemsidan kommer så småningom att utökas med mer ingående information om hur man skapar XML-dokument.

Vad är XML?

Extensible Mark-up Language (XML) är den senaste "hypen" som många tror ska ersätta HTML. Så är inte riktigt fallet - XHTML är ersättaren till HTML (eller, om man så vill, uppföljaren). (Se hemsidan om XHTML.)

Som namnet säger, Extensible Markup Language, så är XML tänkt att vara ett språk där antalet taggar ska kunna utökas. D.v.s. skaparen (av dokumentet) ska kunna avgöra vilka taggar som ska ingå i dokumentet och dess betydelse. Betydelsen, och syntaxen för data i taggarna, kan skaparen styra med en DTD (Document Type Definition), en fil som beskriver data i taggarna.

XML är också tänkt att märka upp data, inte att märka upp element för presentation som HTML. Vi märker alltså endast upp vår data med taggar - själva tolkningen av denna data ingår inte i XML-dokumentet. För att presentera (d.v.s. tolka) innehållet i ett XML-dokument kan vi t.ex. använda stilmallar (CSS).

En fördel med XML är att ett XML-dokument endast innehåller text, vi är alltså inte beroende av vilket operativsystem eller vilken applikation som dokumentet skapades i. XML kan m.a.o. med fördel användas för att utbyta data mellan olika applikationer och organisationer. 

XML-dokuments delar

XML-prologen

Alla XML-dokument måste börja med en rad, XML-prologen, som visar på att dokumentet är ett XML-dokument samt vilken version av XML som används (endast version 1 finns idag - 2001-09-01). Inget, inte ens mellanslag eller en tom rad, får förekomma framför XML-prologen. XML-prologen ser, i sitt enklaste utförande, ut enligt följande:

<?xml version="1.0"?>

Andra saker (attribut) som kan ingå i XML-prologen är språkkoden (attributet encoding) som dokumentet är skrivet i (t.ex. "iso-8859-1" för Latin 1 - Västeuropa och Latinamerika). 

Rotelementet och övriga element

Efter XML-prologen följer alla element i dokumentet. Elementen i ett XML-dokument brukar "defineras" i nivåer och det måste alltid finnas minst en nivå - det s.k. rotelementet (markeras med taggen <niva1> i exemplen nedan). Det enklaste tänkbara XML-dokumentet skulle alltså kunna ha ett utseende liknande följande kod.

<?xml version="1.0"?>
<niva1>
</niva1>

Rotelementet kan i sig innehålla data, eller teckendata som det kallas, men brukar främst innehålla andra element, s.k. nästlade element (som bildar en andra nivå).

Fler delar

Utöver XML-prologen, rotelementet och de nästlade elementen kan XML-dokument innehålla

  • attribut
  • entiteter
  • CDATA-sektioner
  • kommentarer
  • processinstruktioner

[ ATT GÖRA: Utvecklar ovanstående delar ]

Välutformade och giltiga XML-dokument

I ett välutformat dokument, ett dokument som rättar sig efter XML-specifikationen, kan alla element antingen innehålla tecken data eller andra element, d.v.s. nästlade element. Rotelementets namn måste också vara unikt och alla element måste ha nästlats på ett riktigt sätt (inga överlappande taggar) för att dokumentet ska vara välutformat. 

Ett giltigt dokument rättar sig även efter en DTD (Document Type Definition).

[ATT GÖRA: Utveckla DTD:er för XML.]

Ett första exempel

Nedan visas ett första, och mycket enkelt, exempel på ett XML-dokument. Dokumentet har tre nivåer, där den lägsta nivån (niva31 och niva32) innehåller dokumentets data. De övriga två nivåerna används för att innesluta övriga nivåer.

Se resultatet (fungerar främst bara i Microsoft Internet Explorer och andra webbläsare så kan hantera XML-kod).

<?xml version="1.0"?>
<niva1>
  <niva2>
    <niva31>Niva 3-1 - nr 1</niva31>
    <niva32>Niva 3-2 - nr 1</niva32>
  </niva2>
  <niva2>
    <niva31>Niva 3-1 - nr 2</niva31>
    <niva32>Niva 3-2 - nr 2</niva32>
  </niva2>
</niva1>

XML och stilmallar (CSS)

Stilmallar för XML-dokument fungerar precis som de för HTMl-dokument (se underwebben Stilmallar (CSS)), med en liten skillnad - användandet av egenskapen "display".

Egenskapen display i stilmallar

Egenskapen display används främst för att avgöra om en ny rad ska påbörjas före (och efter?) element. Giltiga (och fungerande) värden för egenskapen är "block" och "inline". Genom att använda "block" kommer elementet att visas på en egen rad (som elementet <rubrik1> i exemplet nedan). Värdet "inline" är standard, d.v.s. egentligen onödig information, och betyder att elementet kommer att visas på samma rad som förra elementet (om inte föregående element använder värdet "block" för egenskapen!).

Exempel med en enkel stilmall

Exemplet nedan bygger på det första exemplet ovan. För att ge dokumentet mer data så har taggen <rubrik1> introducerats på tredje nivån. En annan skillnad är andra raden där filen med stilmallar har länkats in.

XML-dokumentet (XML1_2.XML)

<?xml version="1.0" ?>
<?xml-stylesheet href="xmlstil1_1.css" 
  type="text/css" ?>
<niva1>
  <niva2>
    <rubrik1>Rubrik 1 - nr 1</rubrik1>
    <niva31>Niva 3-1 - nr 1</niva31>
    <niva32>Niva 3-2 - nr 1</niva32>
  </niva2>
  <niva2>
    <rubrik1>Rubrik 1 - nr 2</rubrik1>
    <niva31>Niva 3-1 - nr 2</niva31>
    <niva32>Niva 3-2 - nr 2</niva32>
  </niva2>
</niva1>

Filen (XMLSTIL1_1.CSS) med stilmallar

Endast element med taggen <rubrik1> kommer att visas på en egen rad då egenskapen display fått värdet "block". Övriga element, <niva31> och <niva32>, kommer att visas på samma rad.

För att visa skillnaden på elementen kommer texten i elementen <rubrik1> att visas med fet stil och något större teckenstorlek (16pt) med typsnittet Verdana. De andra två elementen kommer även de visas med typsnittet Verdana, fast med teckenstorlek 10pt och med antingen röd eller blå färg.

rubrik1 {
  display: block;
  font: bold 16pt Verdana;
}

niva31 {
  display: inline;
  font: bold 10pt Verdana;
  color: red;
}

niva32 {
  display: inline;
  font: 10pt Verdana;
  color: blue;
}

Se resultatet (fungerar främst bara i Microsoft Internet Explorer och andra webbläsare så kan hantera XML-kod).

XSL - formatmallar för XML

XML är inte alltid ett praktiskt format. Därför har W3C (World Wide Web Consortium) tagit fram en speciell form av formatmallar som kan användas för att bl.a. omvandla (transformera) XML till andra format (t.ex. HTML). Dessa formatmallar kallas XSL (Extensible Style sheet Language). XSLT är den del av XSL som används för att omvandla XML:en till ett annat format. (Se W3C för mer information.)

Jag översatte CSS till stilmallar (eng. style sheets) då det påverkar HTML:s och XML:s utseende (stil). Men jag har valt att kalla XSL för formatmallar, och inte stilmallar, då XSL främst är tänkt att omvandla XML från ett format (XML) till ett annat format (t.ex. HTML). Detta trots hänvisningen till style sheets i XSL:s namn.

Skapad av: Björn G D Persson. Uppdaterad: 2020-02-16.