Upload
annelien-kaiser
View
106
Download
1
Embed Size (px)
Citation preview
XML
eXtensible Markup Language Metasprache zur Definition von
Markupsprachen
Beschreibt die Struktur des Dokuments Beschreibt die Semantik der Elemente eines
Dokuments Auszeichnungen („Markups“) in Form von Tags
XML, HTML und SGML
60er Jahre: IBM Standards, Bemühungen um standardisierte Beschreibungssprache
1969: GML von IBM entwickelt 1986: SGML wird als ISO-Standard 8879 eingeführt
mächtige und komplexe Beschreibungssprache 1989: HTML von Tim Bernes-Lee entwickelt 90er Jahre: einfache und schnell erlernbare
Beschreibungssprache für Websites HTML 1994: HTML (2.0) als Standard von W3C festgelegt 1998: XML (1.0) von W3C eingeführt
vereinfachtes SGML (20% der Komplexität, 80% der Funktionalität)
Metasprachen
SGML
XML [Metasprachen]
[Markup Sprachen]
[Dokumente]
MathML, XHTML, HTML, ...
x
ƒ(x) = ∏ (2n+1) n=1
HTML vs XML Markup Language Beschreibt Layout
<h1> Video </h1><h2> The Great Escape </h2><table border=“1“>
<tr> <td>Director</td> <td>John Sturges</td></tr><tr> <td>Hauptdarsteller</td> <td>Steve McQueen</td></tr><tr> <td> ... </td> </tr>
</table>
Metasprache für Markup Language
Beschreibt Inhalt und Struktur
<video> <title> The Great Escape </title><cast> <director>John Sturges</director> <actor>Steve McQueen </actor></cast><text> A classic war movie from 1956 </text>
</video>
Motivation von XML
Erstellen eigener Dokumenttypen Keine beschränkte Anzahl von Tags Breites Spektrum von Anwendungsbereichen XML-verarbeitende Anwendungen können einfach
entwickelt werden Trennung von Layout und Inhalt
XML-Dokument: Fokus liegt in der Struktur des Dokuments und in der Semantik der Elemente
XML soll sich im Internet auf einfache Weise nutzen lassen
XML-Dokumente sollen auch für Menschen lesbar und verständlich sein
Überblick
XML Dokumentlogische und physische Strukturenthält Dekarationen, Elemente, Kommentare, ...
DTD (Document Type Definition)logische Struktur des DokumentsDefinition der Elemente, Attribute, ... eines XML-Dokuments
Style SheetsVisualisierung des XML-Dokuments, Formatieren von Markups CSS, DSSSL, XSL
XML – DokumentElemente
Elemente sind die „Bausteine“ des XML-Dokuments.
Syntax:
Starttag Elementinhalt Endtag
z.B.: <actor>Steve McQueen</actor>
Elemente mit gleichem Start- und Endtag gehören zu einem Elementtyp
Dokumente welche dieselben Elementtypen enthalten, gehören zum selben Dokumenttyp
Leere Elemente <actor></actor>
<actor/>
XML-DokumentVerschachtelung von Elementen
Ein Element kann andere Elemente enthalten:
<video> <title> The Great Escape </title>
<cast> <director> John Sturges </director> <actor>Steve McQueen </actor> <actor/> <!-- wer spielt den amerikanischen Offizier ???--> </cast> <text> A classic war movie from 1956 </text> <screenshot/>
</video>
XML-DokumentKommentare
Syntax:
<!-- irgendein Kommentar-->
Kommentare...
• können sich über mehrere Zeilen erstrecken
• können sich zwischen Start- und Endtags von Elementen befindenz.B.: <actor>Steve McQueen <!--richtiger Kommentar--> </actor>
• dürfen nicht innerhalb eines Tags stehenz.B.: <actor <!--völlig falsch--> > Steve McQueen </actor>
• dürfen keine „--“ enthalten
XML-DokumentAttribute
Attribute sind zusätzliche Informationen zu Elementen:
<actor geschlecht=m> Steve McQueen </actor><screenshot imgage="picture.jpg" heigth="12" width="150"/>
Attributname Attributwert
Besonderheiten bei Attributen:
• Die Reihenfolge der Attribute ist unbestimmt
• In einem Element darf ein Attributname nicht mehrmals vorkommen
• Ein Attributwert darf keinen Verweis auf ein externes Entity enthalten
• In einem Attributwert darf kein „<“ vorkommen
XML-DokumentStruktur des XML-Dokuments
Prolog
Enthält Informationen zur Verarbeitung des Dokuments:- Dekaration der XML Version- Dekaration DTD
Wurzelelement
Jedes XML-Dokument enthält genau ein Wurzelelement
Ein Wurzelelement kann beliebig viele Elemente enthalten
XML-DokumentEigenschaften
Wohlgeformtheit• XML-Dokument enthält ein oder mehrere Elemente
• Genau ein Element ist Wurzelelement
• Korrekte Verschachtelung der TagsKorrekte Verschachtelung: <b><c> xyz </c> abc </b>Falsche Verschachtelung: <b><c> xyz </b> abc </c>
• Jedes analysierte Entity ist wiederum wohlgeformt
• ....
Gültigkeit• XML-Dokument ist wohlgeformt
• XML-Dokument entspricht den Spezifikationen einer DTD
XML-DokumentBeispiel
<?xml version="1.0"?><!DOCTYPE buch SYSTEM „bibliothek.dtd">
<bibliothek> <buch genre="Fantasy" isbn="3-608-95855-X"> <titel>Der Herr der Ringe</titel> <autor geschlecht="m">J.R.R. Tolkien</autor> <inhalt>viel Text</inhalt> </buch>
<buch genre="Sachbuch" isbn="3-8273-1330-9"> <titel>XML in der Praxis</titel> <autor geschlecht="m">Behme, Mintert</autor> <inhalt>Inhalt</inhalt> </buch>
</bibliothek>
XML-DokumentBaumstruktur
geschlecht
text
m
bibliothek
buchbuch
autor inhalttitel
genre
text
fantasy
dokument
text text text
JRR Tolkien Herr der Ringe Viel Text
genre
text
sachbuch
Sichten auf XML
Dokumentensicht XML-Dokumente sind kommentierte Textdateien XMath, CML,...
Datensicht XML als Speicherformat Repräsentationsform für komplexe Datentypen XQL (XML Query Language)
Nachrichtensicht XML als Nachrichtenprotokoll XML-Dokument als flüchtige Nachricht, nicht als dauerhafte
Ressource SOAP
Überblick
XML Dokumentlogische und physische Strukturenthält Dekarationen, Elemente, Kommentare, ...
DTD (Document Type Definition)logische Struktur des DokumentsDefinition der Elemente, Attribute, ... eines XML-Dokuments
Style SheetsVisualisierung des XML-Dokuments, Formatieren von Markups CSS, DSSSL, XSL
welche Elementtypen es gibt welchen Inhalt sie haben dürfen welche Attribute erlaubt sind welche Werte sie annehmen dürfen
DTD
sie enthält die Informationen darüber
DTDDeklaration
Interne Deklaration<!DOCTYPE Name [
Definitionen
]>
Beispiel<?xml version=„1.0“ encoding=„ISO-8859-1“?>
<!DOCTYPE Buch[
<!ELEMENT Buch (Titel, Autor+)>
<!ELEMENT Titel (#PCDATA)>
<!ELEMENT Autor (#PCDATA)>
]>
DTDDeklaration
Externe Deklaration<!DOCTYPE Name SYSTEM “Pfadangabe“>
Beispiel:<?xml version=„1.0“ encoding=„ISO-8859-1“?>
<!DOCTYPE Buch SYSTEM “aufbau.dtd“>
<Buch> ... </Buch>
DTDDeklaration
intern und externe DTD-Untermenge<!DOCTYPE Name SYSTEM “Pfadangabe“[
interne Definitionen
]>
Beispiel<?xml version=„1.0“ encoding=„ISO-8859-1“?>
<!DOCTYPE Buch SYSTEM “aufbau.dtd“ [
<!ELEMENT Anhang (#PCDATA)>
]>
DTDElementdefinition
Elementinhalt<!ELEMENT Buch (Kapitel)>
Sequenz<!ELEMENT Kapitel (Einleitung, Inhalt)>
Alternative<!ELEMENT Inhalt (Text | Grafik)>
<!ELEMENT Elementname (Inhaltsmodell)>
Schlüsselwörter Leeres Element
<!ELEMENT Autor EMPTY>
Element mit beliebigem Inhalt<!ELEMENT Kommentar ANY>
DTDElementdefinition
#PCDATA-Element<!ELEMENT Text (#PCDATA)>
<?xml version=„1.0“ encoding=„ISO-8859-1“?>
<!DOCTYPE Buch[
<!ELEMENT Buch (Titel, Autor, (Kategorie | Preis)><!ELEMENT Titel (#PCDATA)><!ELEMENT Autor (#PCDATA)><!ELEMENT Kategorie (#PCDATA)><!ELEMENT Preis (#PCDATA)>
]>
DTDBeispiel zum Inhaltsmodell
<Buch> <Titel> Das große Buch XML</Titel> <Autor> Elke Niedermaier</Autor> <Kategorie>Sachbuch</Kategorie><7Buch>
<Buch> <Titel> Das große Buch XML</Titel> <Autor> Elke Niedermaier</Autor> <Preis>251</Preis><7Buch>
DTDElementdefinition
Optional (?)<!ELEMENT Anhang (Referenz?)>
Optional und mehrmals (*)<!ELEMENT Anhang (Referenz*)>
Einmal und öfter (+)<!ELEMENT Anhang (Kommentar,
Referenz+)
Kardinalitäten
Beispiel Kardinalitäten
<?xml version=„1.0“ encoding=„ISO-8859-1“?>
<!DOCTYPE Buch[
<!ELEMENT Buch (Titel, Autor+, Kategorie?)>
<!ELEMENT Titel (#PCDATA)>
<!ELEMENT Autor (#PCDATA)>
<!ELEMENT Kategorie (#PCDATA)>
]>
<Buch>
<Titel> Das große Buch XML</Titel>
<Autor> Elke Niedermaier</Autor>
<Autor> Michael Niedermair</Autor>
<Kategorie>Sachbuch</Kategorie>
</Buch>
Verpflichtendes Attribut: #REQUIRED Implizites Attribut: #IMPLIED Fixer Attributwert: #FIXED “wert“ Defaultwert setzen: “wert“
DTDAttributdefinition
<!ATTLIST Elementname
Attributname Typ Einschränkung
Attributname Typ Einschränkung...>
Einschränkungen:
Zeichenkettentyp (CDATA)<!ATTLIST Autor name CDATA
#REQUIRED>
Aufzählungstyp<!ATTLIST Farbe (weiss | blau | grün)
“weiss“>
Token-AttributeID, IDREF, NMTOKEN, NMTOKENS, ENTITY, ENTITIES, NOTATION
DTDAttributdefinition
DTDAttributdefinition - Beispiel
<!ELEMENT Artikel (Bezeichnung, Bild)> <!ELEMENT Bezeichnung (#PCDATA)><!ATTLIST id ID #REQUIRED><!ELEMENT Bild EMPTY><!ATTLIST scr CDATA #REQUIRED
höhe CDATA #IMPLIED breite CDATA #IMPLIED >
<?XML version=“1.0“ encoding=“ISO-8859-1“?><DOCTYPE Firma SYSTEM “artikel.dtd“><Artikel> <Bezeichnung id=5>CD-Rohling</Bezeichnung> <Bild scr=“rohling.jpg“></Bild><Artikel>
Interne allgemeine Entities Externe allgemeine Entities
Interne Parameter-Entities Externe Parameter-Entities
DTDEntities
Arten von Entities
Allgemeine Entities:fügen Daten in den Dokumenteninhalt ein
Parameter Entities:fügen Deklarationen in die DTD des Dokuments ein
DTDEntities
Unterscheidung
DTDEntities
Teile lassen sich extern abspeichern Übersichtlichere Gestaltung Verwendung der Teile in verschiedenen
Dokumenten
Vorteile von Entities
DTDEntities
Allgemeine Entities
Interne allgemeine Entities:
Verwendet man für Abkürzungen häufig verwendeter oder schwer einzubindender Texte.
Deklaration: <!ENTITY name “ersetzender Text“>
Aufruf im Text: &name;
DTDEntities
Allgemeine Entities
Externe allgemeine Entities:
Zum Einfügen von unabhängigen Teilen in das XML-Dokument.
Deklaration: <!ENTITY name SYSTEM “URI“>
Aufruf im Text: &name;
DTDEntities
Parameter-Entities
Interne Parameter-Entities:
Abkürzungen für häufig verwendete Definitionen.
Deklaration: <!ENTITY % name “ersetzender Text“>
Einfügen: %name;
DTDEntities
Parameter-Entities
Externe Parameter-Entities:
Geeignet um umfangreiche DTDs in Module zu zerlegen. Das erhöht die Lesbarkeit und Wartbarkeit.
Deklaration: <!ENTITY % name SYSTEM “URI“>
Einfügen: %name;
DTDEntities - Beispiel
<!ENTITY % Struktur “(Abteilungsleiter, Stellvertreter+, Mitarbeiter)“><!ELEMENT Firma (Buchhaltung, Lager*, Vertrieb?)> <!ELEMENT Buchhaltung %Struktur><!ELEMENT Lager %Struktur><!ELEMENT Vertrieb %Struktur><!ELEMENT Abteilungsleiter (#PCDATA)><!ELEMENT Stellvertreter (#PCDATA)><!ELEMENT Mitarbeiter (#PCDATA)>
<?XML version=“1.0“ encoding=“ISO-8859-1“?><DOCTYPE Firma SYSTEM “firma.dtd“><Firma> <Buchhaltung>
<Abteilungsleiter> Sven Regener </Abteilungsleiter><Stellvertreter> Martin Zehentner </Stellvertreter><Mitarbeiter> die Abteilung hat 5
Mitarbeiter</Mitarbeiter> </Buchhaltung><Firma>
Beispiel: DTD und DokumentDTD Dokument
<!ELEMENT bibliothek (buch)+>
<!ELEMENT buch (titel, autor, inhalt)><!ATTLIST buch genre (Sachbuch | Roman | Fantasy) "Sachbuch"
verlag CDATA #FIXED "meinVerlag"
isbn ID #REQUIRED neuauflageVon IDREF
"null">
<!ELEMENT titel (#PCDATA)>
<!ELEMENT autor (#PCDATA)><!ATTLIST autor geschlecht (m | w) #REQUIRED>
<!ELEMENT inhalt (#PCDATA)>
<?xml version="1.0"?><!DOCTYPE buch SYSTEM „bibliothek.dtd">
<bibliothek> <buch genre="Fantasy" isbn="3-608-95855-X"> <titel>Der Herr der Ringe</titel> <autor geschlecht="m">J.R.R. Tolkien</autor> <inhalt>viel Text</inhalt> </buch>
<buch genre="Sachbuch" isbn="3-8273-1330-9"> <titel>XML in der Praxis</titel> <autor geschlecht="m">Behme, Mintert</autor> <inhalt>Inhalt</inhalt> </buch>
</bibliothek>
Überblick
XML Dokumentlogische und physische Strukturenthält Dekarationen, Elemente, Kommentare, ...
DTD (Document Type Definition)logische Struktur des DokumentsDefinition der Elemente, Attribute, ... eines XML-Dokuments
Style SheetsVisualisierung des XML-Dokuments, Formatieren von Markups CSS, DSSSL, XSL
XML und Style-Sheets
Erklärung, CSS, DSSSL, XSLXML und XSL in der Praxis
Style-Sheet – Was?
Darstellungsbeschreibung eine Style für beliebig viele
Dokumente für ein Dokument beliebig viele
Styles Trennung von semantischer und
physischer Auszeichnung CSS, DSSSL, XSL
versch. Styles für 1 Dok.
XML-Dok
Style-Sheet
Style-Sheet
Style-Sheet
Style-Sheet
*.html
*.wml
*.rtf
einheitlicher Style
XML-Dok
XML-Dok
XML-Dok
XML-Dok
Style-Sheet
CSS, DSSSL und XSL
DSSSL XSL
CSS
CSS unter XML
Bei Einführung von XML Kompatibel mit XSL Eingeschränkte Möglichkeiten Kann verschachtelt werden CSS2 auf XML abgestimmt
CSS – Deklaration 1
CSS innerhalb einer HTML Datei
<html>
<head>
<title>Titel der Datei</title>
<style type="text/css">
<!-- /* ... Style-Sheet-Angaben ... */ //-->
</style>
</head>
<body></body>
</html>
CSS – Deklaration 2
CSS in einer separaten Datei
<html><head><title>Titel der Datei</title><link rel=stylesheet type="text/css" href="formate.css"></head><body></body>
</html>
Bsp. Schriftformatierung
<style type="text/css">h1,h2,h3 { font-familiy:Avantgarde,Arial }
</style>
<h1>Überschrift 1</h1><br><h2>Überschrift 2</h2><br><h3>Überschrift 3</h3><br>
Überschrift 1
Überschrift 2Überschrift 3
Formatierung von Links 1
a.menu { font-family: "Times New Roman“}
a.menu:link { color: #000000}
a.menu:visited { color: #FF3333}
a.menu:active { color: #3333FF}
a.menu:hover { color: #009999}
Formatierung von Links 2
Zuweisung eines Styles
<a href=„home.htm“ class=„menu“>home</a>
Ausgabe im Browser:
home Standard Link
home besuchter Linkhome aktiver Linkhome Mouse-over Link
DSSSL
Seit 1996 DSSSL ist eine echte
Programmiersprache Zu kompliziert XSL basiert auf einer Untermenge
des DSSSL Standards, aber geringere Komplexität
XSL soll in der bekannten XML-Syntax erstellt werden können. XSL soll eine Auszeichnungssprache sein, die alle wichtigen und
gebräuchlichen Formatierungsbefehle enthält. Die Anzahl der optionalen Features soll möglichst gering
gehalten werden. XSL Stylesheets sollen möglichst leicht verständlich und
»lesbar« sein. Die Umsetzung soll schnell und unkompliziert geschehen
können. XSL sollte sich über das Internet einfach nutzen lassen. XSL sollte einen »Ausweg« in eine Skript-Sprache bieten, für
komplexere Formatierungen und um Erweiterbarkeit und Vollständigkeit möglich zu machen.
XSL wird eine Untermenge von DSSSL mit der vorgeschlagenen Ergänzung sein.
Anforderungskatalog (W3C)
XML und XSL in der Praxis
Deklarationen, Datenstruktur in XML, Aufbau einer XSL-
Datei
Deklarationen in XML
Deklarieren einer XML-Datei<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
Deklarieren des Style-Sheets
<?xml-stylesheet href="style.xsl" type="text/xsl"?>
Entwerfen der Struktur
Umsetzen in XML
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet href="selfxml.xsl" type="text/xsl" ?> <Mitglieder> <Mitglied Id="1"> </Mitglied> <Mitglied Id="2"> </Mitglied> </Mitglieder>
Ausbau der Datei
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet href="selfxml.xsl" type="text/xsl" ?> <Mitglieder> <Mitglied Id="1"> <Vorname> Thomas </Vorname> <Nachname> Maier </Nachname> <Strasse> Hauptstrasse 12 </Strasse> <PLZ> 12345 </PLZ> <Stadt> Stuttgart </Stadt> </Mitglied> <Mitglied Id="2"> <Vorname> Michael </Vorname> <Nachname> Schneider </Nachname> <Strasse> Bahnhofsstrasse 21 </Strasse> <PLZ> 54321 </PLZ> <Stadt> Stuttgart </Stadt> </Mitglied> </Mitglieder>
Aufbau der XSL-Datei
Deklarationskopf<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
Root-Element der XSL-Datei<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/"> <HTML> <Head> <Title> Testseite </Title> </Head> <Body> <H1> Ein Test </H1> </Body> </HTML> </xsl:template></xsl:stylesheet>
Einbau von XML-Daten
Ausgabe eines Elements<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/"> <HTML> <Head> <Title> <xsl:value-of
select="Mitglieder/Verein"/> </Title> </Head> <Body> <H1> Ein Test </H1> </Body> </HTML> </xsl:template>
</xsl:stylesheet>
Verwendung von Schleifen
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <HTML> <Head> <Title> <xsl:value-of select="Mitglieder/Verein"/>
</Title> </Head> <Body> <H1> Ein Test </H1> <table border="1"> <xsl:for-each select="Mitglieder/Mitglied"> <tr> <td> <xsl:value-of select="Nachname"/> </td> <td> <xsl:value-of select="Vorname"/> </td> </tr> </xsl:for-each> </table> </Body> </HTML> </xsl:template>
</xsl:stylesheet>
Formatierungsmöglichkeiten
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <HTML> <Head> <Title> <xsl:value-of select="Mitglieder/Verein"/> </Title> </Head> <Body> <H1> Ein Test </H1> <table border="1"> <xsl:for-each select="Mitglieder/Mitglied" order-by="Nachname;Vorname"><tr> <td> <xsl:value-of select="Nachname"/> </td> <td> <xsl:value-of select="Vorname"/> </td> </tr> </xsl:for-each> </table> </Body> </HTML> </xsl:template>
</xsl:stylesheet>
XML -Ausblick
Was bringt die Zukunft?
Datenaustausch (Wetterdaten, Krankendaten, finanz. Transaktionen,...)
Darstellung von Formeln, Hierachien (Definitionen mit DTD)
Formatierung nur mehr mit Stylesheets