Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

41
Documentverwerking <XML/> Deel 1 Dieter Fiems 27 maart 2009 1

Transcript of Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Page 1: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Documentverwerking

<XML/>

Deel 1

Dieter Fiems

27 maart 2009

1

Page 2: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

XML?

Extensible Markup Language (XML) is a simple, very flexible text format derived from SGML (ISO 8879). Originally designed to meet the challenges of large-scale electronic publishing, XML is also playing an increasingly important role in the exchange of a wide variety of data on the Web and elsewhere.

[www.w3.org]

2

Page 3: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

XML?

XML could not have happened without the World Wide Web. The Web has become a universal mechanism to deliver information to consumers and increasingly, to applications as well.

[Adler et Al., IBM Systems Journal 2006]

3

Page 4: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

XML?

Vandaag ontpopt XML zich stilaan als hét universele formaat voor het elektronisch uitwisselen van informatie.

[De Tijd, 2002]

4

Page 5: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

XML?

The original motivation for SGML, subsequently passed on to XML, was to ensure that the content or data residing in documents survived long after the application that processed it became obsolete or unusable; thus no processing or procedural information is embedded within the content; instead, content is encoded as clear text and available everywhere.

[Adler et Al., IBM Systems Journal 2006]

5

Page 6: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

XML?

Open Document Format (ODF) wordt de standaard voor kantoordocumenten bij de Belgische federale overheid. Andere formaten - en met name die van Microsoft Office - zullen in de toekomst niet meer gebruikt mogen worden voor de uitwisseling van documenten.

[De Standaard, 2006]

6

Page 7: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

XML?

[enterprise content management …] Een sleutelrol daarbij is weggelegd voor XML om data uit verschillende bronnen samen te kunnen voegen tot documenten in verschillende formaten, en die vervolgens naar de juiste bestemmeling (eventueel zelfs een website) te brengen.

[Datanews]

7

Page 8: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Vandaag

XML

SAX

DTD

8

Page 9: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Wat is XML?

• EXtensible Markup Language• Ontwikkeld door het World Wide Web Consortium

http://www.w3.org

• Introductie van structuur in tekstdocumenten door middel van “tags”

• Er is geen vaste set van “tags”

• Een schema (DTD, XML Schema, Relax NG, …) is een beschrijving van het type van een XML document. Een schema legt voorwaarden op aan de structuur en de inhoud van het document.

• Schema’s zijn uitbreidbaar.

9

Page 10: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Geschiedenis

GML (1969)Generalized Markup LanguageIntroductie van “generic coding” (scheiding van inhoud en stijl)

SGML (1986)Standard Generalized Markup LanguageISO standaardHet is een “zware” structuurbeschrijvingstaal met een beperkt succes.

HTML (1992)Een eenvoudige taal gebaseerd op SGML voor het opmaken van webpagina’sHTML bevat stijlcodes (in strijd met generic coding)

10

Page 11: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Geschiedenis

XML 1.0 (1998)

Het W3C vormt in 1996 een XML werkgroep met deze doelstellingen:

1. XML zal eenvoudig bruikbaar zijn over het internet.

2. XML zal een ruime keuze aan toepassingen ondersteunen.

3. XML zal compatibel zijn met SGML.

4. Het moet eenvoudig zijn programma’s te schrijven die XML documenten verwerken.

5. Het aantal optionele onderdelen in XML moeten tot een minimum beperkt worden, idealiter zijn er geen.

11

Page 12: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Geschiedenis

6. XML documenten moeten leesbaar zijn en voldoende duidelijk.

7. Het XML ontwerp dient snel voorbereid te worden.8. Het XML ontwerp zal formeel en bondig zijn.9. XML documenten kunnen eenvoudig aangemaakt

worden.10. Beknoptheid in XML opmaak is van minimaal belang. XML 1.1 (2004)XSL: XSLT 1.0 (1999), XPath 1.0 (1999), XSL-FO (2006)Namespaces in XML 1.0 en 1.1 (2006)XHTML (2000)XML Schema (2004)

12

Page 13: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

XML woordenschatten

MATHML – Wiskundige formules

SVG – Scalable Vector Graphics

RSS – Really Simple Syndication

CML – Chemical Markup Language

SportsML – uitwisseling van sportdata

UBL – Universele zakentaal

enz …

13

