Introductie
- XML (DTD en Document)
- XML 'database' servers
- RDBMS systemen en XML
- XML waar en wanneer
- Bronnen en documentatie
- Vragen
Wat is een DTD
- Document Type Definition
- definitie volgens de regels van de 'Standard Generalized Markup Language' (SGML).
- Extern (remote) en server.
- Eigen DTD's
- Bestaande DTD's
- Validatie mogelijkheden
- Wereldwijde afspraken
Voorbeeld DTD
<!ELEMENT book (title, isbn, pages, language, publishername, publisherurl, writers)>
<!ELEMENT writers (writername+)>
<!ATTLIST book
title CDATA #REQUIRED
isbn ID #REQUIRED
pages CDATA #REQUIRED
language CDATA #REQUIRED
publishername CDATA #REQUIRED>
<!ATTLIST writers
writername CDATA #REQUIRED>
Remote DTD's
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"
"http://my.netscape.com/publish/ formats/rss-0.91.dtd">
Voorbeeld XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book SYSTEM
"http://phpreview.nl.linux.org/phpreview-book.dtd">
<book>
<language>US</language>
<publishername>O'Reilly</publishername>
<publisherurl>http://www.oreilly.com</publisherurl>
<isbn>0596000022</isbn>
<title>Understanding the Linux Kernel</title>
<writer>
<writername>Cesati, Marco</writername>
</writer>
<pages>632</pages>
</book>
Bestaande DTD's
- RSS / RDF (Netscape Channels)
- Linuxdoc
- Boeken
- Journalistiek
- E-Commerce
XML Database Servers
- Documenten opgeslagen op het filesystem
- Validatie via XML-Shema
- Object oriented. (meestal boomstructuur)
- Query mogelijkheden
- Resultaten worden vaak opgeslagen in cache
- Interfaces via DOM en/of SAX
- Bindings naar talen als Java, Python, C/C++
RDBMS en XML
- XML Shema gebaseerde tabellen (XMLTYPE)
- Stored procedures om de data te verwerken
- Oracle, DB2
Xpath
- Taal om te navigeren in XML documenten
- Selecteren van elementen binnen het document
- Selecteren van attributen in elementen
Xquery, XML-QL
- Query language voor het opzoeken van de inhoud van elementen.
- Simpele control structures (for $foo in doc....)
- WHERE Clausules
- Mogelijkheden om functies te defineren
XML, wanneer
- Heterogene netwerken
- Onbekende data aanvoer
- Gebruik maken van bestaande XML data
Voorbeeld situatie
- Applicatie met drivers voor PostgreSQL en MySQL
- Applicatie is uit te breiden met andere drivers
- Bevat informatie over boeken
- Titel, ISBN, uitgever, schrijvers, pagina's
- Ascii data van uitgevers.
- Importeren in de main database
- Distribueren over gebruikers van de applicatie
- Onafhankelijk van de gebruikte database driver
Omzetten van asci naar xml
- Data komt via ftp binnen
- Omzetten via een commandline applicatie van asci naar xml.
- Naamsgeving voor de bestanden (ISBN)
Importeren van data
- Applicatie is voorzien van een import module
- Inlezen
- Valideren
- Opslaan in rdbms
- Onafhankelijk van de gebruikte driver
- Data is herbruikbaar binnen andere applicatie
Technische verschillen
- Ongeindexeerde XML data is over het algemeen zo'n 20% groter (in omvang) dan geindexeerde data in een RDBMS
- Aanpassingen in het datamodel zijn lastiger door te voeren binnen native XML databases.
- Native XML databases consumeren over het algemeen meer geheugen en hebben meer werk om mutaties te realiseren dan een RDBMS
- Transacties zijn zeer moeilijk te realiseren binnen Native XML databases.
PhpChannel
- PhpChannel is een voorbeeld van een kleine parser/creator waarmee men xml bestanden (RSS channels) kan aanmaken en zichtbaar maken. Zie de volgende sheet.
Links
- XML databases
- Xpath, Xquery, XML-QL
- PHPReview