But if I bought a radio and found that it accessed only certain stations and not others, I'd be...

29
But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one for each set of stations. It makes no more sense to have a half dozen computers or different operating systems or browsers for Web access. Sir Timothy J. Berners-Lee (Begründer des WWW) XML Grundlagen

Transcript of But if I bought a radio and found that it accessed only certain stations and not others, I'd be...

Page 1: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one for each set of stations.It makes no more sense to have a half dozen computers or different operating systems or browsers for Web access.

Sir Timothy J. Berners-Lee (Begründer des WWW)

XML Grundlagen

Page 2: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

2

XMLXMLGrundlagen SGML

Entwicklung:

● 1967 generic coding

● 1968 “editorial structure tags”

● 1969 GML

● 1986 SGML als ISO-Standard 8879

Funktion:

● Formale Typisierung von Dokumenten (Buch: Kapitel, Abschnitte, Unterabschnitte, …)

● Charakterisiert Dokumenttyp anhand „Document Type Definitionen“ (DTD)

● Metasprache zum beschreiben von Markup Languages. (kann eigene Tags definieren und deren strukturelle Beziehung zueinander festlegen)

● Reibungsloser Ablauf erforderte hohen Initialaufwand (Programme, Schulungen)

Page 3: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

3

XMLXMLGrundlagen SGML

Beispiel:● Für das folgende Beispiel soll der Dokumenttyp "Notiz" dienen. Eine Notiz soll einen

Titel haben, aus mindestens einem Absatz bestehen und im Text sollen wichtige Stellen markierbar sein:

