Søger du en specifik kategori?

 



Oprettet søn. d. 14. februar 2010 kl. 17:04

arne_v
arne_v (1.016.094 point)
Guidens karaktér
1
2
3
4
5

XML hvad, hvorfor og hvornår ?

Denne artikel beskriver hvad XML er, hvad det kan bruges til og hvad det ikke bør bruges til. Det er ikke en fuld tutorial til XML. Den forudsætter ikke viden om XML men har lidt en programmerings indgangsvinkel til tingene.
Historie:
V1.0 - 27/02/2005 - original
V1.1 - 28/02/2005 - lidt opstramning (bl.a. eksempel på DTD og schema)
V1.2 - 26/12/2008 - små ændringer + tilføje links
V1.3 - 29/12/2008 - tilføj link til PHP og ASP artikler
V1.4 - 14/02/2010 - smårettelser

Hvad er XML ?

XML står for "eXtensible Markup Language".

Det er ikke et specifikt markup language men en familie
af markup languages med fælles karakteristika.

XML er en delmængde af SGML (Standard Generalized Markup Language).

XML er en W3C standard.

Eksempel på XML dokument:


<?xml version="1.0" encoding="UTF-8"?>
<list>
  <item nr="1">a</item>
  <item nr="2">bb</item>
  <item nr="3">ccc</item>
</list>


list og item kaldes elementer

nr kaldes en attribut

den første linie kaldes en processing instruction

Såkaldt wellformed XML er karakteriseret ved:
* alle elementer afsluttes - enten som <elm>...</elm> eller som <elm/>
* elementer kan være inden i elementer men ikke krydse hinanden
  <aa><bb>...</bb></aa> er ok men <aa><bb>...</aa></bb> er ikke ok
* der er præcist et element yderst (kaldet rod element)
* attribut værdier er quoted enten med "" eller ''

Derudover taler man om valid XML hvis:
* den er wellformed
* den overholder en given DTD eller schema

DTD og schema er begge to en beskrivelse af strukturen af et XML
dokument. Groft sagt en beskrivelse af hvilke elementer der kan
være inden i hvilke elementer og hvilke attributter et element kan
have.

DTD er den ældste måde at lave beskrivelser på og er rimelig simpel.

Schema er en nyere måde at lave beskrivelse på og betydeligt mere
avanceret. Bl.a. er der support for namespaces og restriktioner
på værdier.

Eksempel på DTD for XML dokumentet ovenfor:


<!ELEMENT list (item)*>
<!ELEMENT item (#PCDATA)>
<!ATTLIST item nr CDATA #REQUIRED>


Eksempel på schema for XML dokument ovenfor:


<?xml version="1.0"?>
<xsd:schema version="1.0" xmlns:xsd="http://www.w3.org/ (...)
  <xsd:element name="list">
      <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="item" maxOccurs="unbounded">
                <xsd:complexType>
                    <xsd:simpleContent>
                        <xsd:extension base="xsd:string">
                            <xsd:attribute name="nr" type="xsd:integer"/>
                        </xsd:extension>
                    </xsd:simpleContent>
                </xsd:complexType>
            </xsd:element>
        </xsd:sequence>
      </xsd:complexType>
  </xsd:element>
</xsd:schema>


Idag bruger man altid schema - aldrig DTD.

Læs mere om XML her:
  <a href="http://www.w3schools.com/ (...)
  <a href="http://www.w3.org/ (...)

Eksempler på XML

XML er som sagt en familie af opmarkerings sprog. Hvert af de sprog har sin
egen definition (DTD eller schema).

Nogle af de mest kendte er:

XHTML (Extensible HyperText Markup Language) : en version af HTML som er XML (en W3C standard)

WML (Wireless Markup Language) : brugt til mobil applikationer (en OASIS standard)

SOAP (Simple Object Access Protocol) : brugt til web service kald (en W3C standard)

WSDL (Web Services Description Language) : brugt til web service beskrivelser (en W3C standard)

SVG (Scalable Vector Graphics) : brugt til grafik (en W3C standard)

ebXML (Electronic Business XML initiative) : brugt til B2B (en OASIS standard)

ODF (OpenDocument Format) : OpenOffice dokument format (en OASIS standard)

OOXML (Office Open XML) : MS Office dokument format (en ECMA standard)

Yderligere XML begreber

Her er nogle begreber som man også bør kende hvis man arbejder med XML:

DOM (Document Object Model) : et XML dokument som træ struktur

XML parser : kode som kan læse XML dokument

XSLT (eXtensible Stylesheet Language Transformation) : XML som kan transformere et XML dokument til et andet
XML dokument eller HTML eller noget helt tredie

XPath (XML Path language) : syntax for at udvælge dele af et XML dokument

XSL-FO (eXtensible Stylesheet Language - Formatting Objects) : tranformering af XML til formater som f.eks. PDF 

Hvorfor er XML smart ?

1)  det er en standard med bred support fra IBM, Microsoft, Apache Group etc.

