XML
I grove trekk kan vi si at et XML-dokument består av tre hoveddeler: En prolog, datadelen (rotelementet) og en epilog. Noe av dette er nødvendig og noe er valgfritt.
Et XML-dokument kan se slik ut, med tre hoveddeler:
<?xml version="1.0" encoding="utf-8" standalone="no"?> <!-- dette er en velformet fil uten mening --> <!DOCTYPE litteratur SYSTEM "bokdok.dtd" [<!ENTITY gj "God Jul">]> <?xml-stylesheet type="text/xsl" href="a_trans.xslt"?> <litteratur/> <!-- epilog -->
Prolog
Den første linja har flere komponenter:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
Den første delen, xml version=1.0" er obligatorisk og signaliserer til det programmet som skal lese fila, og oss, at dette er en XML-fil. Det kan ikke være blanke linjer eller tegn foran denne begynnelsen.
Den andre delen encoding="UTF-8" sier oss hvordan innholdet er kodet, hva slags tegnsett som er brukt. Dette åpner for stor frihet til å skrive i en rekke ulike språk med tegnsett som er helt annerledes en det vi er vant til å bruke. Det finnes en rekke definerte tegnsett som har kjente betegnelser. For å skrive norsk bruker vi ofte "ISO-8859-1", som er en standard som ivaretar våre nordeuropeiske tegn. Tegnsett og nødvendig tilhørende teknologi er en ganske omfattende historie. Unicode er en viktig del av dette. UTF-8 er 8-bits unicode som expanderer i antall byte etter behov. UTF-8 er "standard" og default koding i alt som har med XML å gjøre
Den tredje delen standalone="no" sier oss hvorvidt dokumentet er selvforsynt, eller om andre filer er involvert, f.eks. om det finnes en ekstern DTD. Denne delen trenger vi ikke ta med, og det litt uavklart hvordan ulike programmer og parsere skal forholde seg til dette.
Den andre linja:
<!-- dette er en velformet fil uten mening -->
er en kommentarlinje som kan settes inn hvor som helst i et xml-dokument.
Den tredje linja:
<!DOCTYPE litteratur SYSTEM "bokdok.dtd">
er en dokumentdeklarasjon, DOCTYPE.
Den andre delen litteratur angir at deklarasjonen gjelder dokumenter med rotelement litteratur.
Den tredje delen SYSTEM "bokdok.dtd" henger sammen og sier oss at selve dokumentdefinisjonen ligger på en URI som heter bokdok.dtd. Det vil i dette tilfellet si en fil i samme katalogen som selve XML-dokumentet. SYSTEM sier oss at dette ikke er noen generell, allment kjent DTD. Alternativet er PUBLIC. PUBLIC antyder at den aktuelle dokmenttypen er slik at det behandlende programmet kan gjenkjenne den og kan behandle den uten slå opp definisjonen. I så fall tjener URI'en som en identifikasjon, snarere enn en adresse til en definisjon.
En dokumentdeklarasjon kan inneholde både en PUBLIC-del og en SYSTEM-del. F.eks. kjenner vi deklarasjonen av XHTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
der den første delen -//W3C//DTD XHTML 1.0 Strict//EN er tilstrekkelig informasjon for nettlesere til å vite hva de skal gjøre mens den andre URI'en er en implisitt SYSTEM-deklarasjon og angir hvor DTD'en faktisk befinner seg.
Det er også lovlig å lage følgendedede konstruksjon:
<!DOCTYPE litteratur SYSTEM "bokdok.dtd" [<!ENTITY gj "God Jul">]>
der vi har lagt til en spesifikasjon av en entitet til den aktuelle DTD'en.
Den fjerde linja
<?xml-stylesheet code="text/xsl" href="a_trans.xslt"?>
er et eksempel på en prosesserings instruksjon (PI). I dette tilfellet angivelse av et stilsett som skal brukes, her en XSL-transformasjon. Et annet eksempel er angivelse av et CSS-stilsett:
<?xml-stylesheet code="text/css" href="a_stil.css"?>
Roteelementet
Hoveddelen, den delen som vi hovedsaklig har fokus på er i dette perspektivet svært enkel. Den består av et rotelement som kan inneholde alle de komponentene som kan inngå i lovlig, velformet XML. (elementer, tekst, attributter, CDATA). I eksempelet over er rotelementet tomt.
<litteratur/>
Siden et XML-dokument skal ha en ren trestruktur, så er det altså ikke lov å ha flere "rotelementer".
Epilog
Dette er en litt underlig del av et XML-dokument. En epilog kan inneholde alt som kan inneholdes i en prolog, untatt selve XML-linja og dokumenttypedeklarasjonen. Det vil si at vi kan legge inn kommentarer og prosesserings instruksjoner. Det er ikke åpennbart at dette er en nødvendig del av et XML-dokument (?).