Einführung in XML - Teil 1 Kai Besser Dipl. Ing. Informatik Account Manager Software AG.

Post on 06-Apr-2016

215 views 0 download

transcript

Einführung in XML - Teil 1

Kai BesserDipl. Ing. InformatikAccount Manager Software AG

Voraussetzungen

Allgemeine Kenntnisse über:World Wide Web (WWW)Auszeichnungssprachen (z.B. HTML)Programmiersprachen (z.B. C, C++, Java)

Ziele von Teil 1

Verstehen von:XML und seinen Einsatzbereichen

Anwenden von:XML und DTDXML NamespacesXML Stylesheets (CSS, XSL)

Inhaltsverzeichnis

XML - Extensible Markup Language XML Namespaces DTD - Document Type Definitions XML Stylesheets - XSL Workshops wichtige Links Abkürzungsverzeichnis

XML - Extensible Markup Language

EinleitungMarkup Languages (Auszeichnungssprachen)Einstieg

GrundlagenStruktur und SyntaxRegeln der DTD

Begriffsklärung - Markup

Präsentations-Markup (physische Auszeichnung) WYSIWYG (Textverarbeitung, DTP, HTML) vom Menschen lesbar

Prozedurales Markup (logische Auszeichnung) Formatvorlagen, DTP, HTML (CSS), XML (PI) kann die Präsentation steuern

Deskriptives Markup (semantische Auszeichnung) XML und SGML kann díe Verarbeitung und Präsentation steuern von Menschen und Maschinen lesbar

Geschichte

GML Generalized Markup Language 1969: Entwicklung (IBM) Goldfarb, Mosher und Lorie 1974: validierender Parser

SGML Standard Generalized Markup Language 1978: Entwicklung 1986: Standard ISO 8879

Geschichte

HTML Hypertext Markup Language 1990: Tim Berners-Lee am CERN in Genf World Wide Web (URL, HTTP und HTML) fester Satz von Elementtypen inoffizielle Erweiterungen über Jahre nicht sehr streng definiert DTD für HTML erst Jahre später

Auszeichnungssprachen

HTML (*.html, *.htm) Rich Text Format (*.rtf) Microsoft Word (*.doc, *.dot) Adobe PostScript (*.ps, *.eps) Adobe Portable Document Format (*.pdf) LaTeX (*.tex), usw.

Was ist XML?

Empfehlung des World Wide Web Consortium (W3C) entwickelt zwischen Juli 1996 und Februar 1998 von Jon

Bosak, James Clark, Tim Bray, Jean Paoli und sieben weiteren Co-Editoren

besonders auffällig:XML wurde aus einem akuten Bedarf heraus entwickeltsehr grosses Interesse der Industrie, z.B. Microsoft, IBM,

Sun, Apache, SAP, Oracle, Adobe, Corel, Macromedia, Software AG, DataChannel, webMethods, eXcelon, ...

Was ist XML?

XML bildet eine Teilmenge (Subset) von SGML:XML = SGML - fortgeschrittene Merkmale + Weberweiterungen +

neuer Name und Vermarktung XML ist eine (schlanke) Metasprache:

Mit XML können Auszeichnungssprachen für beliebige Einsatzzwecke entwickelt werden.

XML ist für das Web konzipiert

XML bietet 80 Prozent der Merkmale und Funktionen von SGML, aber nur 20 Prozent von dessen Komplexität.

XML vs. HTML

XML Beschreibung und

Strukturierung von Informationen

strenge Syntax- und Strukturregeln

Trennung des Inhalts und der Struktur von der Präsentation

Teilmenge von SGML

HTML Anzeige von Informationen über Jahre nicht streng

spezifiziert keine strikte Trennung von

Inhalt und Präsentation eine Anwendung von SGML

XML vs. HTML

<?xml version="1.0"?><email> <an>Dich</an> <von>mir</von> <cc>Chef</cc> <betreff>XML</betreff> <text>Hier geht es um XML</text></email>