<!-- Element Min Inhalt --><!ELEMENT notiz - - (titel, absatz+) ><!ELEMENT titel - - (#PCDATA) ><!ELEMENT absatz - - (#PCDATA | wichtig)* ><!ELEMENT wichtig - - (#PCDATA) >

● Angenommen diese DTD ist als Datei /usr/home/sm/dtd/notiz.dtd abgespeichert. Eine Instanz des Dokumenttyps würde so aussehen:

<!DOCTYPE notiz SYSTEM "/usr/home/sm/dtd/notiz.dtd" []><notiz>

<titel>Termine</titel> <absatz>

Dienstag, 9 Uhr:<wichtig>Zahnarzttermin</wichtig>

</absatz> <absatz>

... </absatz>

</notiz>

Page 4: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

4

XMLXMLGrundlagen Was ist XML ?

Entwicklung:

● Am 10.02.1998 wurde XML 1.0 als Empfehlung des W3C veröffentlicht● Am 06.10.2000 folgte die 2.Edition von XML 1.0● Am 04.02.2004 folgte die 3.Edition von XML 1.0● AM 29.09.2006 folgte die 4.Edition von XML 1.0● http://www.w3.org/TR/REC-xml/#sec-origin-goals

Funktion:

● reduzierte Version von SGML● Standard zur Modellierung von Daten in Form einer Baumstruktur● Klartext verständlich für Mensch & Maschine● definiert Regeln für den Aufbau von Dokumenten● Standard zur Definition von beliebigen in ihrer Grundstruktur jedoch stark

verwandten Auszeichnungssprachen● Metasprache● Sieht ähnlich wie HTML aus, ist jedoch nicht als Nachfolger gedacht.

Page 5: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

5

XMLXMLGrundlagen Was ist XML ?

Aufbau:

● Ein XML-Dokument besteht aus einem Prolog und den eigentlichen XML-Daten.

Prolog:

<?xml version="1.0" encoding="UTF-8" standalone=“no" ?><?xml-stylesheet href="...\styles\muster.xsl" type="text/xsl" ?>

<!DOCTYPE xmldoc SYSTEM "dokumenttypdefinition.dtd">

XML-Daten:

<gruss>Hallo Welt!</gruss>

Page 6: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

6

XMLXMLGrundlagen Warum XML ?

● technisch völlig plattformunabhängig● Liefert Zusatzinformationen über Daten, die direkt weiterverarbeitet werden

können.● umfangreiche Formatierungen mit HTML nicht möglich● HTML erlaubt keine Definition eigener DTDs● SGML ist nicht gut geeignet um Dokumente über das Internet anzubieten.● Spezifikationsumfang von XML geringer als SGML, da Teilmenge.● Pareto Verteilung● XML enthält mehr Restriktionen (Entwicklung von Browsern leichter)● CSS und JavaScript/DOM sind 100% zu XML kompatible.● Kann verwendet werden, wenn keine Datenbank zur verfügung steht.

Page 7: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

7

XMLXMLGrundlagen Korrektheit

● XML hat 2 verschiedene Vorstellungen von "korrekt".

Wohlgeformtheit:● Dokument mit verständlichem Markup wird als wohlgeformtes Dokument

bezeichnet.

Gültigkeit:● Der Standard definiert ein XML-Dokument als gültig, wenn es wohlgeformt

ist, den Verweis auf eine DTD enthält und das durch die DTD beschriebene Format einhält.

● Wird ein XML-Dokument als nicht gültig erkannt, ist seine Verarbeitung gemäß W3C-Vorgabe abzubrechen.

Page 8: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

8

XMLXMLGrundlagen Korrektheit

Ein wohlgeformtes Dokument sollte u.a. folgende Bedingungen erfüllen:

● die XML-Version sollte deklariert sein● es gibt genau 1 Wurzelelement ● innerhalb des Wurzelelementes sind alle Elemente eindeutig ineinander

verschachtelt ● alle nicht-leeren Elemente sind mit Start-Tag und End-Tag markiert ● jeder Start-Tag beginnt mit < und schließt ab mit > und jeder End-Tag

beginnt mit </ und schließt ab mit > ● leere Elemente sind entweder mit Start- und End-Tag markiert oder

beginnen mit < und schließen ab mit /> ● Ein Kommentar wird begrenzt von <!-- und --> eingeschlossen● ein Attribut darf nicht zweimal im gleichen Tag vorkommen● verwendete Entitäten müssen vor ihrer Referenzierung deklariert worden

sein

Page 9: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

9

XMLXMLGrundlagen Korrektheit

Beispiel für ein wohlgeformtes XML-Dokument:

wohlgeformt.xml:

<?xml version="1.0" ?>

<vater>

<kind>

<!– Ich bin ein Kommentar -->

Ich bin wohlgeformt.

</kind>

<leererTag/>

<auchLeer></auchLeer>

</vater>

Page 10: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

10

XMLXMLGrundlagen

Die DTD ist das Regelwerk des XML-Dokuments und definiert Elemente, Entities und Attribute. In HTML gibt es eine fest vorgeschriebene HTML-DTD. Bei XML kann man sich diese DTD selber definieren (lassen).

Vorteile:

● Mehr Handlungsspielraum, da die Syntax auf die Bedürfnisse angepasst werden kann.

● Jeder Elementtyp kann in der gewünschten Häufigkeit angegeben werden.

● Ein XML-Editor kann einen Autor davon abhalten, die Gültigkeit eines XML-Dokuments zu zerstören.

● Eine DTD bildet die Grundlage für eine mögliche homogene, dezentrale Weiterverarbeitung der XML-Daten.

Dokument Type Definition

Page 11: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

11

XMLXMLGrundlagen

Beispiel

dokumenttypdefinition.dtd

<!ENTITY auml CDATA "&#228;"><!ENTITY Auml CDATA "&#196;"><!ENTITY ouml CDATA "&#246;"><!ENTITY Ouml CDATA "&#214;"><!ENTITY uuml CDATA "&#252;"><!ENTITY Uuml CDATA"&#220;"><!ENTITY szlig CDATA "&#223;">

<!ELEMENT persverz (person)+>

<!ELEMENT person (name, adresse+, geburtsdatum?, sonstiges*)>

<!ELEMENT name (vorname, nachname)><!ELEMENT vorname (#PCDATA)><!ELEMENT nachname (#PCDATA)><!ELEMENT adresse (#PCDATA)><!ELEMENT geburtsdatum (#PCDATA)><!ELEMENT sonstiges (#PCDATA)>

Dokument Type Definition

Page 12: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

12

XMLXMLGrundlagen

Beispiel für daraus resulierendes XML-Dokument

xmldoc.xml

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?><?xml:stylesheet type="text/xsl" href="layoutdatei.xsl"?>

<!DOCTYPE xmldoc SYSTEM "dokumenttypdefinition.dtd"><persverz>

<person><name>

<vorname>Hans</vorname><nachname>Wurst</nachname>

</name><adresse>Musterstr.1, 00700 Musterstadt</adresse><geburtsdatum>1.1.2000</geburtsdatum><sonstiges>verheiratet</sonstiges><sonstiges>2 Kinder</sonstiges>

</person></persverz>

Dokument Type Definition

Page 13: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

13

XMLXMLGrundlagen

In der Praxis kann es vorkommen, dass beim Konsolidieren zweier XML-Dokumente, Elementtypen mit gleicher Bezeichnung verwendet werden. Mögliche Folge wäre keine eindeutige Zuweisung des Elementtyps zu einer der vorhandenen DTDs.→ XSLT hätte Probleme die XML-Daten richtig aufzubereitenMan bedient sich in diesem Fall der Namensräume. Ein qualifizierender Name Qname besteht aus:

Präfix(Namensraum):lokaler Teil(Element oder Attribut)

<person xmlns:vater="http://homepage-vom-vater.de"xmlns:kind="http://www.homepage-vom-kind.de">

<vater:vorname>Hans</vater:vorname><kind:vorname>Hänschen</kind:vorname>

</person>

Die URI soll nur eine eindeutige Bezeichnung für den Namensraum sein. Es wird nicht auf die Datei zugegriffen.

Namensräume

Page 14: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

14

XMLXMLGrundlagen

Ein XML-Schema (auch XML-Schema-Definition kurz:XSD) bietet eine umfangreichere Alternative zur Strukturbeschreibung als eine DTD. Das Schema wird in XML verfasst.

XML-Schema

Page 15: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

15

XMLXMLGrundlagen

Die Vorteile der XSD bestehen vorrangig in der Komplexität und denmöglichen Einstellungen, die vorgenommen werden können.

1. Das XSD kann sich selber validieren und ist somit als Bestandteil des XML-Dokuments korrekt.

2. Das XSD wird in XML verfasst und es bedarf keiner neuen, XML-fremden Sprache.

3. In Schema lassen sich komplexe Datentypen definieren und sogar im Wertebereich eingrenzen.

XML-Schema

Page 16: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

16

XMLXMLGrundlagen

Elementdefinitionen:

Simple:

<xsd:element name=“geburtstag“ type=“xsd:date“/><xsd:element name=“homepage“ type=“xsd:anyURI“/>

Complex:

<xsd:complexType name=“Familie“><xsd:mitglieder>

<xsd:element name="Vater“ type="xsd:string"/> <xsd:element name="Mutter" type="xsd:string"/>

</xsd:mitglieder></xsd:complexType>

XML-Schema

Page 17: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

17

XMLXMLGrundlagen

Mit einem XLink lassen sich zwei Typen von Links erstellen:

simple: vergleichbar mit dem aus HTML bekannten Link auf Ressource oder Internetauftritt.

extended: bildet komplexes Linksystem, mit dem man mehrere Ressourcen/Internetseiten gleichzeitig ansprechen kann. Außerdem lassen sich Verhaltensmuster für Linkgruppen definieren.

XLink

Page 18: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

18

XMLXMLGrundlagen

Der XPointer macht es möglich neben Element(teilen) auch auf einzelne Punkte oder Bereiche zu referenzieren. Vorgabe dabei ist allerdings, dass die angesprochenen Dokumente XML-konform sind.

Es gibt 2 Zeigertypen.

#xpointer():sucht Element mit entsprechender ID oder Alternative#xpointer(id("zielid1")) xpointer(id("zielid2"))

#element():verfolgt den Strukturbaum bis zum gewünschten Element#element(1/2/3) oder #element(element1/2/3)

XPointer

Page 19: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

19

XMLXMLGrundlagen

Document Object Model

● DOM ist eine Programmierschnittstelle (API) für den Zugriff auf HTML- oder XML-Dokumente. Sie wird vom World Wide Web Consortium definiert

● erlaubt Computerprogrammen dynamisch den Inhalt, die Struktur und das Layout eines Dokuments zu verändern.

● Programmschnittstelle ist Plattform und Sprachneutral● geeignet für Script-Sprachen aber z.B. auch für HTML-Editoren

Verarbeitung eines Dokuments● Im ersten Schritt wird ein Dokument eingelesen und ein Dokument-Objekt

erzeugt. Anhand dieses Objekts kann mittels der Methoden des API auf die Inhalte, Struktur und Darstellung zugegriffen werden.

DOM erlaubt:● die Navigation zwischen den einzelnen Knoten eines Dokuments,● das Erzeugen, Verschieben und Löschen von Knoten sowie● das Auslesen, Ändern und Löschen von Textinhalten.● Am Ende der Verarbeitung kann aus dem Dokument-Objekt durch

Serialisierung ein neues XML- oder HTML-Dokument generiert werden.

Page 20: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

20

XMLXMLGrundlagen

Document Object Model

Beispiel:

Beispiel_xmldoc.xml

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>

<?xml:stylesheet type="text/xsl" href="layoutdatei.xsl"?>

<!DOCTYPE xmldoc SYSTEM "dokumenttypdefinition.dtd"><persverz>

<person><name>

<vorname>Hans</vorname><nachname>Wurst</nachname>

</name><adresse>Musterstr.1, 00700 Musterstadt</adresse><geburtsdatum>1.1.2000</geburtsdatum><sonstiges>verheiratet</sonstiges>

</person></persverz>

Page 21: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

21

XMLXMLGrundlagen

Document Object Model

DOM-Baum zu Beispiel_xmldoc.xml:

● Fast alle XML-Parser bieten inzwischen ein DOM-Modul an, mit dem sich ein DOM aus einer XML-Datei erstellen läßt.

● Der DOM-Baum, der vom Parser erstellt wird, muß immer vollständig im Hauptspeicher gehalten werden. (bedenke Performance)

Page 22: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

22

XMLXMLGrundlagen

Transformation von XML-Dokumenten

● XSL Transformations (XSLT) ist ein Sprachbestandteil der eXtensible Stylesheet Language XSL.

● XSLT bietet die Möglichkeit beliebige XML-Dokumente in andere Formate zu transformieren.

● Es ist es möglich die Daten in XML zu speichern, aber in einem anderen bzw. nützlicheren Format darzustellen oder kompakter zu gestalten als das Original. (ohne überflüssige Informationen)

● mögliche Ausgabeformate sind XML, HTML, XHTML, SVG, VRML und PDF

● Die Transformation geschieht mithilfe von XSL-Stylesheets

● Parsen durch Transformations-Engine (z.b. Saxon)

● Existiert zu einer Auszeichnung eine Regel im Stylesheet, ein sogenanntes Template, wird diese angewandt und der Ergebnis-Code wird erzeugt

Page 23: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

23

XMLXMLGrundlagen

Transformation von XML-Dokumenten

Beispiel: adressbuch.xml –-–-Saxon–-–-> adressbuch.html

Die Transformation eines Adressbuchs adressbuch.xml in eine HTML-Dateiadressbuch.html soll hier mit der XSLT-Engine Saxon beispielhaft gezeigt werden.

Die Quelldatei adressbuch.xml:

<?xml version="1.0"?><!DOCTYPE adressbuch SYSTEM "adressbuch.dtd"><Adressbuch>

<Person> <Vorname>Hans</Vorname> <Nachname>Wurst</Nachname> <Ort plz=„06701">Bockstadt</Ort> <Alter>50</Alter> </Person>

</Adressbuch>

Page 24: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

24

XMLXMLGrundlagen

Transformation von XML-Dokumenten

Das Transformations-Stylesheet adressbuch.xsl:

<?xml version="1.0"?><xsl:stylesheet version="1.0“ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/"><html>

<head><title> Transformiertes Adressbuch </title>

</head><body>

<xsl:apply-templates /></body>

</html></xsl:template>

Page 25: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

25

XMLXMLGrundlagen

Transformation von XML-Dokumenten

<xsl:template match="Vorname"> <td> <xsl:value-of select="." /> </td></xsl:template>

<xsl:template match="Nachname"> <td> <xsl:value-of select="." /> </td></xsl:template>

<xsl:template match="Alter"> <td> <xsl:value-of select="." /> </td></xsl:template>

<xsl:template match="Ort"> <td> <xsl:value-of select="." /> </td></xsl:template>

</xsl:stylesheet>

Page 26: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

26

XMLXMLGrundlagen

● Aufruf: saxon -o adressbuch.html adressbuch.xml adressbuch.xsl

● Quelldatei: adressbuch.xml

● Stylesheet: adressbuch.xsl

● Ergebnis: adressbuch.html

Transformation von XML-Dokumenten

Page 27: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

27

XMLXMLGrundlagen

Transformation von XML-Dokumenten

Ergebnis adressbuch.html:

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title> Transformiertes Adressbuch </title> </head> <body> <table border="2"> <tr> <td>Hans</td> <td>Wurst</td> <td>Bockstadt</td> <td>50</td> </tr> </table> </body></html>

● Das Ergebnis dieser Transformation ist also eine reine HTML-Datei, die über die Angaben im Stylesheet beliebig gestaltet werden darf

Page 28: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

28

XMLXMLGrundlagen

Transformation von XML-Dokumenten

Beispiel: XML - Gästebuch

http://cruncher.ba-mannheim.de/~s0511202/XML/easyboard/

easyboard.php (Die Index-Seite des Gästebuches)

easyboard_entries.xml (Enthällt die Einträge im XML-Format)

Page 29: But if I bought a radio and found that it accessed only certain stations and not others, I'd be upset. I suppose I could have a half dozen radios, one.

29

XMLXMLGrundlagen

Bücher:

●SGML für die Praxis – Ansatz und Einsatz von ISO 8879, Wolfgang Rieger, Springer-Verlag Berlin Heidelberg, 1995

●XML für Dummies, 3. überarbeitete Auflage, Lucinda Dykes , Ed Tittel; Wiley- Vch, 2006

●XML, Grundlagen der Sprache und Anwendungen in der Praxis; Dirk Ammelburger, Carl Hanser Verlag, 2004

Internet:

●http://www.come2xml.de/●http://www.edition-w3c.de/●http://www.fh-wedel.de/~si/seminare/ss04/Ausarbeitung/9.Kobligk●http://www.fh-wedel.de/~si/seminare/ws00/Termine/Themen.html●http://www.mintert.com/xml●http://www.rittershofer.de●http://www.stud.fernuni-hagen.de●http://www.wikipedia.de

Quellen