Het gaat niet zozeer om de XML standaard maar om de XML meta standaard: Schema vs DTD.
Schema en DTD doen beide ongeveer hetzelfde: ze BESCHRIJVEN wat in de XML boom staat en wat correct is: dus welke elements mogen binnen welke elements worden gehangen, welke typen mag de data in de elements hebben etc.
XML is een DATA beschrijvingstaal en heeft NIETS met HTML te maken. XML wordt gebruikt om data op te slaan in een vorm die algemeen is en te lezen is door elke willekeurige XML reader (parser). Je kunt de data net zo goed opslaan in een database, maar dan heb je altijd weer die database nodig. Door de data in XML op te slaan kun je die inlezen in een XML DOM. Dit is een soort tree. Je kunt de data IN die DOM gewoon manipuleren en bv een subboom vervangen door een andere boom. Zodoende kun je flexibel met data omgaan op 3 manieren:
1) voor uitwisseling van data tussen systemen heb je nu 1 vaststaand formaat: XML. Het maakt dus niet meer uit of je van een mainframe naar een PC data moet verplaatsen: doe dit in XML en je weet aan beide kanten waar je aan toe bent
2) doordat je middels functies die bij de DOM horen de xml data in de DOM kunt manipuleren, is het allemaal veel flexibeler dan dat je dat met eigen geschreven interne datastructuren moet doen.
3) Je kunt bv beschrijvingen van templates van bv een tweakers.net newsitem opslaan als XML. De data opslaan in een database, en runtime de data uit de database mergen met de XML template. Je hebt dan in je geheugen een relationele boom staan met alle gegevens van een newsitem. Deze boom (tree) zet je om naar HTML middels een XML Stylesheet (XSLT). Dit omzetten doet de XML DOM voor je. Voordeel? -> volledige splitsing van vormgeving en datastructuur. Je kunt dus de datastructuur wijzigen zonder de vormgeving aan te raken en andersom.
Microsoft en anderen hebben XML Schema ontwikkeld omdat DTD te beperkt is. Met name beperkt op het gebied van... XML! XML schema is op zichzelf OOK weer een XML tree, en kan dus met dezelfde XML parser/DOM worden behandeld dan de XML boom zelf. DTD echter niet. Verder ondersteunt DTD geen types voor data van elementen en XML Schema wel.
Als je met XML hebt gewerkt zul je hebben gemerkt dat DTD's echt te kort schieten en XML Schema the way to go is.
Waarom XML uberhaupt belangrijk is? (en dus de discussie welke meta-taal er gekozen wordt voor de definitie van XML structuren?) omdat XML het je mogelijk maakt zeer flexibele websites te bouwen. Ik heb nu een editor gemaakt die op webpages Items kan toevoegen. Die items kunnen uit meerdere elementen bestaan: textarea's plaatjes textboxen etc. Ik kan in XML definieren hoe die items er uit zien, qua structuur. In elke willekeurige texteditor, zonder de vormgeving aan te passen of dat ik er uberhaupt mee geconfronteerd word. -> je kunt dus daarvoor een editor bouwen die dus los van de vormgeving de datastructuur van wat je gaat weergeven kan AANPASSEN. dit is belangrijk voor website content management systemen: wil men een page erbij met andere items? -> maak ze aan en flop je kunt ze editen en toevoegen EN viewen.
Dit is nog maar een kleine toepassing. Iedereen die wel eens gewerkt heeft aan data-uitwisseling tussen een Systeem A en een systeem B zal weten dat dit veelal via ascii files gaat en custom made readers/writers, en vaak krakkemikkig. Met XML is dit een fluitje van een cent. Mede omdat er al veel XML tools / libraries op de markt zijn (veelal gratis) die de XML files voor je lezen in een DOM, compleet met functies voor die DOM, en schrijven. Het enige wat je dan nog moet doen is wat routines maken op de systemen zelf. Maar maak je bv gebruik van ADO op NT, dan is het omzetten van een recordset object naar een XML DOM tree 1 (EEN!) functiecall.
Life is goooooood