Skip to content Skip to navigation

Connexions

You are here: Home » Content » XML - grundlaget

Navigation

Recently Viewed

This feature requires Javascript to be enabled.
 

XML - grundlaget

Module by: Steffen Leo Hansen. E-mail the author

Summary: En gennemgang af det elementære grundlag for opmærkning i XML og opbygningen af et XML-dokument

XML – GRUNDLAGET

1. XML – før vi starter

1.1 XML – eXtensible Markup Language

XML præsenteres generelt som et opmærkningssprog på lige fod med HTML. Der er altså i begge tilfælde tale om en form for sprog, de hedder begge Markup Language, og de bruger begge tags til opmærkning. Den samlede mængde af tags kaldes traditionelt for et vokabular.

I XML udarbejder du dit eget vokabular. I HTML er der et foruddefineret vokabular, det vil sige en mængde gyldige, navngivede tags, som angiver hvordan data i et HTML-dokument skal præsenteres. Derfor vil man også møde de samme tags i stort set alle HTML-dokumenter. Formålet med et prædefineret vokabular er indlysende: en hvilken som helst browser kan genkende og fortolke de tags der forekommer i et dokument og vise indholdet i dokumentet i overensstemmelse hermed.

Et XML-vokabular udgøres af tags som er valgt og defineret med henblik på at fortælle noget om indholdet i data. Et XML-vokabular vil derfor være forskelligt fra det ene XML-dokument til det andet, afhængigt af de skiftende indhold som skal opmærkes. Der findes imidlertid regler for hvordan et XML-vokabular skal se ud, hvordan det skal struktureres. Disse regler – se dem i afsnit 3 i dette modul – udgør rygraden i XML.

XML er et sæt regler for opmærkning. Følger man disse regler bliver

resultatet et velformet XML-dokument som gør det muligt at bygge,

vedligeholde, udveksle og genbruge data. 1

XML er således et meta-sprog, det vil sige et sprog som kan bruges af alle der gerne vil opmærke en eller flere tekster i deres eget opmærkningssprog. Men hvis man vil gøre sig forståelig for omverden, for eksempel fordi man vil distribuere sine opmærkede dokumenter, er det vigtigt at man overholder den særlige syntaks der gælder for XML.

1.2 XML-dokumentet

En opmærket tekst gemmes som et XML-dokument. Et XML-dokument indeholder strukturerede data som i kraft af opmærkningen udgør struktureret information.

Vi vil typisk opbevare et XML-dokument som en fil, en fysisk enhed gemt i et lager på en computer, hvorfor vi giver vores fil efternavnet *.xml. Men vi vil også gerne have at dokumentet, den logiske enhed, informationsenheden, kan læses og genkendes som XML af en XML-processor. Det vil blandt meget andet sætte os i stand til at udveksle XML-dokumenter med andre brugere på tværs af computere, styresystemer og diverse andre teksnologiske restriktioner. For at opnå dette bliver nødt til at følge de regler som definerer hvad der gør strukturerede data til et velformet og gyldigt XML-dokument.

At et dokument er velformet vil sige, at det overholder de syntaksregler der er defineret for XML. At et dokument er gyldigt vil sige, at der foreligger en form for grammatik for opmærkningen og at den konkrete opmærkning er i overensstemmelse hermed.

En sådan grammatik, som definerer hvilke tags der må forekomme, hvor mange gange og i hvilken rækkefølge, kaldes her og i tilhørende moduler også for en informationsmodel 2. Den særlige syntaks som gælder for opbygning af informationsstrukturerne i et XML-dokument vil blive gennemgået i det følgende. Ønsker man at studere dette emne i en original version, anbefales det at starte på www.w3.org.

2. Opmærkning med XML

2.1 Forlægget

Det er som det første vigtig at være opmærksom på, at man ikke skal skrive sine XML-dokumenter i et tekstbehandlingsprogram. Et sådant program indsætter koder overalt i dokumentet, for linieskift, indrykning af afsnit og andet tilsvarende, og den XML-processor som skal tage hånd om dokumentet vil ikke acceptere disse koder. Det vil give en masse fejlmeddelelser. Brug derfor enten en almindelig teksteditor som for eksempel Notepad, eller find en XML-editor på nettet 3.

Udgangspunkt for gennemgangen af de basale byggeklodser i XML er følgende bogtitel fundet i Gentofte Kommunes online-katalog og her præsenteret i let bearbejdet version:

Figur 1