2)  der findes en masse gode biblioteker til at læse og skrive XML dokumenter med

3)  mange nye standarder bygger oven på XML

4)  det er et godt velstruktureret platforms uafhængigt format

Men bemærk, at XML kun er et format.

Mange roser XML til skyerne og siger at det vil revolutionere alt.

XML er godt, men lad være med at tro, at det er svaret på alt.

XML har nogle stærke sider (se ovenfor), men XML er absolut ikke
velegnet til alt.

Man skal ikke bruge XML bare for at bruge XML. Man skal bruge XML, hvis
XML løser nogle konkrete problem stillinger i ens projekt.

Hvad kan man bruge XML til ?

XML kan bruges til meget:
* web sider
* web services
* data import/eksport filer
* konfigurations filer
og meget mere

Med hensyn til web sider så vær opmærksom på de mange muligheder:
- statiske XHTML sider
- server side scripts som dynamisk genererer XHTML
- statiske XML side som konverteres til HTML/XHTML client side
- server side scripts som dynamisk genererer XML som konverteres til HTML/XHTML client side
- business logic layer som outputter XML til presentation layer som konverterer til HTML/XHTML server side
Og selvom de alle bruger XML på en eller anden måde, så er de vidt forskellige
teknisk set. Så hvis du snakker om XML i web løsninger så vær præcis med
hvad du snakker om.

Hvornår er det smart at bruge XML ?

Det er smart at bruge XML når:
  - 2 programmer skal snakke sammen
  - de 2 programmer er eller skal være meget uafhængige af hinanden
  - time forbruget er vigtigere end hardware omkostningerne

Det lyder måske som en sjælden kombination, men det er det faktisk ikke.
I dagens integrerede IT systemer snakker de fleste programmer sammen. Det er
næsten altid et mål at programmerne skal være så uafhængige af hinanden som
muligt. Man kan købe en forfærdelig masse PC'ere for det som 500 konsulent
timer af 800 kr. koster.

Hvornår er det ikke smart at bruge XML ?

Det er ikke smart at bruge XML hvis:
  - det skal læses af mennesker (mit eksempel i starten er nemt at læse
    men avanceret XML med namespaces er ulæseligt)
  - hvis de 2 programmer i forvejen er tæt koblet (hvis det er 2 dele
    af samme program så vil en konvertering objekter->XML og XML->objekter
    typisk bare være spild af CPU power)
  - performance er meget vigtig (det koster i performance at arbejde med XML fremfor
    med binære proprietære formater/protokoller)

Videre med XML

Jeg har skrevet nogle artikler om brug af XML i forskellige sprog.

Java:
  http://www.eksperten.dk/ (...) "XML parsning i Java"
  http://www.eksperten.dk/ (...) "Mere XML i Java"
  http://www.eksperten.dk/ (...) "Nye XML API'er i Java"

.NET/C#:
  http://www.eksperten.dk/ (...) "Brug af XML i C#"
  http://www.eksperten.dk/ (...) "XML i C# - nyt i .NET 2.0 og 3.5"

.NET/VB.NET:
  http://www.eksperten.dk/ (...) "Brug af XML i VB.NET"
  http://www.eksperten.dk/ (...) "XML i VB.NET - nyt i .NET 2.0 og 3.5"

PHP:
  http://www.eksperten.dk/ (...) "XML i PHP"

ASP:
  http://www.eksperten.dk/ (...) "XML i ASP"
 
Jeg har skrevet nogle artikler om brug af web services.

Java:
  http://www.eksperten.dk/ (...) "Web Services i Java med Axis"
 
.NET <-> Java:
  http://www.eksperten.dk/ (...) ".NET og Java interoperabilitet II"

Men derudover kan du jo også bruge XML i:
  * JavaScript
  * C/C++
  * Python
  og mange flere

Skrevet søn. d. 27. februar 2005 kl. 19:08| #1

alister_crowley (13.290 point)
God artikel, hvis man vil lærer mere uddybende om XML, Data islands, XSLT ect. kan man kigge ind på http://udvikleren.dk/ (...)

Skrevet søn. d. 27. februar 2005 kl. 21:19| #2


Skrevet man. d. 28. februar 2005 kl. 10:17| #3

jpvj (93.133 point)
Hmmm... overskriften passer til indholdet.

"Det er ikke en fuld tutorial til XML. Den forudsætter ikke viden om XML men har lidt en programmerings indgangsvinkel til tingene.". Det er ikke noget, der bare ligner en tutorial efter min mening. Den kræver heller ikke noget programmerings erfaring, da der ikke indgår et eneste kode eksemplet.