<html> <head> <title>HTML</title> </head> <body> <br> <b>AN: </b>Dich<br> <b>VON: </b>mir<br> <b>CC: </b>Chef<br> <b>Betreff: </b>HTML<br><br> Hier geht es um: <b>HTML</b>. </body></html>

XML im Einsatz

als offenes Format für Datenaustausch als strukturierte, semantisch reiche Webdaten

mehr Verarbeitung beim Clientsemantische Findmaschinen und Informationsagenten

für neue Webanwendungen (z.B. Small-Screen-Clients) zur Speisung unterschiedlichster Anwendungen mit

denselben Daten zur Datenspeicherung (Aufbewahrungspflicht)

XML im Einsatz

XML/EDIElektronischer Datenaustauschoffener, herstellerunabhängiger Standard leicht zu implementieren flächendeckend möglichZeit und Kosten werden gespartsteigert die Effizienz traditionelles EDI besitzt feste Transaktionssätze

XML im Einsatz

WebXHTML-Webseiten (XForms)Daten anzeigen im Web (mit Stylesheets)Personalisierte WebseitenWebportaleSuchmaschinen („Findmaschinen“) Informationsagenten Internet-Auktionen

Eigenschaften von XML

gliedert Dokumente in hierarchische Komponenten benennt diese Komponenten durch Regeln kann festgelegt werden, wie die Komponenten

zusammengehören stellt Regeln bereit für die Fehlerbehandlung ist leicht im Internet nutzbar ist für eine Vielzahl von Anwendungen einsetzbar XML-Dokumente sind SGML-Dokumente:

ähnliche Ausdrucksmöglichkeiten vorhandene SGML-Werkzeuge lesen und schreiben XML

Eigenschaften von XML

die Namen und Inhalte sind Unicode-Text (Internationalisierung) XML ist von Menschen und Maschinen lesbar keine optionalen Features in XML (im Gegensatz zu SGML) XML-Prozessoren sind klein, schnell, einfach zu schreiben (und zahlreich) XML-Dokumente sind einfach zu erstellen Die XML-Spezifikation ist formal und knapp gehalten

Struktur und Syntax von XML

Markup wird vom XML-Prozessor verarbeitet Start- und Ende-Tags, Leeres-Element-Tags, Entity- und

Zeichen-Referenzen, Kommentare, CDATA-Abschnittsbegrenzer, Dokumenttypdeklarationen und Verarbeitungsanweisungen

beginnt mit „<“ oder mit „&“ Zeichendaten

werden von menschlichen Lesern verstanden

Struktur und Syntax von XML

Gross-/Kleinschreibung wird berücksichtigt (Internationalisierung)

Namen: beginnen mit einem Buchstaben oder einem oder mehreren

Interpunktionszeichen und setzen sich fort mit Buchstaben, Ziffern, Gedankenstrichen, Unterstrichen, Doppelpunkten oder Punkten - den sog. Namenszeichen

Nmtoken (Namenstoken): ist eine beliebige Kombination aus Namenszeichen

Die Zeichenkette „xml“ ist reserviert (in allen Schreibweisen)

Struktur und Syntax von XML

Literal-Zeichenketten Daten (Text, der kein Markup darstellt) eingeschlossen in "" oder '‘

Leerraum: White Spaces alle unsichtbaren Zeichen Leerzeichen (ASCII 32) Tabulator (ASCII 9) Zeilenumbruch (Carriage Return ASCII 13) Zeilenvorschub (Line Feed ASCII 10)

Physische Struktur

geparste Entities:enthalten Text, der aus Zeichen zusammengesetzt istUnterscheidung in Auszeichnungen und Zeichendaten

ungeparste Entities:haben eine Notationverweisen auf binäre Daten (z.B. Bilddateien)

Logische Struktur

XML Deklaration (notwendig)<?xml version="1.0"?>

Dokumenttypdeklaration (optional)<!DOCTYPE name SYSTEM "name.dtd">

Dokument-Element (notwendig)<Buch></Buch>

Verschachtelungen/Unterelemente (optional)<Buch> <Titel> ... </Titel></Buch>

XML Syntax

Öffnende Element-Tags: <Buch> Schliessende Element-Tags: </Buch>