Roman
Anne Marie Løn
Sekstetten 
[Kbh.] : Gyldendal, 2008. - 550 sider
ISBN 978-87-02-07227-3 : hf. : kr. 299,00.
ISBN 978-87-02-07365-2 : ib. : kr. 349,00.

Skal denne information omsættes til et XML-dokument, kunne resultatet være som

vist nedenfor:

1: <?xml version="1.0" encoding="UTF-8" ?>

2: <bog>

3: <forfatter>

4: <fornavn>Anne Marie</fornavn>

5:  <efternavn>Løn</efternavn>

6: </forfatter>

7: <titel>Sekstetten</titel>

8: <forlag sted="København">Gyldendal</forlag>

9: <udg>2008</udg>

10 <sidetal>550</sidetal>

11: <ISBN>

12: <heftet pris=" 299,00">978-87-02-07227-3</ heftet>

13: <indbundet pris="349,00">978-87-02-07365-2</ indbundet >

14: </ISBN>

15: <genre>roman</genre>

16:</bog>

fig. 2: sekstetten.xml

2.2 XML – sproget

Et XML-dokument består af en prolog og et antal elementer. I en prolog placerer man alle de instrukser som specificerer hvordan dokumentet skal behandles, for eksempel en grammatik for dokumentet. Her angiver man også om for eksempel et style-sheet skal inddrages i den aktuelle kørsel. Prologen er altid det første man møder i et XML-dokument.

2.2.1 Prologen

Som det allerførste i linie 1 i sekstetten.xml er der i prologen placeret en såkaldt deklaration:

1: <?xml version=”1.0” encoding=”UTF-8” ?>

Her defineres at der er tale om XML og at der anvendes version nummer 1.0. Endvidere defineres et tegnsæt og dermed mængden af tegn som processoren kan genkende4. I denne mængde indgår blandt andet de danske tegn æ, ø, å og det gør dermed tilværelsen lettere for alle dansktalende brugere af XML.

Anvendelsen og placeringen af spørgsmålstegn definerer en såkaldt processing instruction (PI), det vil sige at alle informationer her er systemorienterede, at de ikke indgår i selve XML-dokumentet og derfor ikke skal godkendes som velformede af XML-processoren.

Resten af dokumentet er bygget op ved brug af de grundlæggende og klassiske byggeklodser i XML, som introduceres nedenfor.

2.2.2 Elementer

Den grundlæggende byggeklods i XML er elementet. Et element består af en starttag, for eksempel <fornavn>, og en tilhørende sluttag, </fornavn> som vist i linie 4. En sluttag kender vi på tegnet ’/’. Mellem disse tags finder vi elementets indhold, forfatterens fornavn. Et element i XML udgøres altså af en starttag, af et indhold, og af en sluttag. Ud fra denne betragtning kaldes et element ofte for en container.

Et element skal have et navn. Det er dig som opmærker der bestemmer, hvad elementet skal hedde, og det er ikke mindst på dette punkt at XML adskiller sig fra HTML. Antallet af navngivne elementer udgør det samlede XML-vokabular.

I sekstetten.xml finder vi i linie 4 og 5 elementerne FORNAVN og EFTERNAVN 5:

4: <fornavn>Anne Marie</fornavn>

5: <efternavn>Løn</efternavn>

Elementer af denne art kalder vi for tekstelementer, da indholdet i elementet er ren tekst. Indholdet i FORNAVN er tekststrengen ’Anne Marie’, og tilsvarende er indholdet i elementet EFTERNAVN tekststrengen ’Løn’.

I linie 3 finder vi en starttag til elementet FORFATTER, den tilhørende sluttag står i linie 6. Lad os se lidt nærmere på indholdet i dette element:

3: <forfatter>

4: <fornavn>Anne Marie</fornavn>

5: <efternavn>Løn</efternavn>

6: </forfatter>

Elementet FORFATTER indeholder ikke tekst, men derimod tekstelementer, elementerne FORNAVN og EFTERNAVN. Vi siger at disse elementer er indlejret (eng. embedded) i elementet FORFATTER.

Et element der som indhold har et eller flere andre elementer, kalder vi for et strukturelement.

Strukturelementer skal, som navnet angiver, skabe struktur i informationsmængden. Strukturen kan vi i dette tilfælde definere som en relation, en relation mellem elementer og anførte informationer: at en forfatter er en person som har et fornavn og et efternavn. Eller, på en anden måde, at FORNAVN og EFTERNAVN er egenskaber ved en FORFATTER.

