Upload
hilko-pfeiffer
View
217
Download
0
Embed Size (px)
Citation preview
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
< öffnende spitze Klammer (<) > schliessende spitze Klammer (>) & Ampersand (&) ' Apostroph (') " Anführungszeichen (")
Wie fügt man folgenden Text in ein XML Dokument ein:... „(5 > 0)“ ...
... "(5 > 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>[email protected]</von><an>[email protected]</an><cc>[email protected]</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