VA – SS 2018 - Teil 12/XMLwi.f4.htw-berlin.de/.../LV/WI-AVS-SS18/Folien/AVS-12/12-VA-XML-2.pdf ·...

16
2 VA – SS 2018 - Teil 12/XML Literatur [12-1] Eckstein, Robert; Casabianca, Michel: XML Kurz und gut. O'Reilly, 2. Auflage, 2003 [12-2] Nussbaumer, Alfred; Mistlbacher, August: XML Ge-Packt. mitp, 2002 [12-3] Musciano, Chuck; Kennedy, Bill: HTML & XHTML. O'Reilly, 4. Auflage, 2003 [12-4] https://en.wikipedia.org/wiki/SCXML [12-5] https://en.wikipedia.org/wiki/VoiceXML [12-6] https://de.wikipedia.org/wiki/GPS_Exchange_Format http://www.topografix.com/GPX/1/1/ [12-7] https://de.wikipedia.org/wiki/Extensible_Application_Markup_Language [12-8] https://de.wikipedia.org/wiki/GraphML [12-9] http://www.xml-cml.org/ [12-10] http://xml.coverpages.org/siteIndex.html#toc-applications

Transcript of VA – SS 2018 - Teil 12/XMLwi.f4.htw-berlin.de/.../LV/WI-AVS-SS18/Folien/AVS-12/12-VA-XML-2.pdf ·...

Page 1: VA – SS 2018 - Teil 12/XMLwi.f4.htw-berlin.de/.../LV/WI-AVS-SS18/Folien/AVS-12/12-VA-XML-2.pdf · • (2) gibt eine syntaktische Definition, hier eine DTD (Document Type Definition)

2VA – SS 2018 - Teil 12/XML

Literatur

[12-1] Eckstein, Robert; Casabianca, Michel: XML Kurz und gut. O'Reilly, 2. Auflage, 2003

[12-2] Nussbaumer, Alfred; Mistlbacher, August: XML Ge-Packt. mitp, 2002

[12-3] Musciano, Chuck; Kennedy, Bill: HTML & XHTML. O'Reilly, 4. Auflage, 2003

[12-4] https://en.wikipedia.org/wiki/SCXML

[12-5] https://en.wikipedia.org/wiki/VoiceXML

[12-6] https://de.wikipedia.org/wiki/GPS_Exchange_Format http://www.topografix.com/GPX/1/1/

[12-7] https://de.wikipedia.org/wiki/Extensible_Application_Markup_Language

[12-8] https://de.wikipedia.org/wiki/GraphML

[12-9] http://www.xml-cml.org/

[12-10] http://xml.coverpages.org/siteIndex.html#toc-applications

Page 2: VA – SS 2018 - Teil 12/XMLwi.f4.htw-berlin.de/.../LV/WI-AVS-SS18/Folien/AVS-12/12-VA-XML-2.pdf · • (2) gibt eine syntaktische Definition, hier eine DTD (Document Type Definition)

3VA – SS 2018 - Teil 12/XML

Geschichte

1969 Urahn ist GML (Generalized Markup Language)

1986 SGML (Standard Generalized Markup Language)

1998 Vereinfachte Version, davon wurde XML 1.0 (Extensible Markup Language) definiertMitte 1996 bis Februar 1998

1999 Namensräume, XSLT, XPath

2001 XML Schema, XLink, XSL

4VA – SS 2018 - Teil 12/XML

Einführendes Beispiel

<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE Nachricht SYSTEM "/XML/DTDs/Nachricht.dtd"><Nachricht pri="wichtig">

<an>Herbert</an><von>Helga</von><betrifft>Einkauf von H-Milch </betrifft><grafik Datei="Milchtuete.jpg"/><Inhalt>Bitte kaufe nur die abgebildete Milch;

also die Sorte <Name>Milchwunder</Name>aber<Betonung>bitte</Betonung>nur diese. Danke.

</Inhalt></Nachricht>

(1)

(2)

(3)

Page 3: VA – SS 2018 - Teil 12/XMLwi.f4.htw-berlin.de/.../LV/WI-AVS-SS18/Folien/AVS-12/12-VA-XML-2.pdf · • (2) gibt eine syntaktische Definition, hier eine DTD (Document Type Definition)

5VA – SS 2018 - Teil 12/XML

Erläuterungen

• (1) gibt an, welche Definition von XML benutzt wird; dieser Bereich wird mit <? bzw. ?> eingeschlossen

• (2) gibt eine syntaktische Definition, hier eine DTD (Document Type Definition) als Grammatik anDiese Angabe gehört zu den Deklarationen.