Artiklen fejler som sådan ikke noget, da den lever op til overskriften. Indholdet er korrekte, kort og godt.

Jeg havde forventet en noget mere teknisk og uddybende artikel fra arne_v, da han - efter min bedste overbevisning - er i besiddelse af en ganske stor viden omkring programmering.

Skrevet man. d. 28. februar 2005 kl. 13:29| #4

bongo20 (10.765 point)
Lidt for overfladisk

Skrevet man. d. 28. februar 2005 kl. 17:03| #5

foxmulder58 (21.519 point)
www.madsns.dk
Meget fin artikel. Arne v har fået mange aspekter med omkring hvad XML er , og ikke mindst hvad det kan bruges til. Jeg synes artiklen er god til dem der ønsker at bruge XML, for det er ganske rigtigt hvad Arne skriver i sin artikel "XML er godt, men lad være med at tro, at det er svaret på alt."

Det eneste jeg savnede i denne artikel var et par gode forslag til software man kan anvende til at programmere i XML.

jeg bruger selv XML og anvender Near and Far Designer 3.0 (til DTD) samt X-Metal 2.0 til opmærkning af selv XML-dokumenterne.

Alt ialt er det en fremragende artikel der bør læses af de som ønsker at komme igang med XML.


Mvh
Mads

Skrevet tir. d. 01. marts 2005 kl. 10:26| #6

cronck (12.102 point)
Synes alligevel at jeg fik meget ud af det.

Skrevet tir. d. 01. marts 2005 kl. 11:50| #7

spe (72.994 point)
Havde forventet en mere forklarende tekst. I det der står at kendskab til xml ikke er en forudsætning.

Skrevet tir. d. 01. marts 2005 kl. 12:14| #8

karsten_larsen (14.235 point)
Indfri sin overskrift

Skrevet tir. d. 01. marts 2005 kl. 18:54| #9

sorenbs (16.802 point)
giver mulighed for at gå videre

Skrevet ons. d. 16. marts 2005 kl. 12:40| #10


Skrevet man. d. 25. april 2005 kl. 20:43| #11


Skrevet tir. d. 09. august 2005 kl. 07:27| #12


Skrevet man. d. 09. januar 2006 kl. 18:29| #13

slst (12.105 point)
Hvad bruger man XML til? Måske er det bare mig, men efter jeg læste denne artikel fattede jeg intet om hvad XML var og hvad de sjov dropdown menuer som dem - <xsd:schema version="1.0" xmlns:xsd="http://www.w3.org/ (...) hvad de kan bruges til... næh nej! Så ikke den bedste artikel og forresten vidster jeg "0" så meget om XML før og nu "0" så meget!

Skrevet ons. d. 28. juni 2006 kl. 19:28| #14


Skrevet tir. d. 26. februar 2008 kl. 13:48| #15

usse (15.750 point)
godt skrevet, måske ikke så uddybende, men også kun en appetitvækker

Skriv en kommentar



Mest populære guides

Guidens karakter
!!!Karaktér: 3
14 stemmer
31/01 - 2011
Af: heinzdmx

Dropbox - gratis online lagerplads

Jeg vil i denne guide forklare lidt om hvad Dropbox er og også hvordan du får mest mulig plads på Dropbox. Dropbox er kort sagt en service hvor du har dine data lagt til backup på både nettet og din egen computer.
Guidens karakter
!!!Karaktér: 4
33 stemmer
02/02 - 2009
Af: jkrons

Dato- og tidsberegninger i Excel

En introduktion til simple beregninger med dato og tid i Excel. Opdateret med afsnit om beregning af tillæg.
Excel  |  Læs »
Guidens karakter
!!!Karaktér: 4
21 stemmer
06/11 - 2011
Af: fromsej

Sådan fjerner du virus og malware

Udviklingen går stærkt på "skidt"fronten, så vi har sammensat en ny og effektiv programpakke til fjernelse af det.
Virus  |  Læs »

Log ind

   

   



   




Tips & Tricks fra PC World

Teaser billede

Top 5: Virale YouTube-videoer fra Danmark

Lægger du mærke til de mere eller mindre skjulte reklamebudskaber, når du ser videoer på nettet? Vi har taget et kig på fem utrolige danske videoer, som er blevet virale hit.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan fupper smarte svindlere dig på Facebook

Se hvordan du undgår Facebook-fup i fremtiden.


Nyheder fra Computerworld

Teaser billede

App-udvikling 2.0: Sådan er den perfekte app

ComputerViews: Den værste app-hype er ved at have lagt sig, og nu ser vi konturerne af fremtidens app-design. Men hvordan udnytter man de mobile muligheder optimalt?


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger