VA – SS 2018 - Teil 12/XMLwi.f4.htw-berlin.de/.../LV/WI-AVS-SS18/Folien/AVS-12/12-VA-XML-2.pdf ·...
Transcript of VA – SS 2018 - Teil 12/XMLwi.f4.htw-berlin.de/.../LV/WI-AVS-SS18/Folien/AVS-12/12-VA-XML-2.pdf ·...
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
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)
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
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
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.
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!
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.
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.
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.
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
{ Unicode-Nummer 123 dezimal
ሴ Unicode-Nummer 1234 hexadezimal
< Zeichen für "<"
> Zeichen für ">"
& 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
< Zeichen "<"
> Zeichen ">"
& Zeichen "&"
' Zeichen "'"
" Zeichen """
Die Kompatibilität zu HTML ist wohl erkennbar.
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).
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).
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.
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">
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.
31VA – SS 2018 - Teil 12/XML
Nach dieser Anstrengung etwas Entspannung....