• (3) leitet das Dokumentelement (Wurzelelement) ein.

6VA – SS 2018 - Teil 12/XML

Anwendungsgebiete/Varianten I - Beispiele

• Extensible HyperText Markup Language (XHTML)

• Mathematical Markup Language (MathML)

• Resource Description Framework (RDF)

• Scalable Vector Graphics (SVG)

• Chemical Markup Language (CML)

• DocBook-XML (Satzsystem für Bücher)

• MRML (Multimedia Retrieval Markup Language)

• SportML (Austausch von Sportinformationen)

• GPX (GPS Exchange Format)

• KML (Keyhole Markup Language)

• OSM (OpenStreetMap)

• SAML (Security Assertions Markup Language)

• DSML (Directory Services Markup Language)

• MusicXML

Page 4: VA – SS 2018 - Teil 12/XMLwi.f4.htw-berlin.de/.../LV/WI-AVS-SS18/Folien/AVS-12/12-VA-XML-2.pdf · • (2) gibt eine syntaktische Definition, hier eine DTD (Document Type Definition)

7VA – SS 2018 - Teil 12/XML

Anwendungsgebiete/Varianten II - Beispiele

• XBRL (eXtensible Business Reporting Language)

• AgroXML (Landwirtschaft)

• SyncML (Kalenderdatenabgleich)

• MathML (mathematische Formeln)

• Office-Formate .docx oder .pptx

• Open Office Format odt (früher sxw und sdw)

• epub-Format

• Übertragung hoheitlicher Dokumente in der Bundesrepublik

• eID (elektronischer Identitätsnachweis)

• Formate von Informationen an die Bankenaufsicht:https://www.bundesbank.de/Redaktion/DE/Standardartikel/Service/Meldewesen/formate_xml.html

• ...

Weitere Beispiele: siehe Literaturliste

Die Varianten unterscheiden sich in der Semantik der Elemente.

8VA – SS 2018 - Teil 12/XML

Kritik an XML

• JSONhttps://de.wikipedia.org/wiki/JavaScript_Object_Notation

• YAML Ain’t Markup Languagehttps://de.wikipedia.org/wiki/YAML

XML is crap. Really. There are no excuses. XML is nasty to parse for humans,and it's a disaster to parse even for computers.

Linus Torvalds, 2014

Alternativen zu XML

Page 5: VA – SS 2018 - Teil 12/XMLwi.f4.htw-berlin.de/.../LV/WI-AVS-SS18/Folien/AVS-12/12-VA-XML-2.pdf · • (2) gibt eine syntaktische Definition, hier eine DTD (Document Type Definition)

9VA – SS 2018 - Teil 12/XML

Elemente I

Ein Element ist eine Konstruktion folgender Art:

<XYZ...> Inhalt </XYZ>

<XYZ ..... />

XYZ ist der Name des Elements (XYZ ist der Tag)

Die erste Form ist ein Container, die zweite

lediglich ein Element mit Attributen, ein leeres Element.

In allen Fällen muss explizit das Ende mit / angegeben werden.

10VA – SS 2018 - Teil 12/XML

Elemente II - Container

Syntax"<" Name [Attribut1 Attribut2...] ">"

.... Inhalt ...."</" Name ">"

Name Name des ElementsAttribut1... Angabe eines AttributwertesInhalt Irgendetwas, auch Elemente

Ein Element mit Inhalt, also eines mit einem extra schließendenTag wird deshalb Container genannt, weil zwischen beiden Tagsbeliebig tief geschachtelt andere Elemente vorhanden sein dürfen.

Page 6: VA – SS 2018 - Teil 12/XMLwi.f4.htw-berlin.de/.../LV/WI-AVS-SS18/Folien/AVS-12/12-VA-XML-2.pdf · • (2) gibt eine syntaktische Definition, hier eine DTD (Document Type Definition)

11VA – SS 2018 - Teil 12/XML

Elemente III - Attribute

• Attribute werden immer nach dem Schema

Syntax

Name "=" { "Wert" | 'Wert' }

Name Name des Attributs

Wert String in " oder ' eingeschlossen

angegeben.Alle Attributwerte sind entweder in " oder ' eingeschlossen.

Beispiel: <Nachricht pri="wichtig">

Konvention

Es ist üblich, dass bei Elementnamen (Tags) der 1. Buchstabegroß, während bei Attributnamen alles klein geschrieben wird.

12VA – SS 2018 - Teil 12/XML

Elemente IV - Leeres Element