zwingend erforderlich Leeres Element:

Bsp.: <Fortsetzung/>(entspricht <Fortsetzung></Fortsetzung>)

Attribute: <Lager zone="Halle3">

Referenzierung

Entity-Referenzen:Entity-Deklaration in DTD:

<!ENTITY R1 "Regal Ebene 1">Entity-Referenzierung:

<Ort>Das Produkt steht auf dem &R1;</Ort>Sonderfall: Parameter-Entities

numerische Zeichenreferenzen:dezimal: &#...;hexadezimal: &#x...;

Vordefinierte Entity-Referenzen

&lt; öffnende spitze Klammer (<) &gt; schliessende spitze Klammer (>) &amp; Ampersand (&) &apos; Apostroph (') &quot; Anführungszeichen (")

Wie fügt man folgenden Text in ein XML Dokument ein:... „(5 > 0)“ ...

... &quot;(5 &gt; 0)&qout; ...

Kommentar und CDATA

Kommentar: Definition: <!-- KommentarText --> Beispiel: <!-- Dies ist ein Kommentar -->

CDATA-Abschnitt: explizit vom Parsing ausgeschlossen Definition: <!CDATA[ ... ]]> Beispiel: <!CDATA[ <html>Hier kommt Kurt!</html> ]]>

Processing Instructions

liefern Anweisungen für die Anwendung, die das Dokument verarbeitet

Definition: <?piName piAnweisung?>

Beispiel: <?xml version="1.0"?> <?avi codec="video1" colors="256"?>

Gültiges und Wohlgeformtes XML

wohlgeformt:stimmt mit den Regeln der XML-Spezifikation übereineindeutiges Wurzelelementalle Tags werden wieder geschlossen oder sind leerkeine Überlappung von Tags (strenge Hierarchie)alle Entity-Referenzen ausser den Vordefinierten sind

deklariertLiterale stehen in einfachen oder doppelten

Anführungszeichen

Gültiges und Wohlgeformtes XML

gültig: ist wohlgeformtdie im Prolog spezifizierte interne oder externe DTD

bestimmt die Regeln für das Dokumentalle diese Regeln sind zwingend zu beachten

Zusammenfassung

Welche unterschiedlichen Arten von Markup gibt es? Abgrenzung HTML vs. XML? Eigenschaften von XML? Wer kontrolliert den XML Standard? Einsatzgebiete für XML? Struktur und Syntax von XML? Logischer Aufbau eines XML Dokuments?

Zusammenfassung

Was sind Processing Instructions (PI‘s)? Wozu verwendet man CDATA Abschnitte? Unterschied zwischen ‚wohlgeformt‘ und

‚gültigem‘ XML?

Beispiele

DTD XML Instanz XSL Document XML Schema Parser XML Editor Anwendung Datenbank

Namensräume

notwendig, um eindeutige Namen zu erhalten wird durch einen URI (Uniform Resource Identifier)

identifiziert ein qualifizierter Name im Dokument besteht aus dem

Namen des Namespace und dem lokalen Namen, getrennt durch einen Doppelpunkt

<test:preisliste xmlns:test="http://namespaces.test.com/preisliste" ...>

<test:preis waehrung="DM">100</test:preis>...

</test:preisliste>

Namensraum-Bereiche

Deklaration bei einem Element als Attribute aus dem Namensraum xmlns

Verwendung bei einem Element oder Attribut<el:produkt typ="software“ class:art="enduser" xmlns:el="http://ns.test.com/el/ns" xmlns:class="http://ns.test.com/el/ns"> <pname>TestIt</pname> <ppreis>100</ppreis></el:produkt>

Namensraum Default

Standard-Namensraum deklarieren ohne Präfix:<?xml version="1.0"?><!-- elements are in the HTML namespace, in this case by default --><html xmlns='http://www.w3.org/TR/REC-html40'>

<head><title>Frobnostication</title>

</head><body>

<p>Moved to <a href='http://frob.com'>here</a>.</p></body>

</html>

DTD

Document type definition - Dokumenttypdefinition Definition für eine Klasse von Dokumenten intern:

<!DOCTYPE email [ ... ]>

extern: <!DOCTYPE email SYSTEM "email.dtd">

Einfache DTD

<?xml version="1.0"?><!DOCTYPE email [

<!ELEMENT email (an, von, cc, betreff, text)><!ELEMENT an (#PCDATA)><!ELEMENT von (#PCDATA)><!ELEMENT cc (#PCDATA)><!ELEMENT betreff (#PCDATA)><!ELEMENT text (#PCDATA)>

]>...

Elemente

Any: Dieser Elementtyp darf jeden beliebigen Inhalt in jeder beliebigen

Reihenfolge enthalten <!ELEMENT test ANY>

Empty: Dieser Elementtyp darf keinen Inhalt enthalten Kann Attribute enthalten <!ELEMENT test EMPTY>

Gemischter Inhalt (Mixed Content): <!ELEMENT test (((#PCDATA)|x|y|z)*)

Strukturen

Klammern (Inhalt1, Inhalt2) Gruppierung Komma (Inhalt1,Inhalt2) Sequenz Senkrechter Strich (Inhalt1|Inhalt2) Alternative ohne Inhalt1 muss 1 mal Fragezeichen Inhalt1? 0 oder 1 Stern Inhalt1* 0 bis n Plus Inhalt1+ 1 bis n

Was bed. diese Definition: <!ELEMENT email (an+, von, cc*, betreff?, text?)>

Attribute

Deklaration: <!ATTLIST ElementName AttributName Typ Vorgabe>

Beispiel: <!ATTLIST email sprache (Western|Greek|Latin) "Latin">

Attributtypen

CDATA es können nur Zeichendaten verwendet werden ENTITY externe, binäre Entity, die in der DTD deklariert ist ENTITIES wie ENTITY aber mehrere, durch Leerzeichen getrennt ID eindeutiger Identifier IDREF Verweis auf eine anderswo im Dokument deklarierte ID IDREFS wie IDREF aber mehrere, durch Leerzeichen getrennt NMTOKEN beliebige Zusammenstellung von Namenszeichen NMTOKENS wie NMTOKEN aber mehrere, durch Leerzeichen getrennt NOTATION muss auf eine NOTATION verweisen, die anderswo in der DTD

deklariert ist Aufzählung der Attributwert muss mit einem der genannten Werte

übereinstimmen (Inhalt1|Inhalt2)

Attributtypen

#REQUIRED muss spezifiziert werden #IMPLIED optional #FIXED "Wert" das Attribut muss den angegebenen Wert haben Vorgabewert Vorbelegung des Attributwerts

Notations

teilt dem Prozessor mit, welcher Objekttyp referenziert wird Deklaration:

<!NOTATION NotationsName SYSTEM "..."> Beispiel:

<!NOTATION GIF SYSTEM "Iexplore.exe">

Entities

interne Entities externe Entities geparste Entities:

Textentities werden wie XML-Text behandelt ungeparste Entities:

Binärentitys werden als nicht geparste Einheiten betrachtet Parameter-Entities

Interne Entities

Definition: <!ENTITY EntityName EntityDefinition>

Referenzierung: &EntityName;

Beispiel: <!ENTITY sign “Prof. Dr. Gerhard Entities">

&sign; zu beachten:

werden in der DTD definiert enthalten den Inhalt, der im Dokument verwendet wird

Externe Entities

Definition: <!ENTITY EntityName SYSTEM|PUBLIC "URI" NOTATION>

SYSTEM: Wenn lokal (auf einem Rechner in einer Organisation) verwendet

Beispiel: <!ENTITY Bild SYSTEM "http://www..../bild1.gif" NDATA GIF> <!ENTITY Bild SYSTEM "bild1.gif" NDATA GIF>

Externe Entities

PUBLIC: öffentlich bekannt oder Standardbibliothek

Beispiel: <!ENTITY Bild PUBLIC

"-//XMLCo//Text Standard images//EN""http://www.XMLCo.com/Images/Xmlquot.gif" NDATA GIF>

Hinweis: Externe Entitys können auch andere XML-Dateien referenzieren,

z.B. wenn ein Buch aus mehreren Kapiteln aufgebaut wird:<!ENTITY Kapitel1 SYSTEM "Kapitel1.xml">

Parameter Entities

Definition: <!ENTITY % EntityName "Wert">

Referenzierung: %EntityName;

zu beachten: sind auf DTD beschränkt

IGNORE und INCLUDE

dienen zum Aktivieren und Deaktivieren von Abschnitten der DTD

Definition: <![IGNORE [DTD-Abschnitt]]> <![INCLUDE [DTD-Abschnitt]]>

IGNORE und INCLUDE

<!ENTITY % SICHER "IGNORE"><!ENTITY % UNSICHER "INCLUDE">

<![%SICHER; [hier Deklarationen]]><![%UNSICHER; [hier Deklarationen]]>

Externe DTD

DTDs können ziemlich gross werden kann in beliebig vielen Dokumenten verwendet werden Syntax:

<!DOCTYPE EMAIL SYSTEM "email.dtd"> Beispiel:

externe DTD XML-Dokument

Klassen DTD

Als Basisklasse verwendet Beispiel

<DOCTYPE EMAIL SYSTEM "..." [<!ENTITY Unterschrift "Franz">]>

Bei Konflikten wird die zuerst gefundene Deklaration verwendet (die Innere)

CSS

Cascading Style Sheets Stylesheets im HTML-Umfeld CSS Level 1 nur für HTML CSS Level 2 kann auch zur Präsentation von XML im

Web-Browser verwendet werden

XSL

Extensible Stylesheet Language XSL ist die Formatierungssprache für XML-Dokumente XSL ist eine Anwendung von XML XSL-T: Namespace xsl für: Transformation XSL-FO: Namespace fo für: Formatierung XPath wird zur Adressierung von Teilen (Elementen,

Teilbäumen, etc.) der XML-Dokumente verwendet um XSL anwenden zu können, benötigt man einen

XSL-Prozessor

Prozess

Parser

XMLInstanz

Web CD/DVDScript

Ein validierender Parser validierender Parserführt die Prüfung einesXML-Dokuments bzgl.seiner DTD durch

ExterneElemente

XMLDokument

XSLStylesheet Formatierungsprozess

DTD Definition

XQLAnfrage

XSL

Mit XSL-T kann man ein Quelldokument in eine beliebige Ausgabestruktur transformieren

XSL-FO stellt eine Vielzahl von Objekten zur Spezifikation von Formatierungen bereit

Hierzu werden Stylesheets verwendet Ein Stylesheet besteht aus einer oder mehreren

Vorlagen (Templates) Diese Vorlagen werden über Muster (Patterns)

adressiert

XSL Muster

XSL verwendet Muster zur Spezifikation von XML Elementen, d.h. XSL ist deklarativ

Muster beschreiben den betreffenden Zweig innerhalb des gesamten Baumes

z.B.: email/vonadressiert das Element von, das innerhalb des Wurzelelements email liegt

XSL Muster

XML-Dokument:<email>

<von>Christian.Goebel@Softwareag.com</von><an>Thomas.Wolf@Softwareag.com</an><cc>Bernd.Steinberg@Softwareag.com</cc><betreff>Tamino am Beispiel</betreff><text>Servus, die Vorstellung von Tamino am Beispiel war ein voller Erfolg. Gruss Christian</text>

</email>

XSL-Stylesheet:<?xml version="1.0"?><xsl:stylesheet xmlns:xsl="uri:xsl"> <xsl:template match="/"> <HTML> <BODY>

<TABLE BORDER="1"> <TR>

<TD>Von</TD><TD>An</TD>

</TR><xsl:for-each select="EMAIL">

<TR><xsl:apply-templates/>

</TR> </xsl:for-each> </TABLE> </BODY> </HTML> </xsl:template> <xsl:template match="./"> <TD><xsl:value-of select="VON"/></TD> <TD><xsl:value-of select="AN"/></TD> </xsl:template></xsl:stylesheet>

XSL Elemente

xsl:apply-templates

xsl:attribute

xsl:cdata xsl:choose

xsl:comment

Weist den XSL-Prozessor an, auf Grundlage eines angegebenen Musters die korrekte Vorlage zu finden, die angewendet werden soll

Erzeugt einen Attributknoten und wendet ihn auf das Ausgabeelement an

Gibt einen Abschnitt CDATA aus Gestattet die Prüfung von Bedingungen. Dieses

Element wird in Verbindung mit den Elementen xsl:otherwise und xsl:when benutzt

Erzeugt in der Ausgabestruktur einen Kommentar

XSL Elemente

xsl:copy

xsl:define-template-set

xsl:element

xsl:entity-ref

xsl:eval

Macht eine Kopie des Zielknotens von der Quelle, die in die Ausgabe eingefügt werden soll

Definiert einen Satz von Vorlagen auf einer bestimmten Bereichsebene

Erzeugt in der Ausgabe ein Element mit dem angegebenen Namen

Erzeugt in der Ausgabe eine Entityreferenzierung mit dem angegebenen Namen

Verwertet einen Textstring, gewöhnlich Skriptcode

XSL Elemente

xsl:for-each

xsl:if

xsl:node-name

xsl:otherwise

xsl:pi

Wendet dieselbe Vorlage auf mehrere Dokumentknoten an

Gestattet in einer Vorlage die Prüfung einer Bedingung

Fügt den Namen des aktuellen Knotens als Textstring in die Ausgabe ein

Ermöglicht die Prüfung einer Bedingung. Dieses Element wird in Verbindung mit den Elementen xsl:choose und xsl:when benutzt

Erzeugt in der Ausgabe eine Verarbeitungsanweisung

XSL Elemente

xsl:script

xsl:stylesheet

xsl:template

xsl:value-of

xsl:when

Definiert Deklarationen für globale Variablen und Funktionen Definiert den Satz von Vorlagen, die auf den

Quelldokumentenbaum angewendet werden müssen, um das Ausgabedokument zu erstellen

Definiert eine Vorlage für die Ausgabe auf der Grundlage eines bestimmten Musters

Wertet ein XSL-Muster aus, das im Attribut select angegeben ist, und liefert den Wert des identifizierten Knotens als Text zurück, der dann in die Vorlage eingesetzt wird

Bietet konditionale Prüfungen. Dieses Element wird in Verbindung mit den Elementen xsl:choose und xsl:otherwise benutzt

XSL

in XSL muss jedes Element eine Vorlage haben, damit das Dokument einwandfrei verarbeitet werden kann

integrierte Vorlagen:<xsl:template> <xsl:apply-templates/></xsl:template>

Konflikte werden vermieden, indem bei doppelten Spezifikationen das genauer spezifizierte Muster verwendet wird

Workshop I

EMAIL.XML EMAIL-externe-dtd.xml

+ Tag „attachment“ EMAIL-externe-dtd-erweitert.xml Beispiel für EMAIL zeigen und erklären

Workshop II

XML für Buch erstellen DTD für Buch erstellen XSL für Buch erstellen HTML-Seite zum Aufruf erstellen

Wichtige Links

www.w3.orgWorld Wide Web Consortium www.oasis-open.org/cover/ OASIS XML Cover Pages www.xml.org OASIS XML.ORG www.xml.com O'Reilly Network XML.com www.go-xml.com Software AG GO XML xml.apache.org Apache XML Project www.ibm.com/developer/xml/ IBM developerWorks msdn.microsoft.com/xml/default.asp msdn online XML wdvl.internet.com/Authoring/Languages/XML/ Web

Developer's Virtual Library

Abkürzungen

XML Extensible Markup Language SGML Standard Generalized Markup Language DTD Document Type Definition XSL Extensible Stylesheet Language XQL XML Query Language HTML Hypertext Markup Language CSS1/2 Cascading Style Sheets, Level 1/2 WWW World Wide Web HTTP Hypertext Transport Protocol URI Uniform Resource Identifier URL Uniform Resource Locator URN Uniform Resource Name

The XML Company