Page 14: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Een voorbeeld<?xml version=“1.0” encoding=“UTF-8”?><!DOCTYPE transactie SYSTEM “transactie.dtd”><!– Dit is een voorbeeld van een transactie --><transactie>

<koper><persoon>

<voornaam>John</voornaam><naam>Doe</naam>

</persoon></koper><stuk>

<prijs eenheid=“euro”>19.99</prijs><cd>

<titel>Sgt. Pepper’s Lonely Hearts Club Band</titel><artist>The Beatles</artist>

</cd></stuk>

</transactie>

root elementroot element

child elementchild element

attribuutattribuut waardewaarde

teksttekst

begintagbegintag

eindtageindtag

14

xml declaratiexml declaratiedocument

typedocument

type

commentaarcommentaar

Page 15: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Well-formed vs. Valid Documenten

Well-formed:-Het document voldoet aan de syntax regels van XML-Alle “parsed entities” waarnaar gerefereerd wordt binnen het document voldoen ook aan die regels

Valid: -Het document is well-formed-Er is een schema geassocieerd aan het document en het document beantwoord aan dat schema.

15

Page 16: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

xml declaratie

<?xml version=“1.0” encoding=“UTF-8”?>

Optioneel in XML 1.0 en verplicht in XML 1.1Bovenaan het documentGeeft aan welke XML versie gebruikt wordtGeeft aan welke karakter encodering gebruikt wordt

UTF-8UTF-16iso-8859-1

“Bijna” alle unicode karakters kunnen in een XML document gebruikt worden. Een aantal karakters hebben een bijzondere betekenis: “<“ en “&”.

16

Page 17: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Document type

OptioneelKan refereren naar externe Document Type Definition (DTD):

<!DOCTYPE RootElement SYSTEM “bestand.dtd”><!DOCTYPE RootElement

PUBLIC “-//OASIS//DTD DocBook XML//EN” “bestand.dtd”>Kan zelf DTD informatie bevatten:

<!DOCTYPE RootElement [...

]>Of beide:

<!DOCTYPE RootElement SYSTEM “bestand.dtd” [...

]>

17

Page 18: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Elementen <naam> … </naam>

Elementen structureren het document. Er is maar één top element (root element).

Tussen een starttag en een eindtag. Starttag kan attributen bevatten. Er zijn beperkingen op de karakters die gebruikt

mogen worden voor de tagnaam (onder meer een aantal leestekens). Er zijn extra voorwaarden voor het eerste teken van een tagnaam (onder meer geen cijfer, punt of koppelteken).

Tagnamen zijn case-sensitive.

18

Page 19: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Inhoud van een element

Element content

<persoon><naam>Doe</naam></persoon>

Parsed Character Data (PCDATA)

<naam>Doe</naam>

Mixed Content

<persoon>John <naam>Doe</naam></persoon>

No content

<naam/>

<naam></naam>

19

Page 20: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Attributen <naam attribuut=“…”/>

Namen van attributen voldoen aan zelfde vereisten als namen van elementen.

Een attribuut mag slechts één maal in een starttag voorkomen.

De waarde van het attribuut tussen enkelvoudige of dubbele aanhalingstekens.

De waarde mag geen < en & bevatten, wel “referenties” (zie verder).

20

Page 21: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Granulariteit en densiteit

Laag: enkel de hoogst nodige tagsLaag: enkel de hoogst nodige tags•Pro: eenvoudig en goedkoop aan te maken, automatische Pro: eenvoudig en goedkoop aan te maken, automatische omzetting van andere formaten mogelijkomzetting van andere formaten mogelijk•Contra: waarschijnlijk enkel bruikbaar voor één enkele toepassingContra: waarschijnlijk enkel bruikbaar voor één enkele toepassing

Bv.: Bv.: <naam>John Doe</naam><naam>John Doe</naam>

Hoog: alles wat een aparte betekenis heeft wordt Hoog: alles wat een aparte betekenis heeft wordt afzonderlijk gemerktafzonderlijk gemerkt•Contra: hoge initiële investering, manuele assistentie bij opstelling Contra: hoge initiële investering, manuele assistentie bij opstelling dikwijls nodigdikwijls nodig•Pro: verschillende aanwendingen van dezelfde gegevens mogelijkPro: verschillende aanwendingen van dezelfde gegevens mogelijk

