360 likes | 536 Views
Multimedia academiejaar 2006–2007 Practicum 4: XML - basisconcepten 30 maart 2007. Chris Poppe Multimedia Lab vakgroep Elektronica en Informatiesystemen faculteit Ingenieurswetenschappen Universiteit Gent. Overzicht. Praktische gegevens - afspraken
E N D
Multimediaacademiejaar 2006–2007Practicum 4: XML - basisconcepten30 maart 2007 Chris Poppe Multimedia Lab vakgroep Elektronica en Informatiesystemen faculteit Ingenieurswetenschappen Universiteit Gent
Overzicht • Praktische gegevens - afspraken • Inleiding practicum 4: XML - basisconcepten • Extensible Markup Language (XML) • XML-naamruimten • W3C XML Schema Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
Praktische gegevens - afspraken • Vragen en opmerkingen? • Sarah De Bruyne • sarah.debruyne@ugent.be • onderwerp beginnen met [mm]! • groepsnummer vermelden! • Website • http://berio.elis.ugent.be/mm/ Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
Practicum 4 • Oplossingen uploaden naar persoonlijke map • XML1-directory • Respecteer de deadline: donderdag 26 april 2007 (14u) Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
Overzicht XML-technologieën • XML • Extensible Markup Language • W3C XML Schema • XML-gebaseerde taal om de grammatica van XML-documenten vast te leggen (validatie) • XML Path Language (XPath) • taal om aan adressering en selectie te doen binnen een XML-document • Extensible Stylesheet Language (XSL) • XSL Transformations (XSLT) • omzetten van XML-documenten naar andere (XML-)documenten • XSL Formatting Objects (XSL-FO) • omzetten van XML-documenten naar presentatieformaten Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
Extensible Markup Language (XML) • Uitbreidbare opmaaktaal • opmaakcodes kunnen zelf gedefinieerd worden • eigen taal (XML-applicatie) • geen standaardopmaakcodes (HTML) • zelfbeschrijvend • goede keuze naam opmaakcode (XML-element) • voorbeeld: <voornaam>Cleopatra</voornaam> • aanbeveling W3C • Eenvoudige manier om structuur aan te brengen in tekstbestanden via opmaakcodes • internationaal uitwisselingsformaat • Bouwsteen technologiefamilie • W3C XML Schema, XPath, XSL, ... Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
Technologiefamilie XML XSLT Stylesheet W3C XML Schema XML validatie presentatie dataconversie inhoud/structuur wordt losgekoppeld van presentatie Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
XML – Schematisch Voorbeeld Proloog <? xml version="1.0" encoding= "UTF-8"?><!– commentaar en verwerkings- instructies --> Body (Kern) <boekenlijst> <boek categorie="thriller"> <titel>Het Bernini Mysterie</titel> <auteur>Dan Brown</auteur> </boek> </boekenlijst> Document Epiloog <!-- commentaar en verwerkings- instructies --> Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
<auteur></auteur> = <auteur /> XML – Voorbeeld <? xml version="1.0" encoding="UTF-8" ?> <!-- Dit is een boekenlijst. --> <boekenlijst> <boek categorie="thriller"> <titel>Het Bernini Mysterie</titel> <auteur>Dan Brown</auteur> </boek> <boek categorie="woordenboek"> <titel>Van Dale Frans-Nederlands</titel> <auteur /> </boek> </boekenlijst> Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
Well-formed XML • Goed gevormde XML-documenten (well-formed) • XML-document voldoet aan syntactische regels • vastgelegd in W3C-aanbeveling • Syntactische regels • elk element wordt afgesloten • elementen worden correct genest • opname opmaakcode binnen andere opmaakcode • hiërarchische boomstructuur met slechts één wortelknoop (geen broers of zussen!) • geen symbolen opnemen die niet toegelaten zijn • entiteitsreferenties: & stelt ‘&’-symbool voor • attributen zijn syntactisch correct Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
Well-formed XML – Syntaxfouten • Elke opmaakcode moet gesloten worden • <voorbeeldcode>…</voorbeeldcode> • <voorbeeldcode /> • Opmaakcodes in juiste volgorde afsluiten • <b><i>dit is een test</b></i>: niet-correct • <b><i>dit is een test</i></b>: correct • Attributen moeten omsloten zijn met “- of ‘-tekens • <boek categorie="roman">: correct • <boek categorie='roman'>: correct • <stad naam="sint-job-'t-goor">: correct • <stad naam='sint-job-'t-goor'>: niet-correct • <boek categorie ='roman">: niet-correct Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
Valid XML • Geldige XML-documenten (valid) • zijn per definitie goed gevormd • document voldoet aan een grammatica • XML-schema (XML) • Document Type Definition (geen XML) • alternatieve, oudere validatiemethode • kunnen automatisch gecontroleerd worden • Grammatica • eindig alfabet van symbolen (opmaakcodes) • verzameling regels die beschrijven hoe symbolen kunnen gecombineerd worden Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
Boomstructuur – Algemeen Document- wortel Proloog Kern Document- element Epiloog Elementen boom Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
Boomstructuur – Elementen <Boekenlijst> <Boek> <Boek> <Auteur> <Titel> <Auteur> <Titel> Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
root * element boekenlijst * element element boek boek * * element element attribuut titel auteur categorie * * * tekst tekst tekst “Het Bernini ...” “Dan Brown” “thriller” Boomstructuur – Gedetailleerd Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
XML-naamruimten • Probleem • vrijheid keuze elementnamen kan conflicten opleveren • onderstel een attribuut met naam “categorie” • semantische betekenis in de context van boeken is anders dan bij de bergen in de ronde van Frankrijk • XML-naamruimte • verzameling van uniek gedefinieerde opmaakcodes • analoog aan programmeertalen (C++, Java, C#, …) • maakt gebruik v/e URI (Uniform Resource Identifier) • opmaakcode wordt uitgebreid om uniciteit te garanderen • Aanduiding naamruimte via xmlns-attribuut • <wortel_element xmlns:pref=“URI” /> <pref:kind_element>…</pref:kind_element> </wortel_element> Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
XML-naamruimten – Voorbeeld <berio.elis.ugent.be:boek category=“thriller"> <berio.elis.ugent.be:auteur> Dan Brown </berio.elis.ugent.be:auteur> <berio.elis.ugent.be:titel> Het Bernini Mysterie </berio.elis.ugent.be:titel> </berio.elis.ugent.be:boek> <berio.elis.ugent.be:boek category="roman"> <berio.elis.ugent.be:auteur> J. R. R. Tolkien </berio.elis.ugent.be:auteur> <berio.elis.ugent.be:titel> In de Ban van de Ring </berio.elis.ugent.be:titel> </berio.elis.ugent.be:boek> Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
XML-naamruimten – Verkorte Notatie <bkl:boekenlijst xmlns:bkl="http://berio.elis.ugent.be/"> <bkl:boek category="thriller"> <bkl:auteur>Dan Brown</bkl:auteur> <bkl:titel>Het Bernini Mysterie</bkl:titel> </bkl:boek> <bkl:boek category="roman"> <bkl:auteur>J. R. R. Tolkien</bkl:auteur> <bkl:titel>In de Ban van de Ring</bkl:titel> </bkl:boek> </bkl:boekenlijst> Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
XML-naamruimten – Opmerkingen • Prefix niet noodzakelijk • standaardnaamruimte • definitie naamruimte zonder associatie met prefix • zolang er geen conflicten zijn <boekenlijst xmlns="http://berio.elis.ugent.be/"> <boek category="thriller"> <auteur>Dan Brown</auteur> <titel>Het Bernini Mysterie</titel> </boek> <boek category="roman"> <auteur>J. R. R. Tolkien</auteur> <titel>In de Ban van de Ring</titel> </boek> </boekenlijst> Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
W3C XML Schema • W3C XML Schema • aanbeveling W3C • manier om een grammatica te definiëren • nagaan of de inhoud van een XML-document voldoet aan een aantal regels • een XML-schema (i.e., een instantie van W3C XML Schema) is op zichzelf ook een XML-document • Automatische validatie • verwijzing naar XML-schema vanuit XML-document XML- schema (woordenschat + regels) W3C XML Schema XML (structuur) validatie validatie instantie instantie Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
W3C XML Schema – Voorbeeld <?xml version="1.0" encoding="UTF-8"?> <boekenlijst xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsd:noNamespaceSchemaLocation="boekenlijst.xsd"> <boek categorie="thriller"> <auteur>Dan Brown</auteur> <titel>Het Bernini Mysterie</titel> <aantalpag>460</aantalpag> </boek> <boek categorie="roman"> <auteur>J.R.R. Tolkien</auteur> <titel>In de Ban van de Ring</titel> </boek> </boekenlijst> Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
W3C XML Schema – Componenten • Het <schema>-element en bijbehorende naamruimtedefinities • Declaraties van elementen • Declaraties van attributen • Nieuwe typedefinities • definieert een component die kan gebruikt worden bij definitie van elementen, attributen of andere typedefinities binnen hetzelfde XML-schema Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
W3C XML Schema – Onderdelen • Definitie van een XML-schema • <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> …</xsd:schema> • Declaratie van een element • <xsd:element name="titel" type="xsd:string"/> • <xsd:element name="auteur" type="xsd:string"/> • Declaratie van een attribuut • <xsd:attribute name="categorie" type="xsd:string" /> Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
W3C XML Schema – Datatypes • Vastgelegde datatypes in xsd-naamruimte • xsd:string • xsd:integer • xsd:date • xsd:time • xsd:short • … • Kunnen gebruikt worden als basis voor andere datatypes (typedefinities) • enkelvoudige of atomaire typedefinitie: simpleType • samengestelde typedefinitie: complexType Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
W3C XML Schema – simpleType • SimpleType • wordt gebruikt om nieuwe datatypes aan te maken • kan geen elementen of attributen bevatten • Voorbeeld <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="roman"/> <xsd:enumeration value="thriller"/> <xsd:enumeration value="woordenboek"/> </xsd:restriction> </xsd:simpleType> Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
W3C XML Schema – complexType • ComplexType • wordt gebruikt om nieuwe structuren aan te maken • voorbeeld • sequentie van elementen in welbepaalde volgorde • via xsd:sequence • Voorbeeld <xsd:complexType> <xsd:sequence> <xsd:element name="titel" type="xsd:string"/> <xsd:element name="auteur" type="xsd:string"/> </xsd:sequence> </xsd:complexType> Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
W3C XML Schema – Elementen • Declaratie van elementen <xsd:element name="auteur"type="xsd:string"/> <xsd:element name="titel" type="xsd:string"/> <xsd:element name="aantalPag" type="xsd:integer"/> <xsd:element name="boek"> <xsd:complexType> <xsd:sequence> <xsd:element ref="auteur"/> <xsd:element ref="titel"/> <xsd:element ref="aantalPag" minOccurs="0"/> </xsd:sequence> </xsd:complexType> </xsd:element> Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
W3C XML Schema – Attributen • Declaratie van attributen <xsd:attribute name="categorie"use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="roman"/> <xsd:enumeration value="thriller"/> <xsd:enumeration value="woordenboek"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
W3C XML Schema - Uitgewerkt Voorbeeld (1/2) <?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="boekenlijst"> <xsd:complexType> <xsd:sequence> <xsd:element ref="boek" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="boek"> <xsd:complexType> <xsd:sequence> <xsd:element ref="titel"/> <xsd:element ref="auteur"/> <xsd:element ref="aantalpag" minOccurs="0"/> </xsd:sequence> <xsd:attribute ref="categorie" use="required"/> </xsd:complexType> </xsd:element> <!-- … --> </xsd:schema> Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
W3C XML Schema - Uitgewerkt Voorbeeld (2/2) <!-- … --> <xsd:element name="titel" type="xsd:string"/> <xsd:element name="auteur" type="xsd:string"/> <xsd:attribute name="categorie"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="roman"/> <xsd:enumeration value="reisgids"/> <xsd:enumeration value="thriller"/> <xsd:enumeration value="atlas"/> <xsd:enumeration value="woordenboek"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> <xsd:element name="aantalpag" type="xsd:integer"/> </xsd:schema> Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
W3C XML Schema Visualisatie Via XMLSpy (Of Via Oxygen) verplicht kind sequentie ouderelement optioneel kind optreden van boek Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007
Tools • Editeren XML • Xin Editor (onderdeel Athena, https://athena.ugent.be/) • XMLSpy (http://www.xmlspy.com) • XMLCooktop (http://www.xmlcooktop.com/) • Visual Studio .NET • Notepad • Valideren XML (ook goed gevormde XML) • Xin Editor, XMLSpy, XSV (zie website oefeningen) • Internet Explorer 5.x of hoger, Mozilla, … • http://apps.gotdotnet.com/xmltools/xsdvalidator/ • Controleer de broncode van uw practica op leesbaarheid en voeg desnoods commentaar toe • commentaar in XML • <!-- dit is commentaar --> Multimedia – Practicum 4: XML - basisconcepten Chris Poppe 30/03/2007