XML

**XML** (**eXtensible Markup Language**) er ein måte å strukturere tekst på, ved å definere *kva* ulike delar av teksten *er*, ved å nytte tekstkoding eller markeringskodar kalla *taggar*. XML er tilrådd av W3C som standard for merking av tekst. Det er ein enkel, men svært fleksibel og utbreidd standard. 

Opphavleg var det tenkt brukt for ulike former for elektronisk publisering. Etter XML vart introdusert i 1998, har det vekt stor interesse. Det har vorte ein etablert standard for utveksling av data på Internett. Dei seinare åra har det blitt det sentrale språket for kommunikasjon i såkalla B2B-applikasjonar (business-to-business), applikasjonar som talar ulike språk internt – men har eit felles språk seg imellom: XML.

## Kort om XML

XML blir ofte kalla semantisk markeringsspråk, i og med at element blir markert etter kva dei er og ikkje etter korleis dei skal sjå ut. Der den grafiske datarevolusjonen gav oss WYSIWYG (det du ser er det du får), er XML-slagordet «det du ser er det det er». I teksthandsamingsformat (eller i wikiformat) bruker vi taggar som ,  og liknande, t.d. viss vi vil forklare ein *term* eller seie at noko er **viktig**. Datamaskina vil forstå dette, og vise teksten slik vi vil han skal sjå ut. Men i XML fortel vi heller kva noko er. For å forklare ein term som t.d. *fonasjon* skriv vi t.d. fonasjon. Viss vi vil at alle termar skal skrivast i halvfeite typar seier vi det ein annan stad. På denne måten er det lett å søke etter termar (eller kva det måtte vere) i ein database.

XML set ingen grenser for kva element ein kan bruke. Dette i motsetnad til HTML og XHTML som er «ferdige» markeringsspråk laga for et gitt føremål: Publisering av tekst m.m. på verdsveven.

XML er ei enklare utgåve av SGML. Et viktig mål er å gjere utveksling av informasjon over Internett lettare. Dokument basert på XML (til dømes gjennom formata RDF, RSS, MathML, XSIL og SVG) er alle skildra på ein formell måte som gjer det mogleg å validere at strukturen er korrekt og at innhaldet har korrekt format.

## Styrkar og svakheiter
Det som gjer XML spesielt veleigna for datautveksling, er:
* Formatet er både menneskelesbart og maskinlesbart.
* Det nyttar teiknsettet Unicode, som representerer alle kjende noverande og historiske teiknsystem.
* Det er eigna til å representere generelle datastrukturar slik som databaseskjema, lister og trestrukturar.
* Formatet er sjølvdokumenterande.
* Det har ein streng syntaks som gjer data enkle å tolke for eit program.

XML vert også ofte brukt til dokumentlagring og prosessering, både over nett og lokalt. Føremonar med XML er her:
* Eit robust, logisk verifiserbart format basert på internasjonale, opne standardar.
* Hierarkisk struktur godt eigna for dei fleste (men ikkje alle) typar dokument.
* XML-dokument er tekstfiler. 
* Plattformuavhengig.
* Markeringsspråk har vore i bruk sidan 1980-talet (SGML) og har støtte i ei stor mengd programvare.

Formatet har i nokre samanhengar nokre bakdelar:
* XML-syntaks er plasskrevjande
* Modellering av overlappande (ikkje-hierarkiske) datastrukturar blir ikkje optimal.
* Mapping av XML til objektorienterte eller relasjons-paradigmar kan vere komplisert.
* Det er ikkje mogleg å bruke dei særnorske bokstavane *æ*, *ø* og *å* i element- eller attributtnamn (i versjon 1.0).

## Syntaksreglar for XML

Eit XML-dokument er normalt ei tekstfil med ei Unicode-basert teiknkoding som UTF-8, UTF-16 eller ISO&nbsp;8859-1.

Til skilnad frå t.d. HTML må XML ha korrekt struktur og innhald for å bli handtert korrekt..
For at eit dokument skal bli rekna for «velforma» (W3C Recommendation XML 1.0 (Third Edition)), må det som minimum oppfylle følgjande:

* Det må ha eitt og berre eitt rotelement.
* Ikkje-tomme element kan berre vere ein starttagg og ein sluttagg. Tomme element kan merkast med ein lukka tagg.
* Alle attributtverdiar må settast i hermeteikn (anten eit enkelt, rett hermeteikn (`'`) eller eit dobbelt, rett hermeteikn (`"`)). Ein attributtverdi må byrja og avslutta med same type hermeteikn. Den typen hermeteikn som blir brukt til å omslutte attributtverdien kan brukast som ein del av attributtverdien.
* Element kan innehalde andre element, men ikkje overlappe kvarandre. 
* Det er skilnad på store og små bokstaver i elementnamn. Til dømes er `&lt;Eksempel&gt;` og `&lt;/Eksempel&gt;` eit velforma par, medan `&lt;Eksempel&gt;` og `&lt;/eksempel&gt;` ikkje er det.

Gode val av elementnamn gjer at ein kan byggje inn semantikk (meining) i data som ein del av strukturen. Dette gjer at XML-dokument lettere blir forstått av menneske samstundes som dei er tolkbare av dataprogram.
 
Her er et døme på eit XML-dokument, ei oppskrift på eit brød:

 
 
 
   Vanleg brød
 
   Kveitemjøl
 
   Gjær
 
   Varmtvatn
 
   Salt
 
   
     Bland alle ingrediensane og kna grundig.
 
     Dekk over med eit klede og sett til heving i eit varmt rom.
 
     Kna på nytt, legg i ei form, og steik ved 200 grader Celsius i 1 time.
   
 

Elementnamna kan brukast for alle moglege matoppskrifter, medan det aktuelle innhaldet (instansen) uttrykker éi brødoppskrift.

Ved å gi logiske namn til element og attributt vert det lettare for andre å forstå XML-dokumentet utan å ha lese ei forklaring av formatet først.

Eit XML-dokument som er velforma og i tillegg oppfyller krava i eit tilknytt XML-skjema-dokument eller ein DTD, blir kalla gyldig (engelsk: *valid*). Slike valideringsdokument for XML blir på norsk kalla XML-skjema (eng. *XML schema*; liten s).

## Sjå òg

* Abstract syntax tree (AST)
* CSS, XSL
* DocBook
* Dokumenttypedefinisjon, XML-skjema, DSDL, Relax NG
* DOM, SAX
* Enamel (NML)
* RSS, Atom, OPML, OML
* Keyhole Markup Language, KML
* S-expression, XML query language
* SGML, HTML, XHTML
* SVG, MathML, CML, SMIL, FpML, XBRL
* The Z Format
* UIML, XUL, XBL, XAML
* Web Service, SOAP, ebXML, UDDI, WSDL, WSFL
* XRI, XDI

## Bakgrunnsstoff

* **XML-spesifikasjon**
** Annotated XML Specification
** World Wide Web Consortium sin nettstad
** World Wide Web Consortium XML nettstad
** Spesifikasjonen av XML 1.1
** Spesifikasjonen av XML 1.0
* **Skylde standardar**
** Relax NG heimeside
* **Progamvare**
** Open XML Editor
** Open XML Library for Delphi/Kylix
** Online XML validator
** XML Document Authoring Tools   
* **Utviklarressursar**
** XeML.net 
** The XML FAQ
** xml.com
** Cafe con Leche - XML-nyhende og ressursar
** XML Cover Pages
** XML On Target  - populær XML-weblog
** IBMs developerworks XML nettsted
** XMLHack – ein ny nettstad for XML-utviklarar
** XML-L Epost-liste
** ''XMLPatterns.com'' - Utvikle effektive DTD-ar og XML Schema-dokument med XML ved å bruke strukturelle designmønster.
** ''Xml Sucks'' – problem med XML
** XML: A Language To Manage the World Wide Web 
** XML Linking: State of the Art
** Markup of XML contents  - et XSLT-verktøy som nyttar eksterne ordlister for å lage semantisk markering
** XML-DEV Mailing List