Der findes et yderligere og specielt strukturelement i dokumentet: elementet BOG. Ser vi nærmere efter, viser det sig at hele dokumentet, fra linie 2 til og med linie 16, er ét enkelt element, eller én enkelt container kaldet BOG. Dette element indeholder hele det samlede XML-dokument. Et element som indeholder det samlede XML-dokument, kalder vi for dokumentets rodelement.6 Vi skal senere se hvordan man kan udnyttet rodelementet til at få fat i hele indholdet i et XML-dokument.

Der findes en tredie form for element: det tomme element. Der er ikke noget tomt element i vores dokument. Vi skal senere se nogle tilfælde, hvor det er nyttigt at gøre brug af tomme elementer.

2.2.3 Attributter

Elementet FORLAG er udformet på en speciel måde. Der er tale om et tekstelement, en container, som vi bruger til at anføre navnet på det forlag som er ansvarlig for udgivelsen. Men i elementets starttag er der indbygget mere information, en angivelse af hvor det aktuelle forlag findes:

8: <forlag sted="København">Gyldendal </forlag>

Information angivet på denne måde i en starttag kalder vi for et attribut.

Et attribut er generelt en karakteristisk bestemmelse af en person eller et begreb. Et attribut i XML er supplerende information som karakteriserer det element som attributtet er knyttet til og eventuelle data indeholdt i elementet. Det er med andre ord data om data, det vi også kalder for metadata. I det aktuelle tilfælde, i linie 8, er det data som karakteriserer forlaget med hensyn til beliggenhed, at der er tale om forlaget Gyldendal i København, og ikke Gyldendal i Oslo.

Et attribut skal have et navn – navnet bestemmer du – og en tilhørende værdi. Det er værdien som specificerer data. Et forlag, alle forlag, er hjemmehørende et bestemt sted, og det konkrete forlag Gyldendal ligger i København:

sted=”København”

Navnet på dette attribut er ’sted ’og værdien knyttet hertil er ’København’. Læg mærke til at man anvender tegnet ’=’ til at forbinde navnet på et attribut med attributets værdi, og at værdien er anført i dobbelte citationstegn.

I sekstetten.xml er der ligeledes brugt attributter i elementerne HEFTET og INDBUNDET til at angive to forskellige priser (linie 12 g 13). Hvornår man skal placere sine informationer i et element og hvornår de hører hjemme som et eller flere attributter, er en afgørelse som træffes af den der opmærker og som ofte er genstand for megen diskussion. Man kan for eksempel diskutere, om SIDETAL (linie 10) skal være et selvstændigt element – kan man på et tidspunkt have glæde af denne oplysning som selvstændig enhed ? – eller om det burde optræde som attribut. Og hvor skulle det så placeres ?

De øvrige elementer i dokumentet giver ikke anledning til yderligere kommentarer. Alt i alt er der således

3 strukturelementer: BOG, FORFATTER og ISBN

9 tekstelementer: FORNAVN, EFTERNAVN, TITEL, FORLAG, UDG (=udgivelse), HEFTET, INDBUNDET, SIDETAL, GENRE

3 attributter: STED, HEFTET, INDBUNDET

3. Syntaks

For at kunne tale om et velformet XML-dokument, skal der gælde følgende:

  1. Et XML-dokument bør starte med en XML-deklaration, og denne skal i så fald være placeret som det allerførste i dokumentet
  2. Et XML-dokument skal indeholde ét element som indeholder samtlige andre elementer i dokumentet. Dette element kaldes for rodelementet
  3. Et element i XML skal have både en starttag og en sluttag
  4. Navnet på start- og sluttag skal matche fuldstændigt
  5. Navnet i en tag må ikke indeholde blanke tegn (mellemrum), men man kan i stedet bruge underscore
  6. Navnet på en tag må ikke begynde med et tal
  7. Værdierne anført i et attribut skal anføres i dobbelte citationstegn (jf ovenfor)

At et XML-dokument er velformet vil sige, at ovennævnte regler er overholdt. Der findes imidlertid en række typiske fejl, fejl som man måske ikke selv får øje på i første omgang, men som fremkommer som en fejlmeddelelse fra processoren når man vil have testet om et dokument er velformet. Regel nummer 4 er nok den regel man lettest kan komme til at forsynde sig imod. Men heldigvis er xml-processoren ekstremt sensitiv, og den vil give besked på skærmen når der er tale om en syntaksfejl og angive nummeret på linien i dokumentet hvor der er en fejl.

