<cursus> <deel>DOM <deel>SAX <deel>XML en Databanken <deel>Webservices
DOM en SAX, XML Databanken, Web Services
p1
DOM en SAX • XML API
DOM - Document Object Model SAX - Simple API for XML
DOM en SAX, XML Databanken, Web Services
p2
1
DOM en SAX • De XML Parser • Leest en interpreteert XML documenten en geeft de data daarna door aan een applicatie • 2 soorten • Non validating parsers : controleren enkel of XML document wellformed is • Validating parsers : controleren naast well-formedness ook of document valid is (conform DTD of schema)
• Parser kan ook een stylesheet toepassen • De door de parser gegenereerde code wordt vervolgens door de applicatie aangesproken via een API : DOM of SAX
DOM en SAX, XML Databanken, Web Services
p3
DOM
DOM en SAX, XML Databanken, Web Services
p4
2
DOM • DOM • Definieert • Tree-gebaseerde API • Bouwt een boomvoorstelling van XML document in het geheugen • Biedt klassen en methodes aan om via code door de boom te navigeren en bewerkingen uit te voeren. • Platform en taal onafhankelijke API
• Adhv DOM • Toegang tot de inhoud van een document • Wijzigen van de inhoud van een document • Creatie van nieuwe documenten in het geheugen
• Gebruik • Manipulatie van boom • Random Access tot boom
• W3C DOM level 2 :http://www.w3.org/DOM/ DOM en SAX, XML Databanken, Web Services
p5
DOM • Tree based API DOM Tree Structure:
XML Document: John SmithDerek WarwickMik Douglas
competition
results
name
name
photos
name
img
img
John Smith D. Warwick M. Douglas
XML Document is boomstructuur, die bestaat uit nodes. Er zijn verschillende types van nodes : elementen, attributen, text inhoud,… DOM en SAX, XML Databanken, Web Services
p6
3
DOM • DOM en JavaScript/VBScript aan de client side met Microsoft ActiveX • Voor meer info zie http://www.w3schools.com/dom • De verschillende objecten van het DOM • Het document object : – Root element in de node tree – Properties » documentElement : retourneert root element » docType : retourneert DTD of schema voor document
– Methodes » » » » »
createAttribute(attributename) createComment(text) createElement(tagname) createTextNode(text) getElementByTagName(tagName) : retourneert nodelist van de nodes met die tagName (in document volgorde), samen met hun kindnodes
DOM en SAX, XML Databanken, Web Services
p7
DOM • Het node object – elke node in de boom – Properties » NodeName(), NodeValue(), NodeType(): naam tag, inhoud, type van de node. » childNodes() : nodelist met alle kind nodes van die node » firstChild(), LastChild() : eerste en laatste kind van node » NextSibling(), PreviousSibling(),... : volgende, vorige node op hetzelfde niveau » ParentNode() : parentnode » Attributes : retourneert een NameNodeMap met alle attributen » Xml : geeft element + kinderen terug
– Methodes » appendChild(newChild) : achteraan toevoegen van child » cloneNode(boolean): retourneert een exacte clone van node. Indien boolean = true, bevat clone ook alle kinderen van die node » hasChildNodes() : true als node kinderen heeft » insertBefore(newNode, refNode) : voegt een nieuwe node toe voor een bestaande node refNode » removeChild(nodeName) : verwijdert node » replaceChild(newNode, oldNode) : vervangt oldNode door newNode DOM en SAX, XML Databanken, Web Services
p8
4
DOM – Node Types nodeType 1 element 2 attribute 3 text 4 CDATASection 5 entity reference 6 entity 7 processing instruction 8 comment 9 document 10 document type 11 document fragment 12 notation
nodeName tagName name #text #cdatasection entity reference name entity name target #comment #document fragment doctype name #document fragment notation naam
nodeValue null value inhoud node inhoud node null null inhoud node text null null null null
• Het nodelist object : – Lijst van nodes – Properties » item(index) : een specifieke node (index start vanaf 0) » length : aantal nodes in lijst
DOM en SAX, XML Databanken, Web Services
p9
DOM • Het element object : – Element nodes in document – Properties » Tagname : retourneert of stelt naam van node in
– Methodes » GetAttribute(name) : retourneert waarde van opgegeven attribuut » SetAttribute(name, value) : stelt waarde in van attribuut » getElementByTagName(tagName) : retourneert nodelist van de kindnodes met die tagName (in document volgorde)
DOM en SAX, XML Databanken, Web Services
p 10
5
DOM • XML inlezen in HTML (dom1.html) XML document Een XML document in de parser
<script language="VBScript"> 'creatie van instantie van de parser set xmlDoc=CreateObject("Microsoft.XMLDOM") 'laden van xml document in geheugen xmlDoc.async="false" xmlDoc.load("boekenlijst.xml") 'tonen van de inhoud van het volledige document document.write (xmlDoc.xml) DOM en SAX, XML Databanken, Web Services
p 11
DOM • Parsing en laden document • Methode Load : creëert de boomstructuur en parst het document in memory • parseError object : foutenboodschap van Microsoft XML parser – – – – – –
errorCode : long integer errorcode reason : string met foutmelding line : long integer met lijnnummer die fout veroorzaakt linePos : long integer met positie op lijn srcText : string met de lijn die fout veroorzaakt heeft url : url van geladen document
... if xmlDoc.parseError.errorcode then document.write xmldoc.parseerror.errorcode & " : “ & xmlDoc.parseError.reason else document.write (xmlDoc.xml) end if ... DOM en SAX, XML Databanken, Web Services
p 12
6
DOM • Doorlopen van de boom alle nodes (dom2.html)
XML document <script language="VBScript"> sub outputNode(theNode) for each node in theNode.childNodes document.write("Node name is " & node.nodeName & ", ") document.write("Node type is " & node.nodeType & ", ") document.write("Node value is " & node.nodeValue & " ") if node.hasChildnodes then outputnode(node) next end sub Een XML document in de parser
<script language="VBScript"> set xmlDoc=CreateObject("Microsoft.XMLDOM") xmlDoc.async="false" xmlDoc.load("boekenlijst.xml") outputNode(xmlDoc.documentElement)
DOM en SAX, XML Databanken, Web Services
p 13
DOM • Resultaat : Doorlopen van alle nodes (dom2.html)
DOM en SAX, XML Databanken, Web Services
p 14
7
DOM • Gegevens selectief inlezen (dom3.html)
XML document <script language="JavaScript" for="window" event="onload"> var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") xmlDoc.async="false" xmlDoc.load("boekenlijst.xml") titel.innerText= xmlDoc.getElementsByTagName("titel").item(0).text auteur.innerText=xmlDoc.getElementsByTagName("auteur").item(0).text beschrijving.innerText=xmlDoc.getElementsByTagName("beschrijving").item(0).text Ophalen van de gegevens van 1 boek
DOM • Creatie van een XML document (dom4.html) XML <script language="VBScript"> set xmlDoc=CreateObject("Microsoft.XMLDOM") set oNode = xmlDoc.createElement("boekenlijst") set oText = xmlDoc.createTextNode("rootnode voor boekenlijst document") xmlDoc.appendChild(oNode) oNode.appendChild(oText) Document.write(xmlDoc.xml)
DOM en SAX, XML Databanken, Web Services
p 16
8
DOM • Transformaties adhv XSLT in de browser (dom5.html) <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" indent="yes"/> <xsl:template match="/">
DOM XML document <script language="VBScript"> Sub opNaam() set xmlDoc = CreateObject("Microsoft.XMLDOM") set xslDoc = CreateObject("Microsoft.XMLDOM") xmlDoc.async="false" xslDoc.async="false" xmlDoc.load("boekenlijst.xml") xslDoc.load("boekenlijstOpTitel.xsl") infoTabel.innerHTML = xmlDoc.transformNode(xslDoc) End Sub ‘idem voor OpUitgever
DOM en SAX, XML Databanken, Web Services
p 18
9
DOM • DOM en JAVA • Verschillende beschikbare implementaties: • Xerces-J • Java API for XML Processing (JAXP) • JDOM (wijkt af van de spec!) • Docuverse domsdk • ... • Simpel te gebruiken: XML parser genereert DOM boom = verzameling Java objecten die men kan doorlopen
DOM en SAX, XML Databanken, Web Services
p 19
DOM • DOM en VB.NET • Namespace : System.XML • XmlDocument : W3C DOM model • XmlTextReader en XmlTextWriter : snelle, non-cached, forward only toegang tot xml document (combinatie van DOM en SAX) • XmlValidatingReader : validatie van xml document met DTD, Schema • XmlDataDocument : idem XmlDocument maar uitgebreid om data via een Dataset te accepteren • XPathNavigator : cursor-based API voor navigatie door document • XslTransform : API voor transformatie document • ...
• In ASP.NET bestaat een voor het tonen van de XML data • Zie map voorbeeldenXML
DOM en SAX, XML Databanken, Web Services
p 20
10
DOM • Laden XML document Private Sub BtnLoadXML_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoadXML.Click Dim MyXMLDocument As System.Xml.XmlDocument If txtFile.Text <> "" Then MyXMLDocument = New System.Xml.XmlDocument() MyXMLDocument.Load(txtFile.Text) MessageBox.Show(MyXMLDocument.InnerXml) MessageBox.Show(MyXMLDocument.InnerText) End If End Sub
DOM en SAX, XML Databanken, Web Services
p 21
DOM • Xpath : selectie van 1 node Private Sub btnXpath_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnXpath.Click Dim MyXMLDocument As System.Xml.XmlDocument MyXMLDocument = New System.Xml.XmlDocument() MyXMLDocument.Load(txtFile.Text) Dim MyNode As System.Xml.XmlNode MyNode = MyXMLDocument.SelectSingleNode("/boekenlijst/boek/titel") MessageBox.Show(MyNode.OuterXml) MessageBox.Show(MyNode.InnerXml) End Sub • Idem voor lezen van attribuut – MyXpath = /boekenlijst/boek/@isbn – innerHTML : toont inhoud attribuut; outerHTML toont naam en inhoud attribuut DOM en SAX, XML Databanken, Web Services
p 22
11
DOM • Xpath : selectie van nodeList Private Sub btnNodeList_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNodeList.Click Dim MyXMLDocument As System.Xml.XmlDocument MyXMLDocument = New System.Xml.XmlDocument() MyXMLDocument.Load(txtFile.Text) Dim MyXpath As String MyXpath = "/boekenlijst/boek" Dim MyNodeList As System.Xml.XmlNodeList MyNodeList = MyXMLDocument.SelectNodes(MyXpath) MessageBox.Show(MyNodeList.Count) Dim x As Integer For x = 0 To MyNodeList.Count - 1 MessageBox.Show(MyNodeList.Item(x).InnerXml) Next End Sub DOM en SAX, XML Databanken, Web Services
p 23
DOM • Updaten van elementen (idem voor attribuut) Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click Dim MyXMLDocument As New System.Xml.XmlDocument MyXMLDocument.Load(txtFile.Text) Dim MyXpath As String = "/boekenlijst/boek[2]/titel" Dim MyNode, MyTextNode, MyNewNode, MyParentNode As System.Xml.XmlNode Dim MyNodeList As System.Xml.XmlNodeList MyNode = MyXMLDocument.SelectSingleNode(MyXpath) MyNode.InnerText = "XML in VB.NET“ MyNewNode = MyXMLDocument.CreateElement("auteur") MyTextNode = MyXMLDocument.CreateTextNode("Deitel") MyParentNode = MyNode.ParentNode MyParentNode.InsertAfter(MyNewNode, MyNode) MyNewNode.AppendChild(MyTextNode) MessageBox.Show(MyXMLDocument.InnerXml) MyXMLDocument.Save(txtFile.Text.Substring(0, txtFile.Text.Length - 4) & "1.xml") End Sub DOM en SAX, XML Databanken, Web Services
p 24
12
DOM • Dataset • Creatie van XML document en Schema van gegevens uit 1 of meerdere tabellen uit een relationele database • Beschikt ook over de methodes – – – – – –
WriteXml : wegschrijven van XML representatie dataset in tekstbestand WriteXmlSchema : idem voor schema ReadXml : laden van XML file in Dataset ReadXmlSchema : laden van bijhorend XML schema GetXML : string met XML representatie dataset GetXMLSchema : string met XML representatie schema dataset
DOM en SAX, XML Databanken, Web Services
p 25
DOM Private Sub btnDataset_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDataset.Click Dim oDsXml As New DataSet() oDsXml.ReadXml(txtFile.Text) MessageBox.Show(oDsXml.GetXml) Try Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _ Application.StartupPath & "\boekenlijst.mdb;" Dim oconn As New OleDbConnection(strConn) Dim oDA As New OleDbDataAdapter("select * from boeken", oconn) Dim oDS As New DataSet() oDA.MissingSchemaAction() = MissingSchemaAction.AddWithKey oDA.Fill(oDS, "boeken") MessageBox.Show("XML : " & vbCrlf & oDS.GetXml) MessageBox.Show("Schema : " & vbCrLf & oDS.GetXmlSchema) Catch ex As OleDbException MessageBox.Show(ex.Message) End Try End Sub DOM en SAX, XML Databanken, Web Services
p 26
13
SAX • SAX • Event-gebaseerd : leest document sequentieel en genereert events • Eigenschappen van het document worden als events aan de applicatie doorgegeven. • De applicatie kan het document verwerken aan de hand van overeenkomstige event handlers • Huidige standaard : SAX2 • Performanter dan DOM. • Ideaal voor grote documenten
• SAX home page: http://www.megginson.com/SAX/
DOM en SAX, XML Databanken, Web Services
p 27
SAX
DOM en SAX, XML Databanken, Web Services
p 28
14
SAX ¾Start document ¾Start element: competition ¾Start element : results
• Event based API
¾Start element : name ¾Text : John Smith ¾End element : naam
XML Document:
¾Start element : name
John SmithDerek WarwickMik Douglas
¾Text : Derek Warwick ¾End element : naam ¾Start element : name ¾Text : Mik Douglas ¾End element : naam ¾End element : results ¾Start element : photos ¾Start element : img ¾Attribute (src=“img1.gif”) ¾End element : img ¾Start element : img ¾Attribute (src=“img2.gif”) ¾End element : img ¾End element : photos ¾End element : competition
SAX • SAX2 en Java • 2 Java Packages – Org.xml.sax : bevat de belangrijkste interfaces – Org.xml.sax.helpers : extra functionaliteit.
=> Zie JavaDoc op http://www.saxproject.org/apidoc/overviewsummary.html
DOM en SAX, XML Databanken, Web Services
p 31
XML en Databanken •Type XML documenten http://www.infosupport.nl/tech nologie/XML1.asp
DOM en SAX, XML Databanken, Web Services
p 32
16
XML en Databanken • Opslag in relationele databanken • EXD : enabled XML db • Een documentgerichte benadering • Document wordt integraal opgeslaan als LOB (Large Object) in een tabel • Voordelen – Document blijft ongewijzigd (decompositie van document niet nodig)
• Nadelen – Beperkte zoekmogelijkheden – Onmogelijk document rechtstreeks te manipuleren. Moet via programmatuur
• Gebruik – Documenten met statische inhoud – Vb : brieven, ...
DOM en SAX, XML Databanken, Web Services
p 33
XML en Databanken • Een gegevensgerichte benadering • Gegevens in document worden verspreid opgeslaan in de verschillende relationele tabellen • Middleware zorgt voor de conversie van XML code naar relationele tabellen en omgekeerd • Voordelen – Elementen kan je manipuleren adhv SQL : updates, zoeken,...
• Nadelen – Document moet telkens opnieuw gedecomposeerd of samengesteld worden
• Gebruik – XML is transportformaat tussen applicaties – Documenten met vast omlijnde structuur, waarvan elements op laagste niveau enkel PCDATA of attributen (geen mixed content) bevatten – Vb : productcatalogi, facturen
DOM en SAX, XML Databanken, Web Services
p 34
17
XML en Databanken • XML en Access • Gebruikt tabel based mapping http://office.microsoft.com/assistance/preview.aspx?AssetID=HA01034 5601033&CTT=6&Origin=EC010553071033 <EMPLOYEES> Davolio123 Anywhere Avenue XML Object type XML declaration Document element Data element Data element Data value Attribute Data element Data element Data value
Example <EMPLOYEES> Davolio type="client" 123 Anywhere Avenue
Access Assignment None, ignored None. ignored Table Name Field in EMPLOYEES table Field value None, ignored Table Name Field in ADDRESS table Field value
DOM en SAX, XML Databanken, Web Services
p 35
XML en Databanken • XML en SQL SERVER 2000 • De XML technologie zit voornamelijk in ADO.NET • Je kan XML uit database extraheren : – Voeg FOR XML keywords toe aan SELECT statement SELECT * FROM WIJN FOR XML AUTO
DOM en SAX, XML Databanken, Web Services
p 36
18
XML en Databanken – Als elementen
SELECT * FROM wijn FOR XML AUTO, ELEMENTS
– En verder : for expliciet, for raw DOM en SAX, XML Databanken, Web Services
p 37
XML en Databanken • XML en Oracle 9i • Data kan opgeslaan worden gebruik makend van LOB of van de objectrelationele features • Is de meest XML aware relational db • Query talen – SQL/XML – XQuery
DOM en SAX, XML Databanken, Web Services
p 38
19
XML en Databanken • Voorbeeld van SQL/XML select xmlelement("emp", 'Employee ' , xmlelement( "name", e.efname || ' ' || e.ename), from scott.emp e;
<emp>John Smith <emp>Bob Martin
DOM en SAX, XML Databanken, Web Services
p 39
XML en Databanken • Voorbeeld van Xquery { for $boek in //boek
let $auteurs := $boek/auteur
return
Helmut Vanhaegen
Helmut Kraus
{
for $auteur in $auteurs
return
Hohann-Christian Hanke
{ $auteur/text() }
} }
DOM en SAX, XML Databanken, Web Services
p 40
20
XML en Databanken • Native XML Database (NXD) • Voorbeelden • • • •
Ipedo XML Database NeoCore XMS Software AG Taminio XML Server X-Hive
• De opslagstructuur sluit volledig aan op de hiërarchische structuur van een XML-document • Versnelde toegang tot documenten : indexen,... • Het Database Schema is hier niet gebaseerd op tabellen maar op een DTD • Data is toegankelijk voor andere applicaties zonder Middleware laag via Xpath, DOM en Xquery
DOM en SAX, XML Databanken, Web Services
p 41
XML en Databanken
DOM en SAX, XML Databanken, Web Services
p 42
21
XML en Databanken • Positionering van XML databases
DOM en SAX, XML Databanken, Web Services
p 43
Web Services • Webservices maken het applicaties mogelijk om met elkaar te communiceren via het internet, onafhankelijk van de taal waarin ze ontwikkeld zijn en het platform waarop ze draaien. • Webservices werken met standaard protocollen
Visie : application centric WWW
DOM en SAX, XML Databanken, Web Services
p 44
22
Web Services
The Web Services Stack UDDI
Service Discovery Service Publication
WSDL
Service Description
SOAP
XML Based Messaging
http, ftp, MQ,
Network
IIOP, etc. DOM en SAX, XML Databanken, Web Services
p 45
Web Services • SOAP (Simple Object Access Protocol) • Een manier voor een programma draaiend onder een bepaalde besturingssysteem om te communiceren met een programma onder hetzelfde of een ander besturingssysteem gebruikt makend van het http-protocol en XML als de mechanismen voor informatie uitwisseling. • Definieert een op XML gebaseerd berichtenformaat • W3C standaard : zie http://www.soap.org/ en http://www.w3.org/soap
DOM en SAX, XML Databanken, Web Services
p 46
23
Web Services SOAP Envelope
SOAP Header SOAP Body Function Name Parameter Parameter
Web encoding
HTTP
decoding
Service
DOM en SAX, XML Databanken, Web Services
p 47
Web Services
Order Book
POST /Store.asmx HTTP/1.1 ... <soap:Envelope xmlns:soap="..."> <soap:Body> 1234 <Payment>... <Shipping>...
Web Service
HTTP/1.1 200 OK ... <soap:Envelope xmlns:soap="..."> <soap:Body> abcd
Web Services • WSDL (Web Service Description Language) • Is een W3C specificatie. Zie http://www.w3.org/TR/wsdl • XML document die volgende beschrijft : • Hoe een webservice wordt gebruikt • De locatie van de webservice • De aard van de berichtenuitwisseling : definieert welke methoden de Web Service ondersteunt, en hoe de consumer deze dient te gebruiken
DOM en SAX, XML Databanken, Web Services
p 51
Web Services Naam
Beschrijving
type
Type beschrijving, bevat de definities van de data types die in het WSDL document worden gebruikt. Bijvoorbeeld de precieze naam, het type waarde en of een veld verplicht is of niet voor het SOAP bericht. Abstracte definitie van de data die in een bepaald bericht moeten komen. De gespecificeerde types uit Type worden hiervoor gebruikt, in dit gedeelte wordt gespecificeerd welke types er in een bepaald bericht (aanvraag, antwoord, error, etc.) mogen voorkomen Bewerking of abstracte beschrijving van een actie. Er worden dus een aantal berichten zoals gedefinieerd bij Message gegeven die naar dit eindpunt of deze eindpunten gestuurd kunnen worden, of anders gezegd: door deze eindpunten ondersteund worden.
message
operation
portType binding
service
Verzameling van operations s die door een of meerdere eindpunten worden ondersteund. Een concrete protocol en data formaat specificatie voor een bepaald Port Type . Hierin staat de scriptnaam van het aan te roepen script en de methode, bijvoorbeeld via een POST of GET request waarop dit script benaderd moet worden. Verzameling gerelateerde port s.
Web based register waar Web Service developers hun web services kunnen adverteren en opzoeken • • •
• •
White pages: bedrijfsnaam, adres en contact informatie Yellow pages: met classificaties van bedrijven, producten en diensten Green pages: met de webservices die een bedrijf aanbiedt
Web Services • Demo : aanspreken Google WebService • zie map VoorbeeldGoogleWebService
DOM en SAX, XML Databanken, Web Services
p 55
Web Services • Demo : Een eenvoudige webservice • Creatie webservice <%@ WebService Language="VB" Class="TestService"%> Imports System Imports System.Web.Services Public Class TestService: Inherits WebService <WebMethod()> Public Function TestFunction (vInput as Boolean) As String If (vInput = TRUE) Then TestFunction = "It is the truth..." Else TestFunction = "False!False!False" End if End Function <WebMethod()> Public Function add( a as integer, b as integer) as string add = cstr(a+b) End function End Class DOM en SAX, XML Databanken, Web Services
p 56
28
Web Services • Testen van de service • Open service in browser (vb. http://localhost/test/TestService.asmx)
DOM en SAX, XML Databanken, Web Services
p 57
Web Services • Het WSDL contract • Contract met de buitenwereld • Klik de hyperlink Service Description of rechtstreeks via URL http://localhost/test/TestService.asmx?WSDL
DOM en SAX, XML Databanken, Web Services
p 58
29
Web Services • Aanroepen service via SOAP • Kan ook via GET-POST (maar beperkter qua functionaliteit)
DOM en SAX, XML Databanken, Web Services
p 59
On the web • XML en databases • http://www.rpbourret.com/xml/XMLAndDatabases.htm • http://www.rpbourret.com/xml/XMLDatabaseProds.htm • http://www.infosupport.nl/technologie/XML1.asp
• Web services • http://www.onward.nl/telematica • Google’s webservice API : http://www.google.com/apis/ • Aanmaken van applicatie die gebruik maakt van google webservice : http://www.microsoft.com/netherlands/msdn/headline/nov02_google. asp
DOM en SAX, XML Databanken, Web Services
p 60
30
XML en Databanken • Middleware voor mapping XML data naar relationele tabellen • Template-driven mapping – Template bevat Select statements, door middleware herkend en uitgevoerd.
The following flights have available seats: <SelectStmt>SELECT Airline, FltNumber, Depart, Arrive FROM Flights
The following flights have available seats:
$Airline
$FltNumber
ACME
$Depart
123
$Arrive
2003-12-01 13:43
We hope one of these meets your needs
2003-12-01 17:00
... We hope one of these meets your needs. DOM en SAX, XML Databanken, Web Services
p 61
XML en Databanken • Model-driven mapping – 1 op 1 verband tussen onderdelen van document en de database structuur.