Bv.: Bv.: <naam><voornaam>John</voornaam><naam><voornaam>John</voornaam> <achternaam>Doe</achternaam></naam> <achternaam>Doe</achternaam></naam>

21

Page 22: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

PCDATA en CDATA

PCDATA (Parsed Character Data)

Tekst

Kan “referenties” bevatten

Geen < en &.

CDATA (Character Data)

<![CDATA[ … ]]>

mag wel < en & bevatten (maar geen “]]>”)

wordt niet door de parser verwerkt

geen referenties

22

Page 23: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Referenties

Karakterreferentiesvoorgedefineerd:

&amp; &lt; &gt; &apos; &quot;adhv unicode nummer:

&#x00A9; &#0169; (= ©)

(Parsed) entiteitsreferentiesIn de DTD kunnen ook andere entiteiten gedefinieerd worden. Een entiteit kan een stuk XML code bevatten.

&entiteitsnaam;

23

Page 24: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Commentaar

• Begint met “<--” en eindigt met “-->>”. • “--” kan niet voorkomen in de commentaar tekst• kan niet eindigen met “--->>“• “<“ en “&” mogen wel voorkomen• Wordt door XML parsers niets steeds doorgegeven

aan de toepassing

24

Page 25: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Processing Instructies

<?PItarget instructie?>

De “instructie” wordt doorgegeven aan de toepassing “PItarget”.

PItarget mag dezelfde tekens als een elementnaam bevatten.

Pitarget mag het woord “xml” niet bevatten.

De instructie mag alle tekens bevatten.

De instructie mag het woord “?>” niet bevatten

25

Page 26: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

SAX

Simple API for XMLGenereert events bij het doorlopen van een XML bestandEvents bij:

XML elementen (begin en einde)tekst blokkenPI instructiesCommentaar…

Zelf te programmeren event handlers Doorloopt het bestand één maal