De følgende eksempler overholder ikke reglerne 4-6 (og er derfor forsynet med en *):

1: * <Fornavn> Niels </fornavn>

2: * <fornavn> Niels </navn>

3: * <titel> Sekstetten <titel>

4: * <ISBN nummer> 123456789 </ISBN_nummer>

5: * <6_række> 6 </6_række>

Der er tale om følgende fejl:

1: der er brugt ’F’ og ’f’ i navnet, de matcher ikke

2: <fornavn> matcher ikke med </navn>

3: tegnet ’/’ mangler i sluttag

4: der er en blank i starttag

5: navnet på en tag må ikke begynde med et tal

Udover syntaksfejl forekommer en anden type fejl, fejl som ikke fanges af processoren, fordi der er tale om logiske fejl. Logiske fejl hænger sammen med opmærkningen og opbygningen af dokumentet. Det kan for eksempel være, at man fejlagtigt anfører forfatterens fornavn som efternavn og efternavnet som fornavn. Den slags fejl skal fanges af den menneskelige processor.

4. Test dig selv

  • I sekstetten.xml er GENRE et selvstændigt element med indholdet roman. Denne information kan også anføres som et attribut. Hvor vil du placere dette attribut ?
  • Giv et forslag til opmærkning af følgende bogtitel:

Torgny Lindgren

Norrlands Akvavit

Samleren 2008

org.: Norrlands Akvavit 2007

overs.: Karsten Sand

Torgny Lindgren (f. 1938) er en af Sveriges helt store forfattere og desuden medlem af Det Svenske Akademi, som uddeler Nobelprisen i litteratur. Hans forfatterskab tæller titler som Batseba, I brogede Blades vand, Pölsa og Dorés Bibel.

416 sjæle! 416 sjæle frelste Olof Helmersson for 50 år siden i et dalstrøg i Västerbotten. Med livfulde ord og store armbevægelser, inderlighed og harmonikaspil ledte han sin flok. Helmersson var vækkelsens konge. Tanken om de 416 sjæle har boet i ham lige siden, også da han forlod de helliges forsamling og fik job på et sindsygehospital. Og tanken har plaget ham. Så meget, efterhånden, at der skal gøres op. Så den 83-årige Helmersson vender tilbage og slår sig ned hos Ivar og Asta og gør sig klar til at møde de vakte. Men det går ikke helt efter planden og Helmerssons hoved.

Footnotes

  1. “Strictly speaking, XML is not a markup language. A language has a fixed vocabulary and grammar, but XML doesn’t actually define any elements. Instead, it lays down a foundation of syntactic constraints on which you can build your own language.” Ray: Learning XML, O’Reilly 2003, p.6
  2. Begrebet informationsmodel bruges her om den konceptuelle pendant til det som med en teknisk term i XML betegnes som en DTD: Document Type Definition. I modul 3 gennemgåes dette nærmere.
  3. Opmærkninger vist i dette og de øvrige moduler er foretaget ved hjælp af den særlige XML-editor Altova XMLSpy.
  4. UTF-8 = USC Transformation Format (Unicode Standard Characters) for 8 bit
  5. Når vi fremover i teksten omtaler elementer, skrives elementets navn i versaler
  6. Når vi betegner dokumentet som den samlede mængde elementer fra linie 2 til og med linie 16, skyldes det at XML-deklarationen er optionel, at den altså strengt taget ikke er nødvendig.

Content actions

Download module as:

PDF | EPUB (?)

What is an EPUB file?

EPUB is an electronic book format that can be read on a variety of mobile devices.

Downloading to a reading device

For detailed instructions on how to download this content's EPUB to your specific device, click the "(?)" link.

| More downloads ...

Add module to:

My Favorites (?)

'My Favorites' is a special kind of lens which you can use to bookmark modules and collections. 'My Favorites' can only be seen by you, and collections saved in 'My Favorites' can remember the last module you were on. You need an account to use 'My Favorites'.

| A lens I own (?)

Definition of a lens

Lenses

A lens is a custom view of the content in the repository. You can think of it as a fancy kind of list that will let you see content through the eyes of organizations and people you trust.

What is in a lens?

Lens makers point to materials (modules and collections), creating a guide that includes their own comments and descriptive tags about the content.

Who can create a lens?

Any individual member, a community, or a respected organization.

What are tags? tag icon

Tags are descriptors added by lens makers to help label content, attaching a vocabulary that is meaningful in the context of the lens.

| External bookmarks