Syntax"<" Name [Attribut1 Attribut2...] "/>"

Name Name des ElementsAttribut1... Angabe eines Attributwertes

Leer ist dieses Element deshalb, weil es keinen eigenen Inhaltin Form von Elementen oder Daten umschließt.

Das Slash am Ende ist wichtig!

Page 7: VA – SS 2018 - Teil 12/XMLwi.f4.htw-berlin.de/.../LV/WI-AVS-SS18/Folien/AVS-12/12-VA-XML-2.pdf · • (2) gibt eine syntaktische Definition, hier eine DTD (Document Type Definition)

13VA – SS 2018 - Teil 12/XML

Aufbau eines XML-Dokuments I

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

<!DOCTYPE Nachricht SYSTEM "/XML/DTDs/Nachricht.dtd" [

<!ENTITY Ich "Herbert">

]><Nachricht pri="wichtig">

<An>&Ich;</An><Von>Helga</Von><Betrifft>Einkauf von H-Milch </Betrifft><Grafik Datei="Milchtuete.jpg"/><Inhalt>.....</Inhalt>

</Nachricht>

Dokument-Prolog

Dokument-Element

14VA – SS 2018 - Teil 12/XML

Aufbau eines XML-Dokuments II

• Der Vergabe der Namen für die Elemente ist frei, muss aber bestimmten Regeln gehorchen.

• Namen müssen eindeutig sein.Da dafür die notwendigen Abstimmungen schwierig sind, werden Namensräume eingeführt.

• Jede XML-Datei hat genau ein Wurzelelement; alle anderen müssen von diesem eingeschlossen werden. Diese Schachtelung führt zu einer strengen Hierarchie der Elemente.

• Diese Hierarchie kann durch einen Baum dargestellt werden.

Page 8: VA – SS 2018 - Teil 12/XMLwi.f4.htw-berlin.de/.../LV/WI-AVS-SS18/Folien/AVS-12/12-VA-XML-2.pdf · • (2) gibt eine syntaktische Definition, hier eine DTD (Document Type Definition)

15VA – SS 2018 - Teil 12/XML

Dokument-Prolog

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

<!DOCTYPE Nachricht SYSTEM "/XML/DTDs/Nachricht.dtd" [

<!ENTITY Ich "Herbert">

]>

XML-Deklaration

Dokumententyp-Deklaration

Entity-Deklaration

16VA – SS 2018 - Teil 12/XML

XML-Deklaration I

Syntax"<?xml" Param1 Param2... "?>"

Diese Deklaration weist den XML-Prozessor an sich entsprechendden Definitionen bzw. Parametern Param1... zu verhalten.

1. versionAngabe der XML-Version, aktuell 1.0

2. encodingZeichensatz, Default ist UTF-8; für die Deutsche Sprache ist ISO-8859-1 besser

3. standalonemit den beiden möglichen Werten "yes" und "no" (Default)Bei "yes" enthält das Dokument selbst alle Deklarationen

Diese optionalen Parameter müssen in dieser Reihenfolge angegeben werden.

Page 9: VA – SS 2018 - Teil 12/XMLwi.f4.htw-berlin.de/.../LV/WI-AVS-SS18/Folien/AVS-12/12-VA-XML-2.pdf · • (2) gibt eine syntaktische Definition, hier eine DTD (Document Type Definition)

17VA – SS 2018 - Teil 12/XML

XML-Deklaration II

Gültige Beispiele

<?xml?><?xml version="1.0" ?><?xml version="1.0" encoding="US-ASCII" ?><?xml encoding='ISO-8859-1' standalone="yes" ?>

Die XML-Deklaration gehört zu der Gruppe der Verarbeitungs-anweisungen.

18VA – SS 2018 - Teil 12/XML

Zeichensätze I

Zeichensatz Erläuterung

UTF-8 Default, gut für ASCII, komprimierter Unicode

UTF-16 Default, falls das Dokument mit 0xFEFF beginnt

ISO-8859-1 Westeuropäische Sprachen einschließlich Deutsch

ISO-8859-2 Mitteleuropäische Sprachen einschließlich Deutsch

ISO-8859-15 wie ISO-8859-1, aber mit EUR-Zeichen

• Aber: Diese Zeichensätze müssen von den Werkzeugen unter-stützt werden, was nicht immer gegeben ist.

• Bei der Werkzeugen des Apache/PHP-Projekts wird immer UTF-8 benutzt.