Jaxp: java API for XML processingBijvoorbeeld: xerxes (http://xerxes.apache.org/xerces2-j )

26

Page 27: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Jaxp (SAX)

try { // creeer het SAX parserobject SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser();

// creeer de event handler SAXDemo eventHandler = new SAXDemo(); // parse het bestand parser.parse(bestandsnaam, eventHandler);} catch (Exception e) { e.printStackTrace();}

27

Page 28: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Jaxp (SAX)

public class SAXDemo extends DefaultHandler {

public void startElement(String uri, String localName,String qName, Attributes atts) throws SAXException {

System.out.print("startElement(\"" + qName + "\", (");for (int i = 0; i < atts.getLength(); i++) {

System.out.print("(\"" + atts.getQName(i) + "\", \"" + atts.getValue(i) + "\")");if (i != atts.getLength() – 1) System.out.print(", ");

}System.out.println(“));");

}

28

uri namespaceuri namespace lijst van attributenlijst van attributen

volledige naamvolledige naam

lokale naamlokale naam

Page 29: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Jaxp (SAX)

public void endElement(String uri, String localName, String qName) throws SAXException {

System.out.println("endElement(\"" + qName + "\");"); } public void characters(char[] ch, int start, int length) throws SAXException {

System.out.println("characters(\"" + new String(ch, start, length) +"\");"); } public void beginDocument() throws SAXException {

System.out.println("endDocument();\n"); } public void endDocument() throws SAXException {

System.out.println("endDocument();\n"); }}

29

Page 30: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

DTD

DTD betekent “Document Type Definition”DTD betekent “Document Type Definition”

Het is een in “XML” geschreven beschrijving van de Het is een in “XML” geschreven beschrijving van de toegelaten structuur van een “type” documenten, bvb.toegelaten structuur van een “type” documenten, bvb.

Een reeks tijdschriftenEen reeks tijdschriften

Een reeks technische handleidingenEen reeks technische handleidingen

Een collectie referentieboekenEen collectie referentieboeken

Geeft de hiërarchie en de “granulariteit” (detailniveau) Geeft de hiërarchie en de “granulariteit” (detailniveau) van het document opvan het document op

Is niet verplicht, maar laat toe dat de structuur van een Is niet verplicht, maar laat toe dat de structuur van een specifiek document nauwkeurig gecontroleerd wordt, en specifiek document nauwkeurig gecontroleerd wordt, en behoort tot het “type”behoort tot het “type”

30

Page 31: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

DTD

• De DTD definieert de "structuurboom" van een De DTD definieert de "structuurboom" van een documenttype of documentklassedocumenttype of documentklasse

• Een document dat hoort bij een type of klasse kan Een document dat hoort bij een type of klasse kan ook voorgesteld worden als een boom; deze boom is ook voorgesteld worden als een boom; deze boom is verwant met de structuurboom van de document-verwant met de structuurboom van de document-klasse (DTD) waartoe het document hoort, maar is klasse (DTD) waartoe het document hoort, maar is niet identiekniet identiek

• De DTD boom bevat, in elk knooppunt, één De DTD boom bevat, in elk knooppunt, één elementdefinitieelementdefinitie

• De documentboom bevat, in elk knooppunt, een De documentboom bevat, in elk knooppunt, een vertakking voor elk effectief aanwezig element van vertakking voor elk effectief aanwezig element van het documenthet document

Page 32: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

DTD

DTD BoomDTD Boom

BoekBoek Hoofd+Hoofd+ Par+Par+

Samen?Samen?

AA betekent juist éénmaal Abetekent juist éénmaal AA?A? betekent geen of één Abetekent geen of één AA+A+ betekent één of meerdere A’sbetekent één of meerdere A’sA*A* betekent geen, één of meerdere A’sbetekent geen, één of meerdere A’s

Page 33: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

DTD

Document BoomDocument Boom

BoekBoek HoofdHoofd ParPar

SamenSamen

ParPar

ParPar

ParPar

ParPar

HoofdHoofd

HoofdHoofd

Page 34: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

<!ELEMENT>

Een element declaratie geeft aan hoe de verschillende elementen met elkaar verbonden zijn

Verschillende mogelijkheden

Geen child elementen, geen tekstEnkel child elementenEnkel tekstZowel tekst als child elementen

Geen beperkingen

34

Page 35: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

<!ELEMENT>

Element content

sequence groep

<!ELEMENT Elementnaam (A,B,C) >

choice groep

<!ELEMENT Elementnaam (A|B|C)>

<!ELEMENT Elementnaam (A,(B|C))>

haakjes zijn nodig als operatoren worden gemengd35

AA BB CC

AA

BB

CC

Page 36: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

<!ELEMENT>

Hoeveelheidcontrole (“Quantity Control” )Hoeveelheidcontrole (“Quantity Control” )

AA betekent juist éénmaal Abetekent juist éénmaal A

A?A? betekent geen of één Abetekent geen of één A

A+A+ betekent één of meerdere A’sbetekent één of meerdere A’s

A*A* betekent geen, één of meerdere A’sbetekent geen, één of meerdere A’s

36

Page 37: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

<!ELEMENT>

Enkel "deterministic content models" toegelaten

De parser moet op elk moment kunnen afleiden welke regel gevolgd wordt zonder vooruit te kijken

Voorbeelden van fouten

<!ELEMENT A ((B,C)|(B,D))>

<!ELEMENT A

((A,B,C)|(B,A,C)|(C,A,B)|(A,C,B)|(B,C,A)|(C,B,A))>

<!ELEMENT (A+,A)>

<!ELEMENT (A?,A)>

37

Page 38: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

<!ELEMENT>

Empty element

<!ELEMENT Elementnaam EMPTY>

Geen beperkingen

<!ELEMENT Elementnaam ANY>

Tekstelement

<!ELEMENT Elementnaam (#PCDATA) >

38

Page 39: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

<!ELEMENT>

Mixed content

<!ELEMENT Elementnaam (#PCDATA|A|B)* >

Opgelet:

#PCDATA moet eerst staan

Enkel in een repeteerbare choice groep

Geen duplicaten in de lijst van mogelijke child elementen

De volgorde van de elementen kan dus niet worden opgegeven

39

Page 40: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Referenties

Extensible Markup Language (XML) 1.0http://www.w3.org/TR/2008/REC-xml-20081126/

Extensible Markup Language (XML) 1.1http://www.w3.org/TR/2006/REC-xml11-20060816/

Simple API for java

http://www.saxproject.org/

40

Page 41: Documentverwerking Deel 1 Dieter Fiems 27 maart 2009 1.

Volgende week

DTD (vervolg)

XPath

XSLT

Opgave project

41