Page 10: VA – SS 2018 - Teil 12/XMLwi.f4.htw-berlin.de/.../LV/WI-AVS-SS18/Folien/AVS-12/12-VA-XML-2.pdf · • (2) gibt eine syntaktische Definition, hier eine DTD (Document Type Definition)

19VA – SS 2018 - Teil 12/XML

Zeichensätze II

• Namen, die mit "XML" in allen Groß-/Kleinschreibungs-kombinationen beginnen, sind für Definitionen durch W3C reserviert, z. B. "XmL" oder "xmL".

• Zeichenreferenzen (Bezüge auf extern definierte Zeichen):

Referenz Erläuterung

&#123; Unicode-Nummer 123 dezimal

&#x1234; Unicode-Nummer 1234 hexadezimal

&#60; Zeichen für "<"

&#62; Zeichen für ">"

&#38; Zeichen für "&"

Die unteren drei Zeichen dürfen wie bei HTML nicht selbstim Text benutzt werden, sondern nur in dieser Umschreibung.

20VA – SS 2018 - Teil 12/XML

Zeichensätze III

• Entity = Platzhalter für ein Zeichenobjekt, das ein einzelnes Zeichen, eine Zeichenkette bis hin zu einer Datei sein kann

• Ein Entity wird mit "&Name;" aufgerufen.• Es gibt viele vordefinierte Entities, u.a.:

Entity Erklärung

&lt; Zeichen "<"

&gt; Zeichen ">"

&amp; Zeichen "&"

&apos; Zeichen "'"

&quot; Zeichen """

Die Kompatibilität zu HTML ist wohl erkennbar.

Page 11: VA – SS 2018 - Teil 12/XMLwi.f4.htw-berlin.de/.../LV/WI-AVS-SS18/Folien/AVS-12/12-VA-XML-2.pdf · • (2) gibt eine syntaktische Definition, hier eine DTD (Document Type Definition)

21VA – SS 2018 - Teil 12/XML

Dokumententyp-Definition I

Syntax"<!DOCTYPE" Element Referenz "["

Deklaration1Deklaration2...

"]>"

Element Name des DokumententypsReferenz Definition der GrammatikDeklaration... Deklaration von Entities und Elementen

Der Name des Dokumententyps ist auch gleichzeitig der Namedes Wurzelelements. Wenn beide Namen nicht übereinstimmen,liegt ein syntaktischer Fehler vor.

22VA – SS 2018 - Teil 12/XML

Dokumententyp-Definition II

• Diese Deklaration hat den Sinn, eine Grammatik für die folgenden XML-Elemente zu deklarieren, und eventuell auch innerhalb der folgenden [ ] zu definieren.

• Die zwischen [ und ] deklarierten Entities bilden die interne Menge, die durch die externe Menge (außerhalb des XML-Dokuments deklariert) ergänzt wird, wobei bei Konflikten eine Deklaration der internen Menge Vorrang gegenüber einer der externen hat.

• Die externe oder intern definierte Grammatik ist die Dokumententyp-Definition (DTD).

Page 12: VA – SS 2018 - Teil 12/XMLwi.f4.htw-berlin.de/.../LV/WI-AVS-SS18/Folien/AVS-12/12-VA-XML-2.pdf · • (2) gibt eine syntaktische Definition, hier eine DTD (Document Type Definition)

23VA – SS 2018 - Teil 12/XML

Referenz I

Referenz ::=SYSTEM "Systemadresse" |PUBLIC "Identifier" "Systemadresse"

Systemadresse Dateiname oder URLIdentifier Öffentliche definierte Bezeichnung

Die Definition der Dokumentenstruktur ist entweder in einer eigenenDatei oder unter einer bekannten, festen und öffentlichen Bezeichnungfestgelegt.

Beispiele:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN""http://www.w3.org/TR/HTML/html.dtd">

<!DOCTYPE Meins SYSTEM "/usr/local/meine.dtd">

24VA – SS 2018 - Teil 12/XML

Referenz II

• Im Falle von PUBLIC ist der folgende Name lediglich ein eindeutiger String - selbst die Systemadresse braucht nicht zu existieren (sollte aber).

• Alle URLs können sich per definitionem ändern, bei den URNs ist das nicht so.Der Oberbegriff von URL und URN ist URI.

• Daher sollte als Fallback immer neben der PUBLIC eine Systemadresse mit einer lokalen oder wirklich per URL zugreifbaren Datei benutzt werden.

• Die über die Systemadresse referenzierte Datei enthält eine DTD (Grammatik).

Page 13: VA – SS 2018 - Teil 12/XMLwi.f4.htw-berlin.de/.../LV/WI-AVS-SS18/Folien/AVS-12/12-VA-XML-2.pdf · • (2) gibt eine syntaktische Definition, hier eine DTD (Document Type Definition)

25VA – SS 2018 - Teil 12/XML

ENTITY I

Syntax"<!ENTITY" Name { Referenz | Wert }">"

Name Name des Entitys bzw. MakrosReferenz Verweis auf Objekt (System-ID oder Public-ID)Wert Beliebige Zeichenkette

Beispiel:<!ENTITY Einleitung SYSTEM "Buch/Einleitung.xml">

<Buch><title>Mein Buch</title>&Einleitung;</Buch>

Die Datei bzw. der Makrokörper wird direkt an diese Stelle in das Dokument kopiert, so dass die Syntax-Regeln beachtet sein müssen.

26VA – SS 2018 - Teil 12/XML

ENTITY II

• Wird die Referenz benutzt, z.B. Dateinamen mit SYSTEM, so wird dieses Entity extern genannt, weil der Inhalt außerhalb des Dokuments liegt.Diese Art von Entity entspricht dem #INCLUDE in C/C++.

• Bei der Verwendung dieser Entities entsteht ein Dokument in baumförmiger Struktur über mehrere Dateien.

• Alle anderen Entities sind intern.

Page 14: VA – SS 2018 - Teil 12/XMLwi.f4.htw-berlin.de/.../LV/WI-AVS-SS18/Folien/AVS-12/12-VA-XML-2.pdf · • (2) gibt eine syntaktische Definition, hier eine DTD (Document Type Definition)

27VA – SS 2018 - Teil 12/XML

Namensräume I

Syntax"<" Name [Attribut1 Attribut2...] ">"

.... Inhalt ...."<" /Name">"

Name hat nun den allgemeinen Aufbau:[Namensraum ":"] Lokaler-Name

Lokaler Name Name im ursprüngliche SinneDieser Name kann Element- oder Attributnamesein

Qualifizierter Name = Zusammensetzung von Namensraum undlokalen Namen

28VA – SS 2018 - Teil 12/XML

Namensräume II

Syntax"xmlns" [":" Name] "=" "URI"

Name Präfix des Namensraums (ns = name space)URI Name oder Verweis auf Namensraum

Beispiele:

(1) <math xmlns="http://www.w3.org/1998/Math/MathML">

(2) <Imp:Nachricht xmlns:Imp="http://www.wichtig.de">

(3) <Imp:Nachricht xmlns:Imp="http://www.wichtig.de" xmlns="http://www.nochwichtiger.de">

Page 15: VA – SS 2018 - Teil 12/XMLwi.f4.htw-berlin.de/.../LV/WI-AVS-SS18/Folien/AVS-12/12-VA-XML-2.pdf · • (2) gibt eine syntaktische Definition, hier eine DTD (Document Type Definition)

29VA – SS 2018 - Teil 12/XML

Namensräume III

• Wird bei der Deklaration ein Präfix angegeben (1), so müssen die Namen dieses Raumes mit diesem Präfix samt Doppelpunkt versehen werden.

• Wird bei der Deklaration kein Präfix angegeben (2), so brauchen die Namen nicht mit einem Präfix versehen zu werden, da damit der Default-Namensraum definiert wird.

• Der Default-Namensraum ist der, der ohne Prefix gilt.

• Im dritten Beispiel (3) wird beides kombiniert, so dass einige lokale Namen ohne Präfix oder mit benutzt werden (je nach Zugehörigkeit).

Die Deklaration eines Namensraums gilt immer nur für dasElement, in das die Deklaration steht - das schließt den gesamtenBereich dieses Elements ein - also auch den eigenen Elementnamen.Beispiel:

<Imp:Nachricht xmlns:Imp="http://www.wichtig.de">

30VA – SS 2018 - Teil 12/XML

Kommentare

• Kommentare sind wie üblich:

<!-- ...Text... -->

Sie können nicht geschachtelt werden und können überall dort stehen, wo Leerräume sein dürfen.

• Es wird empfohlen, die Elemente entsprechend der Tiefe der Schachtelung einzurücken.

Page 16: VA – SS 2018 - Teil 12/XMLwi.f4.htw-berlin.de/.../LV/WI-AVS-SS18/Folien/AVS-12/12-VA-XML-2.pdf · • (2) gibt eine syntaktische Definition, hier eine DTD (Document Type Definition)

31VA – SS 2018 - Teil 12/XML

Nach dieser Anstrengung etwas Entspannung....