Internetbasierte Systeme

Größe: px
Ab Seite anzeigen:

Download "Internetbasierte Systeme"

Transkript

1 Internetbasierte Systeme Internetbasierte Systeme SS 2010 Michael Jäger 27. Juni / 446 Internetbasierte Systeme Internetbasierte Systeme SS 2010 Wie entwickle ich Software für das Web? / 446

2 Internetbasierte Systeme Themen Thematischer Überblick Teil 1: Basiswissen Webprogrammierung XML & Co DOM Document Object Model XML und Java HTML/XHTML Cascading Stylesheets (CSS) Javascript und Ajax HTTP und Webbrowser 3 / 446 Internetbasierte Systeme Themen Thematischer Überblick Teil 2: Java Enterprise Technologie JEE Architekturmodell Java Server Pages (JSP) und Servlets Java Server Faces (JSF) Java Naming and Directory Interface (JNDI) Java Persistenz API (JPA) Java Enterprise Beans 4 / 446

3 Internetbasierte Systeme Themen Thematischer Überblick Teil 3: Einführung in Webservices Service-orientierte Architekturen (SOA) Webservices, SOAP und REST WSDL Webservice-Erweiterungen (WS-*) Geschäftsprozessmodellierung Java und Webservices 5 / 446 Internetbasierte Systeme Literatur Literatur Basiswissen Web-Programmierung von Heide Balzert, W3L-Verlag 2007, 25 EUR Java EE 5 von Thomas Stark, Addison-Wesley/Pearson Studium 2007, 30 EUR Foliensammlung auf meiner WWW-Homepage (wird während des Semesters ergänzt) Die SELFHTML-Website: Diverse Internet-Quellen (siehe Foliensammlung) 6 / 446

4 XML Extensible Markup Language Teil II XML 7 / 446 XML Extensible Markup Language 3 XML und Co. Einführung XML-Parser und andere Werkzeuge XML Syntax DTD - Dokumenttyp-Definitionen 4 XML Schema Language XML Schema Einführung XML Schema Namensräume XML Schema Typsystem XML Schema Import und Include 5 XSL XSL - Extensible Stylesheet Language XSL XSLT XSL XPath XSLT XSLT Push- und Pull-Verarbeitung XSLT Textblöcke XSLT Default-Aktionen XSLT Kontrollstrukturen XSLT Kopieren von Strukturen 6 XML und Java Überblick JAXP - DOM JDOM und DOM4J JAXP - SAX JAXP Transformationen 8 / 446

5 XML Extensible Markup Language XML und Co. XML & Co XML XPath DTD XPointer XSLT XML Schema 9 / 446 XML Extensible Markup Language XML und Co. Einführung XML Extensible Markup Language Markupsprache Meta-Sprache Standard des WWW-Konsortiums (W3C) Weiterentwickelt aus SGML Versionen: 1.0 (1998), 1.1 (2004) (Quelle: 10 / 446

6 XML Extensible Markup Language XML und Co. Einführung XML-Familie Strukturspezifikation mit DTD und Schema XML-Schema zur Spezifikation der XML-Dokumentstruktur komplexes Typsystem Syntax XML-basiert DTD - Document Type Definition Technisch überholter Vorgängerstandard von XML-Schema rudimentäres Typsystem spezielle Syntax aber: DTDs noch sehr verbreitet 11 / 446 XML Extensible Markup Language XML und Co. Einführung XML-Familie XSL Transformation und Präsentation von XML XSL XML Stylesheet Language Sprachfamilie: Oberbegriff für XSLT und Co. XSLT XSL Transformations Regelbasierte Sprache zur Transformation von XML-Dokumenten XPath Sprache zur Selektion von Dokumenten-Substrukturen XSL-FO Formatting Objekts Formatspezifikationen zur Erzeugung von Printmedien 12 / 446

7 XML Extensible Markup Language XML und Co. Einführung Beispiel für ein XML-Dokument <?xml version="1.0" encoding="utf-8" standalone="yes"?> <buch autor="wilhelm Busch"> <titel> Max und Moritz </titel> <kapitel id="1"> Erster Streich. </kapitel> <kapitel id="2"> Zweiter Streich. </kapitel> </buch> Syntax: Verarbeitungsanweisungen Tags (Auszeichnungen) Elemente Attribute 13 / 446 XML Extensible Markup Language XML und Co. Einführung Syntax, Wohlgeformtheit und Gültigkeit Element- und Attributnamen frei wählbar keine vordefinierte Bedeutung (im Gegensatz zu HTML!). Wohlgeformtes Dokument: Tag-Schreibweise und Klammerstruktur stimmen Gültiges Dokument: Aufbau entspricht Schema bzw. DTD 14 / 446

8 XML Extensible Markup Language XML und Co. XML-Parser und andere Werkzeuge XML-Parser: Strukturanalyse von XML-Dokumenten I Aufgaben Wohlgeformtheit und Gültigkeit gegen Schema/DTD prüfen Methoden zur Weiterverarbeitung bereitstellen Basis für XSLT Ausprägungen: Standalone-Parser integriert in Webbrowser (z.b. Expat in Firefox) integriert in Entwicklungsumgebung in Programmiersprachen-Bibliotheken als API-Komponente 15 / 446 XML Extensible Markup Language XML und Co. XML-Parser und andere Werkzeuge XML-Parser: Strukturanalyse von XML-Dokumenten II Analysetechnik DOM-Parser erzeugen DOM-Baum SAX-Parser feuern Ereignisse Stream-Parser (ereignis- und programmgetriebene Analyse) 16 / 446

9 XML Extensible Markup Language XML und Co. XML-Parser und andere Werkzeuge XML-Editoren und -Entwicklungsumgebungen unterstützen Erstellung von XML, DTD, Schema Unterstützung für XSLT und CSS Beispiel: netbeans integrierte Open-Source Entwicklungsumgebung mit guter XML-Funktionalität ( 17 / 446 XML Extensible Markup Language XML und Co. XML-Parser und andere Werkzeuge Sonstige XML-Werkzeuge XSLT-Prozessoren: Regelbasierte Transformation von Dokumenten serversseitig: z.b. saxon, Apache Xalan Webbrowser: z.b. Firefox-Komponente TransforMiiX FOP-Prozessoren: Erzeugung von PDF, Postscript, PCL z.b. Apache FOP (Formatting Objects Processor) XML-Toolkit: XML-Verarbeitung auf Kommandozeile ( 18 / 446

10 XML Extensible Markup Language XML und Co. XML Syntax Syntax: Bestandteile des XML-Dokuments XML-Deklaration sonstige Verarbeitungsanweisungen (optional) Wurzelement Kern des Dokuments repräsentiert fachliche Nutzdaten beliebig komplex Kommentare (optional) 19 / 446 XML Extensible Markup Language XML und Co. XML Syntax XML-Deklaration und andere Verarbeitungsanweisungen XML-Deklaration: Metainformationen für XML-Parser <?xml version="1.0" encoding="utf-8" standalone="yes"?> Metainformationen für XSLT-Transformation <?xml-stylesheet type="text/xsl" href="adressbuch.xsl"?> 20 / 446

11 XML Extensible Markup Language XML und Co. XML Syntax XML-Element Bestandteile: Start-Tag, Inhalt, End-Tag <buch isbn=" x">... </buch> Element-Inhalt: leer <br></br> oder <br /> einfacher Text Unterelemente gemischter Inhalt <name>harry Hirsch</name> <name><vn>harry</vn><nn>hirsch</nn></name> Start-Tag: Elementname, beliebige Attribute Attributwerte immer in Apostrophen Groß-/Kleinschreibung wird unterschieden leeres Element = Element mit leeren Inhalt 21 / 446 XML Extensible Markup Language XML und Co. XML Syntax Textinhalt mit XML-Sonderzeichen Problem XML-Sonderzeichen im Textinhalt verwirren Parser Lösung: Ersatzdarstellung Ersatzdarstellung Sonderzeichen englische Bezeichnung & & ampersand &apos; apostrophe " " quotation mark < < less than > > greater than 22 / 446

12 XML Extensible Markup Language XML und Co. XML Syntax Textinhalt mit XML-Sonderzeichen CDATA-Abschnitte Problem Lange Text-Inhalte mit vielen XML-Sonderzeichen Lösung: CDATA-Blöcke <![CDATA[ Dieses <Tag> wird nicht als Tag interpretiert ]]> 23 / 446 XML Extensible Markup Language XML und Co. XML Syntax Kommentare im XML-Dokument Syntax-Beispiel <!-- dies ist ein XML-Kommentar --> An welcher Stelle? außerhalb des Wurzelements im Wurzelement: überall, wo Text-Inhalt erlaubt ist ein- oder mehrzeilig gehören logisch nicht zum Dokument Prozessor darf Kommentare verschlucken 24 / 446

13 XML Extensible Markup Language XML und Co. XML Syntax Adressbuch-Beispiel I Datei: adressbuch.xml 1/2 <?xml version="1.0" encoding="utf-8"?> <!-- Adressbuch Version > <adressbuch aktualisiert=" " version="2"> <adresse> <vorname>hugo</vorname> <nachname>meier</nachname> <strasse>waldweg 7</strasse> <plz>35231</plz> <ort>dinkelsdorf</ort> < >meier007@gmx.net</ > <tel typ="mobil">0160/987654</tel> </adresse> 25 / 446 XML Extensible Markup Language XML und Co. XML Syntax Adressbuch-Beispiel II Datei: adressbuch.xml 2/2 <adresse> <titel>sir</titel> <vorname>edward</vorname> <nachname>mcdonerty</nachname> <strasse>bergstrasse 13a</strasse> <plz>76522</plz> <ort>burgstadt</ort> <tel typ="zuhause">08945/23456</tel> <privatkontakt /> </adresse> </adressbuch> 26 / 446

14 XML Extensible Markup Language XML und Co. DTD - Dokumenttyp-Definitionen DTD - Dokumenttyp-Definitionen DTD definiert syntaktische Struktur eines Dokuments Pro Element: zulässige Attribute Pro Element: Struktur (leer, einfach, Unterelemente) DTD direkt im XML-Dokument DTD als separate Datei DTD verwendet spezielle Syntax, d.h. keine XML-Syntax 27 / 446 XML Extensible Markup Language XML und Co. DTD - Dokumenttyp-Definitionen DTD-Beispiel: Adressbuch <!-- Dateiname: adressbuch01.dtd --> <!ELEMENT adressbuch (adresse+)> <!ATTLIST adressbuch stand CDATA #REQUIRED version CDATA #IMPLIED> <!ELEMENT adresse (titel?, vorname, nachname, strasse, plz, ort, ?, tel+, privatkontakt?)> <!ELEMENT titel (#PCDATA)> <!ELEMENT vorname (#PCDATA)> <!ELEMENT nachname (#PCDATA)> <!ELEMENT strasse (#PCDATA)> <!ELEMENT plz (#PCDATA)> <!ELEMENT ort (#PCDATA)> <!ELEMENT (#PCDATA)> <!ELEMENT tel (#PCDATA)> <!ATTLIST tel typ CDATA #REQUIRED> <!ELEMENT privatkontakt EMPTY> 28 / 446

15 XML Extensible Markup Language XML und Co. DTD - Dokumenttyp-Definitionen Elementstruktur in der DTD Syntax: <!ELEMENT Elementname Strukturspezifikation > Varianten der Strukturspezifikation: leere Elemente: EMPTY einfache Elemente: (#PCDATA) ( parsed character data = einfacher Text) strukturierte Elemente: Liste mit Strukturspezifikationen für direkte Unterelemente <!ELEMENT adresse (titel?, vorname, nachname, strasse, plz, ort, ?, tel+, privatkontakt?)> 29 / 446 XML Extensible Markup Language XML und Co. DTD - Dokumenttyp-Definitionen DTD-Syntax für strukturierte Elemente Elementname = genau ein Element Elementname? = Element ist optional Elementname* = beliebige Sequenz von Elementen (ggf. leer) Elementname+ = nichtleere Sequenz von Elementen Syntaktische Alternativen: -Operator, z.b. <!ELEMENT postadresse (wohnadresse postfach)> <!ELEMENT wohnadresse (strasse, hausnummer) > <!ELEMENT postfach (#PCDATA)> 30 / 446

16 XML Extensible Markup Language XML und Co. DTD - Dokumenttyp-Definitionen Attribute in der DTD Pro Element: beliebig viele Attribut-Definitionen <!ATTLIST Elementname Attribute > Attribute: Sequenz von Attributdefinitionen mit Attributname Typ (z.b. CDATA) ggf. Zusatzangaben (z.b. #REQUIRED) Beispiel: <!ATTLIST adressbuch stand CDATA #REQUIRED version CDATA #IMPLIED> Reihenfolge der Attribute spielt keine Rolle! 31 / 446 XML Extensible Markup Language XML und Co. DTD - Dokumenttyp-Definitionen Attributtypen Zeichenketten: CDATA Aufzählungstypen, z.b. <!ATTLIST adresse kategorie (freunde beruf golfclub)> NOTATION-Typen für externe Formate (z.b. Bildformate) <!ATTLIST person icon NOTATION (gif jpg) #IMPLIED> ID, IDREF, IDREFS für eindeutige Bezeichner ENTITY, ENTITIES für die Verwendung von Makros NMTOKEN, NMTOKENS Zeichenketten mit erweitertem Zeichenvorrat (gegenüber CDATA) 32 / 446

17 XML Extensible Markup Language XML und Co. DTD - Dokumenttyp-Definitionen Zusatzangaben in der Attributdefinition #REQUIRED #IMPLIED Attributwert #FIXED Attributwert (Pflichtattribut) (optionales Attribut, Standard) (Defaultwert) (fester Wert) 33 / 446 XML Extensible Markup Language XML und Co. DTD - Dokumenttyp-Definitionen Beispiel: DTD und passendes Dokument <!ELEMENT buchbestand (buch+)> <!ATTLIST buchbestand version CDATA #FIXED "1.0" sprache CDATA "deutsch"> <!ELEMENT buch (autor, titel, inhalt)> <!ATTLIST buch kategorie (Sachbuch Fachbuch Roman) "Fachbuch" isbn ID #REQUIRED neuauflagevon IDREF "null"> <buchbestand sprache="spanisch"> <buch isbn=" x">... </buch> <buch isbn=" x" neuauflagevon=" x">... <buch kategorie="roman" isbn=" x">... </buch> / 446

18 XML Extensible Markup Language XML und Co. DTD - Dokumenttyp-Definitionen Beispiel: DTD direkt im XML-Dokument DOCTYPE-Deklaration enthält DTD <!DOCTYPE adressbuch [ <!ELEMENT adressbuch... <!ATTLIST adressbuch... <!ELEMENT adresse ]> <adressbuch... <adresse </adressbuch> 35 / 446 XML Extensible Markup Language XML und Co. DTD - Dokumenttyp-Definitionen Trennung von DTD und Dokument DTD: adressbuch.dtd <!ELEMENT adressbuch... <!ATTLIST adressbuch... <!ELEMENT adresse Dokument: adressbuch.xml DOCTYPE-Deklaration verweist auf DTD <!DOCTYPE adressbuch SYSTEM "adressbuch.dtd"> <!-- hier lokale Datei, alternativ: URL der entfernten DTD --> <adressbuch... <adresse </adressbuch> 36 / 446

19 XML Extensible Markup Language XML Schema Language XML Schema Einführung XML Schema XML Schema: Universell verwendete Metasprache XML Schema ist die eigentliche Metasprache innerhalb der XML-Familie. Anwendungsbereich Mit XML Schema definiert man Syntax und Typen für Dokumenten-, Daten- und Dateiformate, domänenspezifische Sprachen, Programmiersprachen. 37 / 446 XML Extensible Markup Language XML Schema Language XML Schema Einführung XML-Schema: Anwendungsbeispiele Definition domänenspezifischer Sprachen XHTML, JSP (Java Server Pages), BPEL (Geschäftsprozessmodellierung) Geschäftsdokumente Auftrag, Lieferschein, Rechnung, Kundenkontakt, Elektronische Patientenakte (Klinikinformationssystem) Technische Anwendungen Nachrichtenformat (SOAP), Vektorgraphikformat (SVG), Speicherformat für Office-Dokumente (OpenOffice), Deployment-Deskriptoren (JEE/Tomcat) 38 / 446

20 XML Extensible Markup Language XML Schema Language XML Schema Einführung Schema Grundlegende Merkmale Ein Schema definiert komplexe Datenstrukturen Typsystem mit vordefinierten und benutzerdefinierten Typen XML-Syntax: Schema ist selbst XML-Dokument Wiederverwendbarkeits- und Modularisierungskonzepte W3C-Standard ( Nutzung mehrerer Schemas im selben XML-Dokument Tutorial 39 / 446 XML Extensible Markup Language XML Schema Language XML Schema Einführung Aufbau eines Schemas Ein Schema ist eine Definitionssammlung Ein Schema ist eine Sammlung globaler Definitionen: Elemente, Typen und Attribute. Ein Schema ist ein Namensraum Die Definitionen eines Schemas bilden in der Regel(!) einen weltweit eindeutigen Namensraum Ein Schema ist selbst ein XML-Dokument flachere Lernkurve durch bekannte einfache Basissyntax Einsatz von XML-Tools (validieren, visualisieren, in Datenbanken abspeichern... ) 40 / 446

21 XML Extensible Markup Language XML Schema Language XML Schema Einführung Struktur und Verwendung eines Schema-Dokuments Schema: adressbuch.xsd <?xml version="1.0" encoding="utf-8"?> <xsd:schema xmlns:xsd=" Definitionen </xsd:schema> Verwendung: adressbuch.xml: <?xml version="1.0" encoding="utf-8"?> <adressbuch xmlns:xsi=" xsi:nonamespaceschemalocation="adressbuch.xsd">... </adressbuch> 41 / 446 XML Extensible Markup Language XML Schema Language XML Schema Namensräume Mit XML Schema definiert man Namensräume Problem: Namenskollisionen in einem XML Dokument Ein Schema ist ein separat entwickelte Komponente Ein Dokument benutzt mehrere Schemas (Import und Nutzung von Element- und Attributdefinitionen) Eindeutigkeit aller Element- und Attributnamen im Dokument nötig Ohne modulares Sichtbarkeitskonzept: Kollisionen unvermeidbar 42 / 446

22 XML Extensible Markup Language XML Schema Language XML Schema Namensräume Kollisions-Szenario Schema A definiert Kunde mit Unterelement Nummer (Kundennummer) Schema B definiert Auftrag mit Unterelement Nummer (Auftragsnummer) Rechnung benutzt beides Namenskonflikt zwischen beiden Nummer -Elementen Lösung: Benannte Namensräume / qualifizierte Bezeichner <kunde:nummer>... </kunde:nummer>... <auftrag:nummer>... </auftrag:nummer> 43 / 446 XML Extensible Markup Language XML Schema Language XML Schema Namensräume Merkmale von XML-Namensräumen Namensraum-Definition Definition durch Schema als target namespace Sammlung von Definitionen (Elemente, Attribute, Typen) Namensraum-Import und -Nutzung Verwendung in jedem XML-Dokument ( auch in einem Schema!) Jedes Element kann Namensräume importieren und nutzen Element vererbt seine Namensräume an seine Kinder und Attribute Import-Deklaration: Pseudoattribut xmlns 44 / 446

23 XML Extensible Markup Language XML Schema Language XML Schema Namensräume Verwendungsbeispiel SOAP SOAP: XML-basiertes Transportprotokoll für Webservices Webservices kommunizieren mittels SOAP-Nachrichten W3C definiert Nachrichtenformat als Namensraum " SOAP-Nachricht <env:envelope xmlns:env=" <env:header>... </env:header> <env:body>... </env:body> </env:envelope> 45 / 446 XML Extensible Markup Language XML Schema Language XML Schema Namensräume Beispiel zur Verwendung zweier Namensräume <bestellung xmlns:produkt=" xmlns:kunde=" > <produkt:nummer>p49393</produkt:nummer> <produkt:name>jxy Rasierer VC100</produkt:name> <produkt:menge>1</produkt:menge> <produkt:preis waehrung="euro">69,--</produkt:preis> <kunde:nummer>k2029</kunde:nummer> <kunde:name>meier, Fritz</kunde:name> <kunde:lieferadresse>hauptstr. 4, Hof </kunde:lieferadresse> </bestellung> Namensraum-URI: Kurzname: produkt bestellung gehört zu keinem Namensraum 46 / 446

24 XML Extensible Markup Language XML Schema Language XML Schema Namensräume Namensraumbezeichner Namensraumbezeichner ist ein eindeutiger URI Verwendungsstelle definiert Kurznamen zum URI Kurzname redefinierbar und löschbar reservierte Kurznamen mit Sonderfunktion: beginnen mit xml (z.b. xmlns) Kurznamen-Konventionen für Standardnamensräume Beispiel: xsd - Namensraumkürzel für Schema-Definitionen 47 / 446 XML Extensible Markup Language XML Schema Language XML Schema Namensräume Default-Namensraum: Weglassen des Namensraumkürzels Schreibvereinfachung für einen Namensraum Jedes Element kann einen Default-Namensraum definieren Syntax: xmlns=namensraum-uri Elementnamen ohne Namensraum-Angabe: Default-Namensraum Attributnamen ohne Namensraum-Angabe: kein Namensraum Begriff: Qualifizierter Name Qualifiziert = gehört zu einem Namensraum Explizit: durch Namensraumkürzel Implizit: durch Default-Namensraum 48 / 446

25 XML Extensible Markup Language XML Schema Language XML Schema Namensräume Beispiel für Default-Namensraum: produkt <bestellung xmlns=" xmlns:kunde=" <nummer>p49393</nummer> <name>jxy Rasierer VC100</name> <menge>1</menge> <preis waehrung="euro">69,--</preis> <kunde:nummer>k2029</kunde:nummer> <kunde:name>meier, Fritz</kunde:name> <kunde:lieferadresse>donnerbalkenstr.14, München </kunde:lieferadresse> </bestellung> Namensraum-URI: Kurzname fehlt Default-Namensraum bestellung gehört zum Default-Namensraum 49 / 446 XML Extensible Markup Language XML Schema Language XML Schema Namensräume Redefinieren und Löschen des Default-Namensraums <Vectra xmlns=" <Karosserie>...</Karosserie> <Motor xmlns=" <!-- Motor gehört zu " -->... </Motor> <!-- zurück bei Opel --> <Rad>...</Rad> </Vectra> <Vectra xmlns=" <Karosserie>...</Karosserie> <Motor xmlns=""> <!-- Motor gehört zu keinem Namensraum -->... </Motor> / 446

26 XML Extensible Markup Language XML Schema Language XML Schema Namensräume Definition eines Namensraums Namensraum-Definition: targetnamespace Schema-Wurzelement xsd:schema hat optionales Attribut targetnamespace Attributwert: Namensraum-URI des vom Schema definierten Namensraums Namensraum beinhaltet: Alle globalen Definition des Schemas <xsd:schema xmlns:xsd=" targetnamespace=" Weiterführender Artikel: 51 / 446 XML Extensible Markup Language XML Schema Language XML Schema Namensräume Schema-Adressen im Dokument Validierung von Dokumenten: Schema-Adresse? Namensraum-URI ist keine Schema-Adresse! Schema-Adresse wird separat angegeben (optional) Schema-Adresse ermöglicht Validierung 52 / 446

27 XML Extensible Markup Language XML Schema Language XML Schema Namensräume Attribut xsi:schemalocation String, repräsentiert eine Liste von Paaren: Namensraum-URI (identisch zum URI im xmlns-attribut) Adresse des zugehörigen Schemas (URI oder Dateipfad) <adressbuch xmlns:=" xmlns:xsi=" xsi:schemalocation= " adressbuch.xsd">... </adressbuch> Attribut xsi:nonamespaceschemalocation Schema-Adresse für Namensraum-freie Bezeichner 53 / 446 XML Extensible Markup Language XML Schema Language XML Schema Namensräume Qualifikation von Namen aus Namensraum Namensräume: Qualifikationspflicht für globale Namen Die Toplevel-Definitionen eines Schemas heißen global, die anderen lokal Globale Namen müssen immer qualifiziert werden: explizit: durch Namensraumkürzel oder implizit: durch Zugehörigkeit zum Default-Namensraum 54 / 446

28 XML Extensible Markup Language XML Schema Language XML Schema Namensräume Schema bestimmt Qualifikationspflicht für lokale Namen lokale Namen: Namensraum kann aus übergeodnetem Element bestimmt werden Schema fordert oder verbietet Qualifikation: einheitlich für alle Elemente: (elementformdefault=... ) einheitlich für alle Attribute: (attributeformdefault=... ) <?xml version="1.0" encoding="us-ascii"?> <schema xmlns=" xmlns:tns=" targetnamespace=" elementformdefault="qualified" attributeformdefault="unqualified"> 55 / 446 XML Extensible Markup Language XML Schema Language XML Schema Typsystem Merkmale des Typsystems Typen für Elemente und Attribute einfache und komplexe Typen vordefinierte und benutzerdefinierte Typen Einfache und komplexe Typen Attribut: einfacher Typ Element mit Attributen: komplexer Typ Element mit Unterelementen: komplexer Typ 56 / 446

29 XML Extensible Markup Language XML Schema Language XML Schema Typsystem Element-Definition Definition eines Elements mit anonymem komplexen Typ <xsd:element name="adresse"> <xsd:complextype> <xsd:sequence> <xsd:element name="titel" type="xsd:string" minoccurs="0" maxoccurs="1"> <xsd:element name="vorname" type="xsd:string" /> <xsd:element name="nachname" type="xsd:string" />... </xsd:sequence> </xsd:complextype> </xsd:element> 57 / 446 XML Extensible Markup Language XML Schema Language XML Schema Typsystem Typdefinition und Verwendung Typdefinition <xsd:complextype name="adresstyp"> <xsd:sequence> <xsd:element name="titel" type="xsd:string" minoccurs="0" maxoccurs="1" /> <xsd:element name="vorname" type="xsd:string" /> <xsd:element name="nachname" type="xsd:string" />... </xsd:sequence> </xsd:complextype> Verwendung <xsd:element name="adresse" type="adresstyp"> 58 / 446

30 XML Extensible Markup Language XML Schema Language XML Schema Typsystem Attribut-Definitionen Adressbuch mit 3 Attributen <xsd:element name="adressbuch"> <xsd:complextype> <xsd:sequence> <xsd:element name="adresse" type="adresstyp" maxoccurs="unbounded"> </xsd:sequence> <xsd:attribute name="aktualisiert" type="xsd:date" use="required" /> <xsd:attribute name="version" type="xsd:string" use="default" value="1.0" /> <xsd:attribute name="sprache" type="xsd:language" use="optional" /> </xsd:complextype> </xsd:element> 59 / 446 XML Extensible Markup Language XML Schema Language XML Schema Typsystem Verwendungsstellen von Typen Element-Definitionen Attribut-Definitionen (nur einfache Typen!) Typdefinitionen (z.b. als extension -Basistyp) 60 / 446

31 XML Extensible Markup Language XML Schema Language XML Schema Typsystem Vordefinierte Typen für XML-Schemata (Auswahl) xsd:string xsd:decimal xsd:integer xsd:float xsd:boolean xsd:date xsd:time anyuri: Uniform Resource Identifier (URI) language: Sprachbezeichnung (de-de, en-us, fr) ID: eindeutiger Bezeichner (Identifier) IDREF: Verweis auf ID 61 / 446 XML Extensible Markup Language XML Schema Language XML Schema Typsystem Wichtige Konstruktoren für benutzerdefinierte Typen einfache Typen xsd:list xsd:restriction xsd:enumeration xsd:union Werteliste Wertebereich einschränken Aufzählungstyp Vereinigung von Wertemengen komplexe Typen xsd:sequence Unterelemente in fester Reihenfolge xsd:all Unterelemente mit beliebiger Reihenfolge xsd:choice Varianten für Unterelemente 62 / 446

32 XML Extensible Markup Language XML Schema Language XML Schema Typsystem Definition einfacher Typen: Einschränkungen Einschränkung des Wertebereichs <xsd:simpletype name="smallinttyp"> <xsd:restriction base="xsd:integer"> <xsd:mininclusive value="1" /> <xsd:maxinclusive value="100" /> </xsd:restriction> </xsd:simpletype> Einschränkung durch regulären Ausdruck <xsd:simpletype name="artikelnrtyp"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[x Y Z]\s\d{3}-\d{5}" /> </xsd:restriction> </xsd:simpletype> 63 / 446 XML Extensible Markup Language XML Schema Language XML Schema Typsystem Definition einfacher Typen: Aufzählungstypen Aufzählung mit xsd:restriction <xsd:simpletype name="farbetyp"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="rot" /> <xsd:enumeration value="gelb" /> <xsd:enumeration value="blau" /> </xsd:restriction> </xsd:simpletype> 64 / 446

33 XML Extensible Markup Language XML Schema Language XML Schema Typsystem Definition einfacher Typen: Wertelisten Listentyp <xsd:simpletype name="farblistetyp"> <xsd:list itemtype="farbetyp" /> </xsd:simpletype> eingeschränkter Listentyp <xsd:simpletype name="dreifarbentyp"> <xsd:restriction base="farblistetyp"> <xsd:length value="3" /> </xsd:restriction> </xsd:simpletype> 65 / 446 XML Extensible Markup Language XML Schema Language XML Schema Typsystem Definition einfacher Typen: Vereinigung von Wertemengen union-typ <xsd:simpletype name="intoderdecimaltyp"> <xsd:union membertypes="int decimal" /> </xsd:simpletype> 66 / 446

34 XML Extensible Markup Language XML Schema Language XML Schema Typsystem Abgeleitete komplexe Typen Einschränkung und Erweiterung Restriction Restrictions repräsentieren immer Teilmengen des Basistyps Diverse Einschränkungen möglich, z.b. Komponententyp einschränken optionale Komponenten weglassen min/max-occurs einschränken Alle Komponenten (Subelemente, Attribute) des neuen Typs explizit deklarieren! 67 / 446 XML Extensible Markup Language XML Schema Language XML Schema Typsystem Abgeleitete komplexe Typen Einschränkung und Erweiterung Extension Hinzufügen von Elementen/Attributen Basistyp kann simpler oder komplexer Typ sein Extension eines einfachen Typs: komplexer Typ, falls Attribute dazukommen Bei Extension nur zusätzliche Attribute und Elemente deklarieren! 68 / 446

35 XML Extensible Markup Language XML Schema Language XML Schema Typsystem Komplexer Restriction-Typ Basistyp <xsd:complextype name="fahrzeug"> <xsd:sequence> <xsd:element name="ps" type="xsd:positiveinteger"/> <xsd:element name="geschw" type="xsd:positiveinteger"/> <xsd:/sequence> <xsd:/complextype> abgeleiteter Typ <xsd:complextype name="lkw"> <xsd:complexcontent> <xsd:extension base="fahrzeug"> <xsd:sequence> <xsd:element name="nutzlast" type="xsd:positiveinteger"/>... </xsd:sequence> </xsd:extension> </xsd:complexcontent> </xsd:complextype> 69 / 446 XML Extensible Markup Language XML Schema Language XML Schema Typsystem Typen im Instanzdokument: xsi:type XML-Dokument verwendet Schema-Typen <auto:lieferliste xmlns:xsi=" xmlns:auto=" datum=" "> <lieferung xsi:type="auto:pkwtyp">... </lieferung> <lieferung xsi:type="auto:lkwtyp">... </lieferung> </auto:lieferliste> Generischer Typ im Schema, abgeleiteter Typ im Dokument Typ im Schema: lieferung hat generischen Typ z.b. FahrzeugTyp oder xsd:anytype Typ im Dokument: lieferung hat abgeleiteten Typ: PKWTyp bzw. LKWTyp 70 / 446

36 XML Extensible Markup Language XML Schema Language XML Schema Typsystem Ausblick: XML-Vererbungskonzepte Abgeleitete Typen und xsi:type (siehe oben) Substitutionsgruppen (substitutiongroup-attribut) (zur Modellierung von Vererbungsbeziehung zwischen Klassen) Abstrakte Elemente (abstract-attribut) (zur Modellierung abstrakter Klassen) Finale Elemente und Typen (final-attribut) (Einschränkung von Ableitungen) Substitutionsverbote (block-attribut) 71 / 446 XML Extensible Markup Language XML Schema Language XML Schema Import und Include Modularisiertes Schema: Import und Include include Ein Namensraum auf mehrere Dateien verteilt Umfangreiche Namensräume: auf mehrere Dateien verteilen Zusammenfügen: include-element in übergeordneter Schema-Datei <xsd:schema xmlns:xsd=" xmlns:pcparts=" targetnamespace=" <xsd:include schemalocation=" <xsd:include schemalocation=" </xsd:schema> 72 / 446

37 XML Extensible Markup Language XML Schema Language XML Schema Import und Include Modularisiertes Schema: Include import mehrere zusammengehörige Namensräume Schema-Module, die eigene Namensräume definieren Zusammenfügen: import-element in übergeordneter Schema-Datei <xsd:schema xmlns:xsd=" xmlns:pcparts=" targetnamespace=" <xsd:import namespace=" schemalocation="pcparts.xsd"/>... <... <xsd:attribute name="weight" type="pcparts:weighttype"/>.../>... </xsd:schema> 73 / 446 XML Extensible Markup Language XSL XSL - Extensible Stylesheet Language XSL - Extensible Stylesheet Language Sprachfamilie zur Visualisierung von XML-Dokumenten: XSLT (XSL-Transformations) Muster-basierte Transformationsregeln für XML-Dokumente XPath (XML Path Language) Selektion von Elementen und Attributen XSL-FO (XSL Formatting Objekts) Layout für Printmedien XPointer Verweise auf externe Dokumente 74 / 446

38 XML Extensible Markup Language XSL XSL XSLT XSLT Transformationen mit XSL-Stylesheets XSLT-Stylesheet: Transformationsregeln für XML-Dokument Zielsprachen: XML, HTML, XHTML, Text, PDF und andere Ziel- und Quelldokument können beliebig voneinander abweichen! 75 / 446 XML Extensible Markup Language XSL XSL XSLT XSLT-Transformationen sind baumorientiert Stylesheet <xsl:stylesheet version="1.0" xmlns:xsl=" <xsl:template match="...">... </xsl:template>.. Transformationsregeln. <xsl:template match="...">... </xsl:template> </xsl:stylesheet> (statt xsl:stylesheet kann auch xsl:transform stehen) 76 / 446

39 XML Extensible Markup Language XSL XSL XSLT Transformationsregeln xsl:template XSL-Stylesheet = Liste von Transformationsregeln Regel: Selektor + Aktion Selektor: XPath-Ausdruck bestimmt, für welche Elemente des die Regel gilt Aktion: statischer Ausgabetext und/oder Kommandos zur dynamischen Erzeugung von Ausgabetext 77 / 446 XML Extensible Markup Language XSL XSL XSLT Referenzierung von XSL-Stylesheets Stylesheets: lokale Dateien oder Internet Adressierung im XML-Dokument: Dateipfad oder URL Stylesheet-URL in Verarbeitungsanweisung <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="adressbuch.xsl"?> <adressbuch / 446

40 XML Extensible Markup Language XSL XSL XSLT Beispiel: XML HTML Adressbuch -Verzeichnis adressbuch.xml <?xml version="1.0" encoding="utf-8"?> <adressbuch aktualisiert=" " version="2"> <adresse> <vorname> Hugo </vorname> <nachname> Meier </nachname> <strasse> Waldweg 7 </strasse> <plz> </plz> <ort> Dinkelsdorf </ort> < > meier007@gmx.net </ > <tel typ="mobil"> 0160/ </tel> </adresse> / 446 XML Extensible Markup Language XSL XSL XSLT adressbuch.xsl <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl=" version="1.0"> <xsl:template match="/"> <html> <body> <h1> -Verzeichnis </h1> <table border="4"> <tr><th>vorname</th> <th>nachname</th> <th> </th> </tr> <xsl:apply-templates /> <xsl:template match="adresse"> <tr> <td> <xsl:value-of select="vorname" /> </td> <td> <xsl:value-of select="nachname" /> </td> <td> <xsl:value-of select=" " /> </td> </tr> </xsl:template> </xsl:stylesheet> </table> </body> </html> </xsl:template> 80 / 446

41 XML Extensible Markup Language XSL XSL XSLT Regel für Wurzelement <xsl:template match="/">... Regeln auf Kinder anwenden <xsl:apply-templates /> Im Beispiel: HTML-Tabellen-Gerüst für -Adressen erzeugen Regel für Adressen <xsl:template match="adresse">... Im Beispiel: HTML-Tabellenzeile erzeugen Elementwert <xsl:value-of select="..."> / 446 XML Extensible Markup Language XSL XSL XSLT Ausführen der Transformation Ausführen in Apache Xalan xalan -HTML -IN adressbuch.xml -XSL adressbuch2 .xsl -OUT .html Ausführung im Webbrowser: automatisch lädt XML-Dokument findet <?xml-stylesheet...>-verarbeitungsanweisung lädt Stylesheet führt Transformation aus zeigt resultierende HTML-Datei an Nicht jeder Browser unterstützt XSLT! 82 / 446

42 XML Extensible Markup Language XSL XSL XSLT Ausführung in der Entwicklungsumgebung 83 / 446 XML Extensible Markup Language XSL XSL XPath XPath: Baum- bzw. DOM-orientierte Sprache XPath-Ausdruck: Pfad selektiert Teile (Elemente, Attribute) eines XML-Dokuments z.b. einen Knoten, einen Teilbaum oder eine Menge von Attributen Selektionskriterien komplex, benutzen u.a. Positionen im Baum Knotentypen Elementnamen, Attributnamen Attributwerte Zum Lernen und Experimentieren: XLab ( 84 / 446

43 XML Extensible Markup Language XSL XSL XPath XML-Dokument und Baum <?xml version="1.0" encoding="utf-8"?> <Musiksammlung> <Album> <Titel>... <Interpret>... <Genre>... </Album> <Album> <Titel>... <Interpret>... <Genre>... </Album> <Album> <Titel>... <Interpret>... <Genre>... </Album> </Musiksammlung> 85 / 446 XML Extensible Markup Language XSL XSL XPath DOM-Bäume: Knotentypen Wurzelknoten: repräsentiert komplettes XML-Dokument Ist Elternknoten des Wurzelelements Elementknoten: XML-Element Kinder: Elementknoten, Attributknoten oder Namensraum-Knoten Attributknoten: Attribut mit Name und Wert Textknoten: einfacher Textinhalt Namensraumknoten: Namensraum (für Element oder Attribut) Verarbeitungsanweisungsknoten: Verarbeitungsanweisung (Kind des Wurzelknotens) Kommentarknoten: Kommentarinhalt 86 / 446

44 XML Extensible Markup Language XSL XSL XPath Knotentypen im DOM-Baum visitenkarte.xml <?xml version="1.0" encoding="utf-8"?> <Name typ=="person"> <Vorname> Karl </Vorname> <Nachname> Schneider </Nachname> </Name> 87 / 446 XML Extensible Markup Language XSL XSL XPath XPath-Grundelemente Ein (Lokalisierungs-)Pfad ist eine Sequenz von Pfadelementen Pfadelemente werden mit / abgetrennt relative und absolute Pfade Pfadelemente enthalten Achse (optional) Knotentest Prädikate (optional) Syntax: achse::knotentest[ Prädikat ] Pfade mit verknüpfbar: Vereinigung der Elementmengen Klammern möglich zur eindeutigen Zuordnung von Operanden 88 / 446

45 XML Extensible Markup Language XSL XSL XPath Achsen und Knotentests Eine Achse selektiert eine Knotenmenge Achse definiert Knotenmenge über Relation zum aktuellen Knoten, z.b. child::, parent:: Default-Achse: child:: Menge aller Kindknoten Zugriff auf Attribute über die Achse attribute:: Zugriff auf Namensraum über die Achse namespace:: Knotentest Elementname selektiert passende Elemente, z.b. child::adresse Attributname selektiert passende Attribute (aus der Attributachse), z.b. attribute:: * selektiert alle Knoten der Achse, z.b. child::*, attribute::* 89 / 446 XML Extensible Markup Language XSL XSL XPath Prädikate [ not(...) and (...) or... ] Prädikate innerhalb von Pfaden Prädikate können Knotenmengen weiter einschränken: child::*[2] child::*[position()<3] (2. Kindelement) (Die ersten 2 Kindelemente) descendant::*[@version] (alle Nachkommen mit version -Attribut) Pfade als Argumente von Prädikaten Prädikate können Pfade auswerten count(child::*) name(child::*[last()]) (Anzahl der Kinder) (Name des letzten Kindelements) 90 / 446

46 XML Extensible Markup Language XSL XSL XPath Kurznotation Zwei äquivalente Pfade ausführlich: child::adresse[1]/child:: /attribute::typ kurz: Bestandteile child:: Default-Achse, in der Kurznotation weggelassen adresse Knotentest: selektiert adresse -Elemente [1] Prädikat (hier: Index), selektiert 1. Element attribute:: Attribut-Achse, typ Knotentest: selektiert Attribut typ 91 / 446 XML Extensible Markup Language XSL XSL XPath Beispiele für Achsen Auf den folgenden Folien: Baumdarstellungen für Achsen (aus selfhtml.org) aktueller Knoten; blau markiert durch die Achse ausgewählte Knoten: nummeriert 92 / 446

47 XML Extensible Markup Language XSL XSL XPath child:: alle Kindknoten parent:: Elternknoten 93 / 446 XML Extensible Markup Language XSL XSL XPath descendant:: alle Nachkommen ancestor:: Alle Vorfahren 94 / 446

48 XML Extensible Markup Language XSL XSL XPath following:: im Dokument dahinter stehende Elemente preceding:: im Dokument davor stehende Elemente 95 / 446 XML Extensible Markup Language XSL XSL XPath following-sibling:: im Dokument dahinter stehende Geschwisterelemente preceding-sibling:: im Dokument davor stehende Geschwisterelemente 96 / 446

49 XML Extensible Markup Language XSL XSL XPath self:: Der Knoten selbst descendant-or-self:: Knoten selbst und alle Nachkommen 97 / 446 XML Extensible Markup Language XSL XSL XPath ancestor-or-self:: Knoten selbst und alle Vorgänger 98 / 446

50 XML Extensible Markup Language XSL XSL XPath Achsen, Filter und Prädikate Kurznotation für Achsen / Wurzelknoten. aktuelles Element.. übergeordnetes Element // Kompletter Baum bzw. Teilbaum Attributknoten Knotentest als Filter Elementnamen oder * (für alle Elemente) Attributnamen 99 / 446 XML Extensible Markup Language XSL XSL XPath Prädikate als Filter Prädikate schränken die selektierte Knotenmenge weiter ein viele vordefinierte Prädikate mit Operatoren zu komplexen Prädikaten verknüpfbar Syntax: [ Ausdruck ] Prädikat: Filterung nach Anzahl der Knoten //buch[count(seite)<=100 and count(seite)>=10] selektiert alle buch -Elemente mit Seite -Kindelementen 100 / 446

51 XML Extensible Markup Language XSL XSL XPath Ausgewählte XPath-Beispiele adresse adresse */adresse adresse[3] */*[last()-1] //vorname alle Kinder mit Namen adresse alle Kinder und Enkel mit Namen adresse 3. Kind mit Namen adresse und vorletzter Enkel alle Elemente mit Namen vorname..../*[1] übergeordneter Knoten und dessen 1. alle Attribute des übergeordneten Knotens 2. Attribut des übergeordneten Knotens Attribut waehrung des übergeordneten Knotens Attribut waehrung des übergeordneten Knotens zu allen Kunden im Teilbaum des aktuellen Knotens das erste auftrag-enkelelement kunde-kind-elemente mit kundentyp- -Attribut kunde-kind-elemente mit id- -Attributwert / 446 XML Extensible Markup Language XSL XSL XPath Ausgewählte XPath-Funktionen boolean ceiling concat contains count current document element-available false floor format-number function-available generate-id id key lang last Prädikat auswerten aufrunden Konkatenation Teilzeichenkette Anzahl Knoten aktueller Knoten Zugriff auf anderes XML-Dokument Prozessor-Support für Element testen falsch abrunden Zahl String Prozessor-Support für Funktion testen ID generieren Element zu ID Elemente zu Key Sprachcode Index des letzten Knotens 102 / 446

52 XML Extensible Markup Language XSL XSL XPath Ausgewählte XPath-Funktionen II local-name name namespace-uri normalize-space not number position round starts-with string string-length substring substring-after substring-before sum system-property translate true Name ohne Präfix Name Namensraum-URI Leerzeichen vorne/hinten entfernen Negation in Zahl umwandeln Index aktueller Knoten auf- oder abrunden Präfixtest in Zeichenkette umwandeln Länge Substring extrahieren Summe Systemeigenschaft (z.b. XSLT-Version) Suchen und Ersetzen wahr 103 / 446 XML Extensible Markup Language XSL XSLT Anwenden von Templates xsl:apply-templates veranlasst Regelanwendung für Kindknoten mit select: Anwendung nur für explizit selektierte Substrukturen Regelanwendung für explizit selektierte Kinder <xsl:template match="adressbuch"> <html><body> <h1> -Verzeichnis </h1> <table border="4"> <tr><th>vorname</th> <th>nachname</th> <th> </th> </tr> <xsl:apply-templates select="*[count( )>0]"/> </table> </body></html> </xsl:template> 104 / 446

53 XML Extensible Markup Language XSL XSLT Auf Inhalte zugreifen Auf Textinhalte und Attributwerte zugreifen: xsl:value-of Syntax: <xsl:value-of select="..." /> Ergebnis: bei Textknoten und Elementknoten: Text-Inhalt bei Attributknoten: Attributwert 105 / 446 XML Extensible Markup Language XSL XSLT Push- und Pull-Verarbeitung Entwurfsmuster für XSLT PUSH-Verarbeitung Ausgabe-Erzeugung mit elementspezifischen Regeln Regelanwendung durch <xsl:apply-templates> PULL-Verarbeitung Im Template eines Elements wird die Verarbeitung der Substrukturen explizit programmiert Extremfall: nur ein Template für das Wurzelement. Zugriff auf die Teilbäume mit <xsl:value-of select=...> und <xsl:foreach> Bessere Wartbarkeit ist i.a. bei PUSH-Stil gegeben. 106 / 446

54 XML Extensible Markup Language XSL XSLT Push- und Pull-Verarbeitung XSL-Stylesheet für Adressbuch PUSH-Stil 5 Transformationsregeln <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl=" version="1.0"> <xsl:template match="adressbuch">.. wie oben. </xsl:template> <xsl:template match="adresse"> <tr> <xsl:apply-templates /> </tr> </xsl:template> 107 / 446 XML Extensible Markup Language XSL XSLT Push- und Pull-Verarbeitung <xsl:template match="vorname"> <td><xsl:value-of select="." /></td> </xsl:template> <xsl:template match="nachname"> <td><xsl:value-of select="." /></td> </xsl:template> <xsl:template match=" "> <td><xsl:value-of select="." /></td> </xsl:template> </xsl:stylesheet> 108 / 446

55 XML Extensible Markup Language XSL XSLT Push- und Pull-Verarbeitung XSL-Stylesheet für Adressbuch PULL-Stil <xsl:stylesheet xmlns:xsl=" <xsl:template match="/"> <html> <body> <h1> -Verzeichnis </h1> <table border="4"> <tr><th>vorname</th> <th>nachname</th> <th> </th> </tr> <xsl:for-each select="*"> <tr> <td><xsl:value-of select="vorname" /></td> <td><xsl:value-of select="nachname" /></td> <td><xsl:value-of select=" " /></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> 109 / 446 XML Extensible Markup Language XSL XSLT Textblöcke Textblöcke unverändert ausgeben: xsl:text Problem: Sonderzeichen im Ausgabetext <xsl:text> Sei x>0 und x<10. </xsl:text> Sonderzeichen-Ersatzdarstellung im Ausgabedokument Ausgabe: <xsl:text disable-output-escaping="no"> Sei x>0 und x<10. </xsl:text> Sei x>0 und x< / 446

56 XML Extensible Markup Language XSL XSLT Default-Aktionen Default-Aktionen Standardaktionen abhängig vom Knotentyp Knotentyp Element Text Komentar Verarbeitungsanweisung Attribut Namensraum Wurzel Standardaktion Templates für Kindknoten anwenden in den Ausgabebaum kopieren ignorieren ignorieren Wert in den Ausgabebaum kopieren ignorieren Templates für Kindknoten anwenden Beispiel: Stylesheet völlig ohne Templates kopiert alle Textinhalte (aber keine Attribute) 111 / 446 XML Extensible Markup Language XSL XSLT Kontrollstrukturen Bedingte Verarbeitung in XSLT xsl:if <xsl:if test="...">... </xsl:if> xsl:choose: mehrere Alternativen <xsl:choose> <xsl:when test="...">... <xsl:when test="..."> <xsl:otherwise> </xsl:choose>... </xsl:when>... </xsl:when>... </xsl:otherwise> 112 / 446

57 XML Extensible Markup Language XSL XSLT Kontrollstrukturen Listentrenner-Beispiel für xsl:if <xsl:template match="/"> <html><body> <h2>cd-sammlung</h2> <p>titel: <xsl:for-each select="cdkatalog/cd"> <xsl:value-of select="titel"/> <xsl:if test="position() < last()-1"> <xsl:text>, </xsl:text> </xsl:if> <xsl:if test="position()=last()-1"> <xsl:text> und </xsl:text> </xsl:if> <xsl:if test="position()=last()"> <xsl:text>!</xsl:text> </xsl:if> </xsl:for-each> </p> </body></html> </xsl:template> 113 / 446 XML Extensible Markup Language XSL XSLT Kontrollstrukturen Iterator für Knotenmengen xsl:for-each expliziter Iterator für Knotenmengen xsl:sort Sortierung einer Knotenmenge 114 / 446

58 XML Extensible Markup Language XSL XSLT Kontrollstrukturen Iteration und Sortieren einer Knotenmenge auftraege.xml <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="auftrag.xsl"?> <auftraege typ="tiefbau"> <auftrag datum=" "> <kunde> Karl Dall </kunde> <auftragsposition> 10 Bagger </auftragsposition> <auftragsposition> 1 Bauzaun </auftragsposition> </auftrag> <auftrag datum=" "> <kunde> Hubert Winzig </kunde> <auftragsposition> 7 Bagger <auftragsposition> 1 Kran </auftrag> </auftragsposition> </auftragsposition> </auftraege> 115 / 446 XML Extensible Markup Language XSL XSLT Kontrollstrukturen Stylesheet dazu auftraege.xsl (1/2) <xsl:stylesheet xmlns:xsl=" version="1.0"> <xsl:template match="auftraege"> <html><body> <xsl:for-each select="auftrag"> <xsl:sort select="@datum" /> <hr/> <b> Auftrag vom <xsl:value-of select="@datum" />: </b><p> <xsl:apply-templates select="auftragsposition" /> <br /> Oben stehende Auftraege sind von <b> <xsl:apply-templates select="kunde" /> </b></p> </xsl:for-each> </body></html> </xsl:template> 116 / 446

59 XML Extensible Markup Language XSL XSLT Kontrollstrukturen Stylesheet II auftraege.xsl (2/2) <xsl:template match="auftragsposition"> Auftragsposition: <xsl:apply-templates /> <br/> </xsl:template> </xsl:stylesheet> 117 / 446 XML Extensible Markup Language XSL XSLT Kontrollstrukturen Ausgabe im Browser 118 / 446

60 XML Extensible Markup Language XSL XSLT Kopieren von Strukturen Kopieren von Baumknoten Flaches Kopieren eines Elements <xsl:copy>... </xsl:copy> kopiert aktuellen Knoten ohne Inhalt und Attribute Inhalt des xsl:copy-elements bestimmt den Inhalt des kopierten Knotens Attribute können mit xsl:attribute hinzugefügt werden Kopieren beliebiger Strukturen <xsl:copy-of select="... " /> kopiert alle mit select ausgewählten Daten 119 / 446 XML Extensible Markup Language XSL XSLT Kopieren von Strukturen Vergleich unterschiedlicher Kopieraktionen Adressbuch mit drei Adressen Adresse 1 wird mit xsl:copy-of kopiert Adresse 2 wird mit xsl:value-of kopiert Adresse 3 wird mit rekursivem xsl:copy kopiert Man achte auf die Attribute! 120 / 446

61 XML Extensible Markup Language XSL XSLT Kopieren von Strukturen <adressbuch stand=" "> <adresse> <vorname>hugo</vorname> <nachname>meier</nachname> <strasse>waldweg 7</strasse> <plz>35231</plz> <ort>dinkelsdorf </ort> <tel typ="mobil">0160/987654</tel> </adresse> <adresse> <titel art="adelstitel">sir</titel> <vorname>edward</vorname> <nachname>mcdonerty</nachname> <strasse>bergstrasse 13a</strasse> <plz>76522</plz> <ort>burgstadt</ort> <privatkontakt/> <tel typ="zuhause">08945/23456</tel> </adresse> <adresse> <titel art="akademisch">msc.</titel> <vorname>alex</vorname> <nachname>hacker</nachname> <strasse>xmlweg 17</strasse> <plz>98754</plz> <ort>webstadt</ort> <privatkontakt/> <tel typ="mobil">0151/223456</tel> <tel typ="zuhause">05432/ </tel> </adresse> </adressbuch> <xsl:stylesheet xmlns:xsl=" version="1.0"> <xsl:template match="adresse[vorname= Hugo ]"> copy-of <xsl:copy-of select="."/> </xsl:template> <xsl:template match="adresse[vorname= Edward ]"> value-of <xsl:value-of select="."/> </xsl:template> <xsl:template match="adresse"> deep-copy <xsl:call-template name="deepcopy" /> </xsl:template> <xsl:template name="deepcopy" match="*"> <xsl:copy> <xsl:apply-templates /> </xsl:copy> </xsl:template> </xsl:stylesheet> 121 / 446 XML Extensible Markup Language XSL XSLT Kopieren von Strukturen Ausgabe dazu: copy-of <adresse> <vorname>hugo</vorname> <nachname>meier</nachname> <strasse>waldweg 7</strasse> <plz>35231</plz> <ort>dinkelsdorf </ort> < >meier007@gmx.net</ > <tel typ="mobil">0160/987654</tel> </adresse> value-of Sir Edward McDonerty Bergstrasse 13a Burgstadt 08945/ deep-copy <adresse> <titel>msc.</titel> <vorname>alex</vorname> <nachname>hacker</nachname> <strasse>xmlweg 17</strasse> <plz>98754</plz> <ort>webstadt</ort> <privatkontakt/> <tel>0151/223456</tel> <tel>05432/ </tel> </adresse> 122 / 446

62 XML Extensible Markup Language XSL XSLT Kopieren von Strukturen Beispiel: XML XML, Selektion von Tabellenzeilen, xsl:copy <xsl:template match="/adressbuch"> <xsl:copy> <xsl:for-each select="//adresse[nachname= Schmidt ]"> <xsl:copy> <xsl:apply-templates /> </xsl:copy> </xsl:for-each> </xsl:copy> </xsl:template> <xsl:template name="deepcopy" match="*"> <xsl:copy> <xsl:apply-templates /> </xsl:copy> </xsl:template> 123 / 446 XML Extensible Markup Language XSL XSLT Kopieren von Strukturen Beispiel: XML XML, Selektion von Tabellenspalten <xsl:template match="/adressbuch"> <xsl:copy> <xsl:for-each select="//adresse[nachname= Schmidt ]"> <xsl:copy> <xsl:apply-templates select="vorname"/> <xsl:apply-templates select="nachname"/> <xsl:apply-templates select=" "/> </xsl:copy> </xsl:for-each> </xsl:copy> </xsl:template> <xsl:template name="deepcopy" match="*"> <xsl:copy> <xsl:apply-templates /> </xsl:copy> </xsl:template> 124 / 446

63 XML Extensible Markup Language XSL XSLT Kopieren von Strukturen Expliziter Regelaufruf Problem: mehrere passende Regeln bei apply-templates Auswahl nach Prioritäten expliziter Regelaufruf Expliziter Regelaufruf: adresse-knoten kopieren <xsl:template match="/adressbuch"> <xsl:copy> <xsl:for-each select="//adresse[nachname= Schmidt ]"> <xsl:copy> <xsl:call-template name="deepcopy" /> </xsl:copy> </xsl:for-each> </xsl:copy> </xsl:template> 125 / 446 XML Extensible Markup Language XML und Java Überblick XML-Verarbeitung in Java Optimale Unterstützung Mehrere stabile Standard-APIs (z.b. JAXP, JAXB) Mehrere ausgereifte Nonstandard-APIs (z.b. JDOM, StAX) Ausgereifte, performante Tools (z.b. validierende Parser, XSLT-Prozessoren) Frameworks für komplexe XML-Projekte (z.b. Cocoon) Hervorragende Dokumentation (Bücher und Internet) Problem eines Anwendungsentwicklers Überblick im Dschungel der Möglichkeiten? 126 / 446

64 XML Extensible Markup Language XML und Java Überblick Alternative API-Frameworks: JAXP und JAXB JAXP Java API for XML Processing API(s) zum Validieren, Parsen, Generieren und Transformieren DOM-API: Erstellung und Auswertung von DOM-Bäumen SAX: Ereignis-getriebener XML-Parser StaX: Streaming-Parser Transform-API: XSLT, Serialisierung, Deserialisierung und mehr JAXB Java XML Binding Framework Standardisiertes Mapping zwischen Java und XML Programmierer arbeitet rein objektorientiert Umwandlung Java XML automatisch 127 / 446 XML Extensible Markup Language XML und Java Überblick XML-Parser: DOM- und SAX-Parser DOM-Parser Parser liest XML-Text und konstruiert DOM-Baum dazu Dokument (Baum) komplett im Hauptspeicher Speicher- und Geschwindigkeitsprobleme bei großen Dokumenten SAX-Parser: Ereignis-getriebene Alternative erzeugen Ereignisse wie startelement anwendungsspezifische Callback-Methoden verarbeiten Ereignisse Vorteil: schnell, geringer Speicherbedarf, beliebig große Dokumente Nachteil: Knoten-Kontext steht der Callback-Methode nicht zur Verfügung. Anwendung muss Speicherung von Kontextinfo bei Bedarf selbst organisieren 128 / 446

65 XML Extensible Markup Language XML und Java JAXP - DOM DOM Standard des W3C Überblick Standard: W3C-Recommendation: Verwendung: XML, HTML, XHTML, Javascript, CSS u.a. Programmiersprachen- und Plattform-unabhängig Inhalt: Begriffsdefinitionen Dokument, Knoten, Knotentyp, Element, Attribut,... Baumstruktur: Wie sieht der Baum zu einem Dokument aus? Abstrakte Operationen (Knoten erzeugen/kopieren/löschen, Kindknoten anfügen,... ) 129 / 446 XML Extensible Markup Language XML und Java JAXP - DOM Merkmale Spezifikation in IDL (Interface Definition Language) 3 Versionen ( Levels ) des Standards, aktuell: Level 3. modularisiert: DOM Core DOM HTML DOM Style and Formatting Verarbeitung von Stylesheets DOM Events Basis für Javascript-Eventmodell DOM Traversal and Range XPath... Java-Implementierung DOM-API ist Teil von JAXP JavaSE (Java Platform Standard Edition) enthält JAXP 130 / 446

66 XML Extensible Markup Language XML und Java JAXP - DOM Wichtige W3C-DOM-Methoden für Knoten und Subklassen appendchild() appenddata() clonenode() deletedata() getattribute() getattributenode() getelementsbytagname() haschildnodes() insertbefore() insertdata() removeattribute() removeattributenode() removechild() replacechild() replacedata() setattribute() setattributenode() Kindknoten hinzufügen Zeichendaten hinzufügen Knoten kopieren Zeichendaten löschen Wert eines Attributknotens ermitteln Attributknoten ermitteln Zugriff auf Kindelemente über den Elementnamen auf Kindknoten prüfen Knoten einfügen Zeichendaten einfügen Attribut löschen Attributknoten löschen Knoten löschen Kindknoten ersetzen Zeichendaten ersetzen Wert eines Attributknotens setzen Attributknoten erzeugen 131 / 446 XML Extensible Markup Language XML und Java JAXP - DOM DOM-Beispiel: Adressbuch Adressbuch-Beispiel: adressbuch.xml <adressbuch aktualisiert=" "> <adresse> <vorname>hugo</vorname> <nachname>meier</nachname> <telefon typ="mobil"> 0160/ </telefon> </adresse> </adressbuch> 132 / 446

67 XML Extensible Markup Language XML und Java JAXP - DOM Baumaufbau mit W3C-DOM import org.w3c.dom.*; import javax.xml.parsers.*; public class XmlDocBeispiel { static public void main(string [] args ){ XmlDocBeispiel adressbuchdoc = new XmlDocBeispiel(); Document doc = adressbuchdoc.createadressbuch(); } public Document createadressbuch(){ DocumentBuilderFactory factory; DocumentBuilder domparser; Document doc = null; try { factory = DocumentBuilderFactory.newInstance(); domparser = factory.newdocumentbuilder(); doc = domparser.newdocument(); } catch( Exception e ){ System.out.println("Dokument konnte nicht erzeugt werden"); } 133 / 446 XML Extensible Markup Language XML und Java JAXP - DOM if (doc!= null) { Element adressbuch = doc.createelement("adressbuch"); adressbuch.setattribute("aktualisiert", " "); Element adresse = doc.createelement("adresse"); Element vorname = doc.createelement("vorname"); vorname.appendchild(doc.createtextnode("hugo")); adresse.appendchild(vorname); Element nachname = doc.createelement("nachname"); nachname.appendchild(doc.createtextnode("meier")); adresse.appendchild(nachname); Element telefon = doc.createelement("telefon"); telefon.setattribute("typ", "mobil"); telefon.appendchild(doc.createtextnode("0160/987654")); adresse.appendchild(telefon); adressbuch.appendchild(adresse); doc.appendchild(adressbuch); } return doc; } } 134 / 446

68 XML Extensible Markup Language XML und Java JAXP - DOM Großes DOM-Beispiel: XML-Text DOM XML-Text Alle wichtigen DOM-API-Elemente in einem Beispiel: XML-Texte parsen und Baumaufbau mit dem DOM-Parser Traversierung von DOM-Bäumen mit der DOM-API Zentrale Methoden DOMBaumBeispiel.erzeugeDOM() konstruiert DOM-Baum zu XML-Text (URI) DOMBaumBeispiel.main() erzeugt DOM-Baum mit erzeugedom() serialisiert den Baum wieder mittels DOMSerializer-Instanz DOMSerializer.serialize() serialisiert den Baum DOMSerializer.serializeNode() serialisiert Teilbaum rekursiv 135 / 446 XML Extensible Markup Language XML und Java JAXP - DOM DOMBaumBeispiel Analyse mit DOM-Parser DOMBaumBeispiel.erzeugeDOM import org.w3c.dom.document; import javax.xml.parsers.documentbuilder; import javax.xml.parsers.documentbuilderfactory; import org.xml.sax.saxparseexception; public class DOMBaumBeispiel { private Document erzeugedom (String uri) { Document doc = null; DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder dombuilder = factory.newdocumentbuilder(); try { Document doc = dombuilder.parse (uri); } catch (SAXParseException e) {... } 136 / 446

69 XML Extensible Markup Language XML und Java JAXP - DOM DOMBaumBeispiel.main public static void main (String[] args) { if (args.length!= 2) { System.out.println("usage: java DOMAusgabe [XML URI] OutputFilename"); System.exit (0); } /** Baum erzeugen */ DOMBaumBeispiel b = new DOMBaumBeispiel(); Document doc = b.erzeugedom(args[0]); } /** Baum in Textform ausgeben */ try { BufferedWriter out = new BufferedWriter(new FileWriter(args[1])); DOMSerializer serializer = new DOMSerializer(); serializer.serialize(doc,out); } catch (IOException e) { e.printstacktrace(); } 137 / 446 XML Extensible Markup Language XML und Java JAXP - DOM Die andere Richtung: DOMSerializer import java.io.*; import org.w3c.dom.*; public class DOMSerializer { public static void serialize(document doc, BufferedWriter writer) throws IOException { // Rekursive Ausgabe ohne Einrückung starten. serializenode(doc, writer, ""); writer.flush(); } private static void serializenode(node node, BufferedWriter writer, String indentlevel) throws IOException { // Fallunterscheidung über alle Knotentypen switch (node.getnodetype()) { case Node.DOCUMENT_NODE: writer.write("<?xml version=\"1.0\"?>"); writer.newline(); // rekursiver Aufruf für jedes Kind NodeList nodes = node.getchildnodes(); for (int i = 0; i < nodes.getlength(); ++i) serializenode(nodes.item(i), writer, ""); break; 138 / 446

70 XML Extensible Markup Language XML und Java JAXP - DOM case Node.DOCUMENT_TYPE_NODE: DocumentType doctype = (DocumentType)node; writer.write("<!doctype " + doctype.getname()); if (doctype.getpublicid()!= null) writer.write(" PUBLIC \"" + doctype.getpublicid() + "\" "); else writer.write(" SYSTEM "); writer.write("\"" + doctype.getsystemid() + "\">"); writer.newline(); break; case Node.COMMENT_NODE: writer.write("<!-- " + node.getnodevalue() + " -->"); writer.newline(); break; case Node.PROCESSING_INSTRUCTION_NODE: writer.write("<?" + node.getnodename() + " " + node.getnodevalue() + "?>"); writer.newline(); break; 139 / 446 XML Extensible Markup Language XML und Java JAXP - DOM case Node.ELEMENT_NODE: String name = node.getnodename(); writer.write(indentlevel + "<" + name); NamedNodeMap attributes = node.getattributes(); for (int i = 0; i < attributes.getlength(); ++i) { Node current = attributes.item(i); writer.write(" " + current.getnodename() + "=\"" + current.getnodevalue() + "\""); } writer.write(">"); // rekursiver Aufruf für jedes Kind // für ELEMENT-Knoten -> Inhalt eingerückt auf Folgezeile(n) // für TEXT- oder CDATA-Knoten -> gleiche Zeile, hinter dem Start-Tag NodeList children = node.getchildnodes(); if (children.getlength()!= 0 && children.item(0).getnodetype() == Node.ELEMENT_NODE) writer.newline(); for (int i = 0; i < children.getlength(); ++i) serializenode(children.item(i), writer, indentlevel + INDENT); if (children.getlength()!= 0 && children.item(children.getlength()-1).getnodetype() == Node.ELEMENT_NODE) writer.write(indentlevel); writer.write("</" + name + ">"); writer.newline(); break; 140 / 446

71 XML Extensible Markup Language XML und Java JAXP - DOM case Node.TEXT_NODE: writer.write(node.getnodevalue()); break; case Node.CDATA_SECTION_NODE: writer.write("<![cdata[" + node.getnodevalue() + "]]>"); break; } case Node.ENTITY_REFERENCE_NODE: writer.write("&" + node.getnodename() + ";"); break; } } /** Einrückung. */ private static final String INDENT = " "; 141 / 446 XML Extensible Markup Language XML und Java JAXP - DOM Validieren mit dem DOM-Parser Unterschiedliche Möglichkeiten, Konfiguration über DocumentBuilderFactory-Objekt Beispiele factory.setnamespaceaware(true); factory.setvalidating(true); factory.setfeature(" true); factory.setfeature(" true); Weitere Features " " " " 142 / 446

72 XML Extensible Markup Language XML und Java JAXP - DOM Schema-Validierung mit/ohne schemalocation mit schemalocation im Dokument: DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setnamespaceaware( true); factory.setvalidating( true); factory.setproperty( " " DocumentBuilder builder = factory.newdocumentbuilder(); Document document = builder.parse( new Inputsource( "test.xml")); ohne schemalocation factory.setproperty( " "file:adressen.xsd"); 143 / 446 XML Extensible Markup Language XML und Java JAXP - DOM Alternative: Validieren mit javax.xml.validation import javax.xml.xmlconstants; import javax.xml.transform.* import javax.xml.validation.* import org.xml.sax.saxparseexception;... try { SchemaFactory schemafactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Source schemafile = new StreamSource( new File(schemaFileName) ); Schema schema = schemafactory.newschema( schemafile ); Validator validator = schema.newvalidator(); StreamSource streamsource = new StreamSource( xmlfile ); validator.validate( streamsource ); } catch (SAXParseException e ) { String errstr = e.getmessage() + "\nfile: " + e.getsystemid() + "\nline: " + e.getlinenumber(); System.err.println( errstr ); / 446

73 XML Extensible Markup Language XML und Java JDOM und DOM4J DOM-Alternativen: JDOM und DOM4J JDOM-API für Java DOM4J Open-Source API für XML-Verarbeitung in Java Funktionalität mit DOM vergleichbar, aber einfacher zu benutzen Standardisierungsprozess JSR-102 steckengeblieben integriert beim Parser die DOM- und SAX-APIs Installation: Binär-Distribution herunterladen ( und jdom.jar in den CLASSPATH aufnehmen Weitere Open-Source API: siehe Funktionalität mit JDOM vergleichbar 145 / 446 XML Extensible Markup Language XML und Java JDOM und DOM4J Baumaufbau mit JDOM Adressbuch-Beispiel <adressbuch aktualisiert=" "> <adresse> <vorname>hugo</vorname> <nachname>meier</nachname> <telefon typ="mobil"> 0160/ </telefon> </adresse> </adressbuch> import org.jdom.element; import org.jdom.document; public class CreateDocument { public static void main(string[] args) { Element vorname = new Element("vorname"); vorname.addcontent("hugo"); Element nachname = new Element("nachname"); nachname.addcontent("meier"); Element telefon = new Element("telefon"); telefon.setattribute("typ", "mobil"); telefon.addcontent("0160/987654"); } } Element adresse = new Element("adresse"); adresse.addcontent(vorname); adresse.addcontent(nachname); adresse.addcontent(telefon); Element adressbuch = new Element("adressbuch"); adressbuch.setattribute("aktualisiert"," "); adressbuch.addcontent(adresse); Document doc = new Document(adressbuch); 146 / 446

74 XML Extensible Markup Language XML und Java JDOM und DOM4J Chaining in JDOM Verkettung der Methodenaufrufe Methoden (addcontent, setattribute, settext usw.) liefern Referenz auf das Element zurück Mehrere Aufrufe der Methoden verkettbar ( chaining ) Ohne Chaining Element adressbuch = new Element("adressbuch"); adressbuch.setattribute("aktualisiert", " "); adressbuch.addcontent(adresse); Mit Chaining Element adressbuch = new Element("adressbuch").setAttribute("aktualisiert", " ").addContent(adresse); 147 / 446 XML Extensible Markup Language XML und Java JDOM und DOM4J Kurzform des Beispiels public static void main(string[] args) { Document doc = new Document( new Element ("adressbuch").setattribute("aktualisiert", " ").addContent( (Element) new Element("adresse").addContent( (Element) new Element("vorname").addContent("Hugo")).addContent( (Element) new Element("nachname").addContent("Meier")).addContent( (Element) new Element("telefon").setAttribute("typ", "mobil").addcontent("0160/987654")))) } 148 / 446

75 XML Extensible Markup Language XML und Java JAXP - SAX SAX Simple API for XML SAX definiert Java-Schnittstellen XMLReader ContentHandler ErrorHandler Implementierung der Schnittstellen SAX-Parser implementiert: XMLReader Anwendung implementiert ContentHandler: Methoden für normale Ereignisse ErrorHandler: Methoden für Fehlerereignisse 149 / 446 XML Extensible Markup Language XML und Java JAXP - SAX Verwendungsmuster XML-Analyse und Verarbeitung sind verzahnt: Anwendung erzeugt Parser-Instanz schaltet ggf. die Validierung ein registriert Content- und Fehler-Behandlungsmethoden beim Parser aktiviert Parser mit einem Dokument Parser analysiert Dokument ruft dabei die Behandlungsmethoden auf 150 / 446

76 XML Extensible Markup Language XML und Java JAXP - SAX XML und SAX-Ereignisse <?xml version="1.0" encoding="iso "?> <wurzel> <kind alter="20">hallo</kind> <?mark ACHTUNG?> </wurzel> SAX-Ereignisse mit Parametern startdocument startelement (wurzel) ignorablewhitespace (Zeilenumbruch und " ") startelement ("kind", alter=20) characters ("Hallo") endelement ("kind") ignorablewhitespace (Zeilenumbruch und " ") processinginstruction ("mark","achtung ") ignorablewhitespace (Zeilenumbruch) endelement ("wurzel") enddocument 151 / 446 XML Extensible Markup Language XML und Java JAXP - SAX SAX-Parser in Java Gesamtstruktur // allgemeine Java-Klassen import java.io.ioexception; // SAX mit Hilfsklassen import org.xml.sax.xmlreader; import org.xml.sax.contenthandler; import org.xml.sax.errorhandler; import org.xml.sax.saxexception; import org.xml.sax.saxparseexception; import org.xml.sax.inputsource; import org.xml.sax.helpers.xmlreaderfactory; // Content-Callback-Schnittstelle definieren: class MeinContentHandler implements ContentHandler {...} // Fehler-Callback-Schnittstelle implementieren: class MeinErrorHandler implements ErrorHandler {...} 152 / 446

77 XML Extensible Markup Language XML und Java JAXP - SAX Der Kern der Verarbeitung: ContentHandler Pro Ereignisklasse eine Methode class MeinContentHandler implements ContentHandler { private Locator locator; public void setdocumentlocator (Locator locator) { /** locator enthaelt die aktuelle Position im Dokument */ this.locator = locator; } public void startdocument() throws SAXException {... } public void enddocument() throws SAXException {... } public void startelement (String namespaceuri, String localname, String rawname, Attributes atts)... public void endelement (String namespaceuri, String localname, String rawname)... public void processinginstruction (String target, String data)... public void characters (char[] ch, int start, int length)..... jedes Ereignis muss behandelt werden. 153 / 446 XML Extensible Markup Language XML und Java JAXP - SAX ErrorHandler: Drei Fehlerarten class MeinErrorHandler implements ErrorHandler { /** Warnung ausgeben */ public void warning(saxparseexception exception) { System.err.println("**Parsing Warning**\n" + " Line: " + exception.getlinenumber() + "\n" + " URI: " + exception.getsystemid() + "\n" + " Message: " + exception.getmessage()); } /** Fehlermeldung ausgeben: Dokument wohlgeformt, nicht gültig */ public void error(saxparseexception exception) { System.err.println(...); } } /** Fehlermeldung bei fatalem Fehler ausgeben. Dokument unbrauchbar */ public void fatalerror(saxparseexception exception) { System.err.println(...); } 154 / 446

78 XML Extensible Markup Language XML und Java JAXP - SAX Anwendungsunabhängig: Initialisierung public class MeinSAXParser { public void verarbeite (String uri) { try { XMLReader parser = XMLReaderFactory.createXMLReader(); parser.setcontenthandler (new MeinContentHandler()); parser.seterrorhandler (new MeinErrorHandler()); // gegen Schema validieren: parser.setfeature(" true); parser.setfeature( " parser.parse(uri); } } catch (IOException e) { System.out.println("Error reading uri: " + e.getmessage()); } catch (SAXException e) { System.out.println("Error parsing uri: " + e.getmessage()); } 155 / 446 XML Extensible Markup Language XML und Java JAXP - SAX } public static void main (String[] args) { if (args.length!= 1) { System.out.println("usage: java MeinSAXParser [XML URI]\n"); System.exit(0); } String uri = args[0]; MeinSAXParser meinsaxparser = new MeinSAXParser (); meinsaxparser.verarbeite (uri); } 156 / 446

79 XML Extensible Markup Language XML und Java JAXP - SAX ContentHandler einfacher: DefaultHandler beerben org.xml.sax.helpers.defaulthandler implementiert ContentHandler ignoriert alle Ereignisse Verwendung: beerbe DefaultHandler implementiere nur die für die Anwendung wesentlichen Ereignisse DefaultHandler Verwendungsmuster import org.xml.sax.helpers.defaulthandler; class MeinContentHandler extends DefaultHandler {... } 157 / 446 XML Extensible Markup Language XML und Java JAXP - SAX Ausblick: SAX-Filterketten Mit Filterketten lassen sich mehrere ContentHandler zu einer Pipeline verketten. Ein Filter-Modul implementiert die XMLFilter-Schnittstelle. Der Nachfolger in der Kette wird als Parent-Filter bezeichnet. Ein XMLFilter agiert wie ein XMLReader, als Eingabe-Schnittstelle wird aber eine Sequenz von SAX-Ereignissen erwartet Die Hilfsklasse XMLFilterImpl ist ein Default-Filter, der die Ereignisse einfach durchreicht (analog zu DefaultHandler). XML XMLReader XMLFilter ContentHandler XMLFilter ContentHandler SAX Ereignisse SAX Ereignisse SAX Ereignisse 158 / 446

80 XML Extensible Markup Language XML und Java JAXP Transformationen Java Transformation API (TrAX): XSLT und mehr Der Clou dieser APIs: API unterstützt XSLT-Transformationen API unterstützt mehrere XML-Repräsentations-Formate: Text-Format (StreamSource, StreamResult) DOM-Baum (DOMSource, DOMResult) SAX-Ereignissequenz (SAXSource, SAXResult) Quellformat und Zielformat sind unabhängig voneinander API unterstützt Format-Transformationen XSLT und Format-Transformation beliebig kombinierbar Transformationen ohne Stylesheets als Format-Adapter : Serialisierung, W3C-DOM JDOM, / 446 XML Extensible Markup Language XML und Java JAXP Transformationen Beispiel: SAX-DOM-Adapter Document doc = domparser.parse(new File("data.xml")); // Quellformat: DOM source Source xmlsource = new DOMSource(doc); // SAX-ContentHandler instanzieren ContentHandler handler = new MyHandler(); // ContentHandler als Transformationsziel einbinden Result result = new SAXResult(handler); // Transformator erzeugen TransformerFactory xfactory = TransformerFactory.newInstance(); Transformer xformer = xfactory.newtransformer(); // Transformation: ruft die Callback-Methoden von MyHandler auf xformer.transform(xmlsource, result); 160 / 446

81 XML Extensible Markup Language XML und Java JAXP Transformationen XSLT-Transformation XSLT-Stylesheet anwenden: transform007.xsl // XSLT-Stylesheet-Objekt aus Datei erzeugen Source xslsource = new StreamSource(new File("transform007.xsl")); // Transformator-Objekt mit XSLT-Transformation erzeugen Transformer xformer = xfactory.newtransformer(xslsource);... ansonsten wie oben... Verwendung eines im XML-Dokument referenzierten Stylesheet Source xslsource = xfactory.getassociatedstylesheet(doc,null,null,null); 161 / 446 XML Extensible Markup Language XML und Java JAXP Transformationen Komplettes Beispiel für XSLT import java.io.file; import javax.xml.transform.source; import javax.xml.transform.result; import javax.xml.transform.transformer; import javax.xml.transform.transformerfactory; import javax.xml.transform.transformerexception; import javax.xml.transform.stream.streamsource; import javax.xml.transform.stream.streamresult; public class SimpleTransformer { public static void main(string[] args) { SimpleTransformer xsltransformer = new SimpleTransformer(); xsltransformer.transform(); } 162 / 446

82 XML Extensible Markup Language XML und Java JAXP Transformationen } public void transform() { try { TransformerFactory tfactory TransformerFactory.newInstance(); Source stylesheet = new StreamSource(new File("xsl/simpleStyle.xsl")); Transformer transformer = tfactory.newtransformer(stylesheet); Source inputdoc = new StreamSource(new File("xml/book.xml")); Result outputdoc = new StreamResult(new File("result/book.html")); transformer.transform(inputdoc, outputdoc); } catch (TransformerException tex) { tex.printstacktrace(); } } 163 / 446 XML Extensible Markup Language XML und Java JAXP Transformationen StAX-Parser (Pull-Parser, Stream-Parser) Merkmale StAX = Streaming API for XML Modernste XML-Parser-Technologie (vgl. JSR 173), ab Java 6 API zum Lesen und Erzeugen von XML Explizite Steuerung des Parsers durch die Anwendung ( Pull -Modell) Zwei Nutzungsmodelle, beides Iteratoren Event (XMLEventReader): next liefert Event -Objekt Cursor (XMLStreamReader): next liefert Ereignisklasse Info: Referenzimplementierung: / 446

83 XML Extensible Markup Language XML und Java JAXP Transformationen StAX-Anwendung mit Event -Modell import javax.xml.stream.*; import java.net.url; import java.io.*; public class XHTMLOutliner { public static void main(string[] args) { if (args.length == 0) { System.err.println("Usage: java XHTMLOutliner url" ); return; } String input = args[0]; try { URL u = new URL(input); InputStream in = u.openstream(); XMLInputFactory factory = XMLInputFactory.newInstance(); XMLStreamReader parser = factory.createxmlstreamreader(in); 165 / 446 XML Extensible Markup Language XML und Java JAXP Transformationen int inheader = 0; for (int event = parser.next(); event!= XMLStreamConstants.END_DOCUMENT; event = parser.next()) { switch (event) { case XMLStreamConstants.START_ELEMENT: if (isheader(parser.getlocalname())) { inheader++; } break; case XMLStreamConstants.END_ELEMENT: if (isheader(parser.getlocalname())) { inheader--; if (inheader == 0) System.out.println(); } break; case XMLStreamConstants.CHARACTERS: if (inheader > 0) System.out.print(parser.getText()); break; case XMLStreamConstants.CDATA: if (inheader > 0) System.out.print(parser.getText()); break; } // end switch } // end while parser.close(); } catch (XMLStreamException ex) { System.out.println(ex); } catch (IOException ex) { System.out.println("IOException while parsing " + input); } } 166 / 446

84 WWW-Grundlagen Teil III WWW-Grundlagen 167 / 446 WWW-Grundlagen 7 Einführung HTTP, HTML, Browser 8 HTTP 9 XHTML / HTML HTML Block- und Inline-Elemente HTML Universalattribute HTML Anker und Hyperlinks HTML Listen HTML Bilder HTML Tabellen HTML Formulare HTML Frames und iframes 10 CSS Cascading Stylesheets Überblick Formatdefinitionen Schriften Listen Klassen Vererbung und Konfliktauflösung Boxenmodell Tabellen Seitengestaltung Mozilla Firebug 11 Javascript Überblick Sprachelemente Prototypen Felder DOM Ereignisse Beispiele Ajax 12 Webserver 168 / 446

85 WWW-Grundlagen Einführung HTTP, HTML, Browser WWW-Grundlagen: HTTP, HTML, Browser Client-Server-Kommunikationsmuster im WWW WWW-Server reagiert auf Client-Requests (HTTP-Requests: GET, POST,... ) liefert beliebige Informationen: Hypertext-Dokumente, Bilder, Videos, Software usw. Hypertextdokumente sind meist HTML-Dokumente WWW-Client fordert Informationen per Request an nimmt die Informationen vom Server entgegen verarbeitet empfangene Informationen abhängig von deren Typ Client-Typen: WWW-Browser, Download-Manager, Crawler usw. 169 / 446 WWW-Grundlagen Einführung HTTP, HTML, Browser Begriffe: Webseite, Homepage, Portal, Website Webseite ( web page ): ein einzelnes HTML-Dokument Website ( Webangebot, Webpräsenz, Internetpräsenz ): Der komplette Internetauftritt einer Firma, Behörde, Kommune, Institution,... oder auch einer Privatperson Homepage: Einstiegsseite einer Website Einführungsseite: Eine der Homepage vorgelagerte Seite mit geringem Informationsgehalt (oft Flash-Spielereien) Webportal: Eine Webseite, die als Einstiegspunkt und Integrationsmechanismus für die Nutzung gebündelter Dienste dient 170 / 446

86 WWW-Grundlagen HTTP HTTP - Hypertext-Transfer-Protokoll Merkmale Kommunikationsmuster: Client-Request Server-Response Zweck: Übertragung von Multimedia-Inhalten (und sonstigen Informationen) HTTP-Server zustandslos: vergisst alle Anfrage-Daten nach Beantwortung Nachrichtenformat (Request- und Response-Nachrichten) Klartext-Nachrichten Nachricht besteht aus Kopf und Rumpf Kopf: Metainformationen (Attributname/Attributwert-Paare) Rumpf: Nutzlast oder leer 171 / 446 WWW-Grundlagen HTTP Kommunikation im WWW 172 / 446

87 WWW-Grundlagen HTTP HTTP im Protokollstack Transportprotokolle auf verschiedenen Ebenen HTTP nach ISO-OSI-Modell Anwendungsschicht, aber: HTTP ist ein höheres Transportprotokoll benutzt selbst TCP als niedere Transportschicht dient für noch höhere Transportprotokolle (z.b. SOAP) als Basis-Transport Kombination HTTP mit SSL/TLS (HTTPS) möglich: Verschlüsselung und Authentifizierung 173 / 446 WWW-Grundlagen HTTP HTTP mit und ohne SSL 174 / 446

88 WWW-Grundlagen HTTP HTTP und Erweiterungen Requesttypen Wichtige Requesttypen: GET, POST Sonstige Requesttypen: HEAD, PUT, DELETE, TRACE, OPTIONS, CONNECT Erweiterungen WebDAV (Web-based Distributed Authoring and Versioning) Standard zur Verwaltung von Dateien auf dem WWW-Server XMLHttpRequest Javascript-API zur Übertragung von XML-Daten über HTTP Ajax (Asynchronous JavaScript and XML) Dynamisches Nachladen von partiellen Webseiten per XMLHttpRequest 175 / 446 WWW-Grundlagen HTTP HTTP-Adressen: URL, URI und Co. URL Uniform Resource Locator identifiziert eine Web-Ressource (Dokument, Dienst,... ) Speicherort der Ressource ergibt sich aus URL Mehrere Varianten: pro Transport ein URL-Schema (http, ftp, https usw.) URL-Beispiele ftp:// mailto:mueller1234@gmx.net file:///home/hg52/docs 176 / 446

89 WWW-Grundlagen HTTP HTTP-URL und seine Bestandteile Aufbau eines URL am Beispiel Schema Rechnername Port serverseitiger Pfad :80 /index.html URL mit Aufruf einer serverseitigen Funktion Funktion Parameter Parameter Parameter search? hl=de & q=url+uri & client=iceweasel 177 / 446 WWW-Grundlagen HTTP URN Uniform Resource Name Ortsunabhängiger Name einer Ressource Als XML-Namespace gebräuchlich Bsp.: urn:oasis:names:tc:saml:2.0:protocol URI Uniform Resource Identifier Oberbegriff für URL und URN Oft keine Unterscheidung zwischen URI und URL IRI Internationalized Resource Identifier Zeichensatzerweiterung auf den Universal Character Set (entspricht etwa dem Unicode-Zeichensatz) 178 / 446

90 WWW-Grundlagen HTTP URLs und DNS Domain Name Service (DNS): weltweit verteilter Verzeichnisdienst. Bestimmung der Transportadressen aus URL mittels DNS Aus HTTP-Adresse (URL) muss Transportadresse bestimmt werden, z.b. IP-Nummer + TCP-Portnummer URLs mit Rechnernamen (www2.meinedomain.de): DNS-Verzeichnisdienst liefert IP-Nummer mailto-urls: DNS liefert Adresse der zuständigen Mailserver URL enthält Portnummer, falls nicht Standardport des Schemas (http: 80, https: 443, mailto: 25, usw.) 179 / 446 WWW-Grundlagen HTTP URLs und DNS 180 / 446

91 WWW-Grundlagen HTTP HTTP-GET: Google-Suchanfrage nach XML parser Anfrage-Header GET /search?q=xml+parser HTTP/1.0 User-Agent: keinbesonderer Host: Antwort-Header HTTP/ OK Cache-Control: private Content-Type: text/html; charset=iso Set-Cookie: PREF=ID=f4000a82f78b4425:TM= :LM= expires=fri, 23-Apr :45:22 GMT; path=/; domain=.google.de Set-Cookie: SS=Q0=eGVyY2VzIGRvd25sb2Fk; path=/search Date: Wed, 23 Apr :45:22 GMT Server: gws Connection: Close 181 / 446 WWW-Grundlagen HTTP Anfrage-Rumpf: bei GET leer! Antwort-Rumpf: HTML-Dokument <html> <head> <meta http-equiv=content-type content="text/html;charset=iso "> <title>xml parser - Google-Suche</title> </head> <body>... </body> <html> 182 / 446

92 WWW-Grundlagen HTTP GET-Request versus POST-Request GET-Variante: Parameter im URL Kopf: GET /wiki/spezial:search?search=katzen&go=artikel HTTP/1.0 Host: de.wikipedia.org POST-Variante: Parameter im Rumpf Kopf: Rumpf: POST /wiki/spezial:search HTTP/1.0 Host: de.wikipedia.org Content-Type: application/x-www-form-urlencoded Content-Length: 24 search=katzen&go=artikel 183 / 446 WWW-Grundlagen HTTP HTTP-Analyse mit Firebug 184 / 446

93 WWW-Grundlagen HTTP Statuscodes in der HTTP-Antwort Server liefert in jeder Antwort Statuscode 1xx Informationen Bearbeitung der Anfrage läuft noch 2xx Erfolgreiche Operation Bearbeitung der Anfrage normal ausgeführt 3xx Umleitung weitere Schritte des Clients erforderlich 4xx Client-Fehler Fehler im Verantwortungsbereich des Clients 5xx Server-Fehler Fehler im Verantwortungsbereich des Servers 185 / 446 WWW-Grundlagen HTTP Cookies: Request-übergreifende Info für den Server Problem: HTTP-Server braucht Request-Zuordnung zu einer Sitzung (Konversation mit mehreren HTTP-Nachrichten) zu einem Benutzerkonto (Benutzerdaten-Zuordnung ohne Login) zu einem Warenkorb (Onlineshop) Lösung: Identifizierende Cookies hin- und herschicken Server generiert Cookie (z.b. eindeutige Sitzungsnummer) schickt Cookie im Kopf der HTTP-Antwort Browser speichert Cookie permanent (Dateisystem) schickt Cookie bei jedem Folgerequest wieder an den Server zurück Server kann anhand des Cookies den Request zuordnen (z.b. zu einer aktiven Sitzung) 186 / 446

94 WWW-Grundlagen HTTP Aufbau von Cookies Cookie = Name + Wert + Attribute Wert: beliebige Zeichenkette (bis zu 4 KB Länge) Optionale Attribute (Auswahl): Verfallszeit: Max-Age, expires Gültigkeits-Domäne: Domain Gültigkeits-Pfad: Path Beispiel einer HTTP-Antwort mit Cookie HTTP/ OK Set-Cookie: SessionID=" "; expires=tue, 29-Mar :30:42 GMT; Max-Age= ; Path=/servlet/warenkorb; Version="1" 187 / 446 WWW-Grundlagen HTTP WWW-Kommunikation mit Umleitung und Nachladen 188 / 446

95 WWW-Grundlagen HTTP Abwicklung eines HTTP-Request durch Webbrowser Einfacher Abruf eines HTML-Dokuments Cache prüfen, ob Dokument schon vorhanden Ziel-URL parsen und Cookie-Datenbasis durchsuchen: Welche Cookies passen bzgl. Domäne und Pfad zum Ziel-URL? Verfalldatum der Cookies beachten Kopf-Daten mit Cookies zusammenstellen Kopf-Daten und ggf. Anfrage-Rumpf an Server verschicken Antwort lesen, ggf. Fehlerbehandlung abhängig vom Antwort-Status Bei Status URL-Umleitung : erneute Anfrage 189 / 446 WWW-Grundlagen HTTP nach Empfang des HTML-Dokuments: HTML-Dokument parsen benötigte weitere Daten nachladen (jeweils Cache und Cookies prüfen): CSS-Formatvorlagen integrierte Bilder separate JavaScript-Dateien... Javascript onload-aktionen ausführen, dabei Benutzereinstellungen wie URL- oder Domänen-spezifische Popup-Verbote berücksichtigen Formatvorlagen parsen und interpretieren, Konflikte auflösen Inhalt rendern 190 / 446

96 WWW-Grundlagen HTTP Zusätzliche Komplexität möglich: SSL-gesicherte Verbindungen: Zertifikatsprüfung, Sperrlistenprüfung Login-Vorgang bei beschränkt zugänglichen Ressourcen abwickeln asynchrone Aktivitäten (AJAX) Client-seitige DOM-Modifikationen: XSLT-Transformationen, Javascript Applet-Ausführung... Ein HTML-Download ist in der Regel keine einfache Aktion! 191 / 446 WWW-Grundlagen XHTML / HTML XHTML/HTML Hypertext Markup Language XHTML und HTML sind W3C-Standards XHTML XML-Sprache striktere Syntaxanforderungen als HTML Versionen und Varianten HTML 4: sehr weit verbreitet, seit 1997, derzeit Version 4.01 XHTML 1: verbreitet, Weiterentwicklung von HTML 4.01, derzeit Version 1.1 XHTML 2: Entwicklung 2009 eingestellt HTML 5: zukünftiger Standard, nicht fertig, soll Unterschiede zwischen HTML und XHTML verringern 192 / 446

97 WWW-Grundlagen XHTML / HTML XHTML-Beispiel <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" " <html xmlns=" <head> <title>meine Homepage</title> </head> <body> <h1> Überschrift </h1> <p> Ein Text-Abschnitt. </p> <p> Ein weiterer Text-Abschnitt. </p> <ul> <li> Ein Listenelement. </li> <li> Und noch eines. </li> </ul> </body> </html> 193 / 446 WWW-Grundlagen XHTML / HTML Unterschiede XHTML / HTML (1/2) MIME-Typen für korrekte Interpretation: HTML: text/html XHTML: application/xhtml+xml XML-Deklaration am Anfang: <?xml version="1.0" encoding="..."?> DTD-Referenz für XHTML 1.0: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" " Namensraum für html-element zwingend: <html xmlns=" </html> 194 / 446

98 WWW-Grundlagen XHTML / HTML Unterschiede XHTML / HTML (2/2) bei XHTML Kleinschreibung von Element- und Attributnamen head- und body-elemente zwingend Bei allen Elementen Abschluss-Tags erforderlich (z.b. img, br, li, p, body) Attributwerte immer in Anführungszeichen Bei Verweisen statt name-attribut id-attribut verwenden 195 / 446 WWW-Grundlagen XHTML / HTML XHTML oder HTML? Vorteile durch XML-Konformität Verarbeitung mit XML-Software möglich Einbettung in andere XML-Daten möglich ( Dateninsel, siehe nachfolgendes Beispiel) Nachteile von XHTML Mehr Schreibaufwand durch striktere Syntax Kompatibilität mit HTML 5 noch unklar 196 / 446

99 WWW-Grundlagen XHTML / HTML Beispiel: XHTML-Dateninsel in einem XML-Dokument <?xml version="1.0" encoding="iso "?> <buch xmlns=" <kapitel nummer="1"> <html xmlns=" <head><title>einleitung</title></head> <body> <h1>einleitung</h1> <p>das Buch beginnt mit diesem Text...</p> </body> </html> </kapitel> </buch> 197 / 446 WWW-Grundlagen XHTML / HTML HTML-Dokumentstruktur DOCTYPE-Deklaration (optional) Angabe zur verwendeten HTML-Version (zur Validierung gegen die Versions-spezifische DTD) Kopf (<head>) Titel des Dokuments (<title>) z.b. vom Browser genutzt als Fenstertitel/Reiterbeschriftung/Lesezeichen von Suchmaschinen für Index-Eintrag genutzt Dokumentenbasis-URL (<base>) Meta-Informationen (<meta>) Information für Suchmaschinen HTTP-Konfiguration Rumpf (body) Inhalt: Text mit eingebetteten Bildern und Hyperlinks 198 / 446

100 WWW-Grundlagen XHTML / HTML Meta-Tags im HTML-Kopf <meta... /> Suchmaschinen-Info, HTTP-Konfiguration <head> <title> Johannes Brahms Homepage </title> <base href=" /> <meta name="keywords" content="johannes Brahms,Komponist,Biographie" /> <meta name="title" content="johannes Brahms Homepage" /> <meta name="author" content="johannes Brahms" /> <meta name="description" content="lebensdaten von Johannes Brahms. " /> <meta name="robots" content="index,nofollow" /> <meta name="revisit" content="after 7 days" /> <meta http-equiv="expires" content="86400" /> <meta http-equiv="pragma" content="no-cache" /> <meta http-equiv="refresh" content="5; url=brahms-homepage.html" /> </head> (mehr dazu: / 446 WWW-Grundlagen XHTML / HTML HTML Block- und Inline-Elemente HTML-Rumpf: Block- und Inline-Elemente Blockelement zur Strukturierung des Inhalts erstreckt sich immer über komplette Zeilen Beispiele: Überschrift, Paragraph, Liste, Listenlement, Tabelle, Formular Inline-Element Auszeichnung von Bereichen innerhalb eines Blocks bzw. einer Zeile Beispiele: Fettschrift, Hyperlink 200 / 446

101 WWW-Grundlagen XHTML / HTML HTML Block- und Inline-Elemente Wichtige Block-Elemente Überschriften <h1>,..., <h6> h=heading Zeilenumbruch <br/> br=break Paragraph <p>...</p> p=paragraph Vorformatierter Text <pre>... </pre> pre=preformatted text Trennlinie <hr/> hr=horizontal rule Zitatblock <blockquote> CSS-Container <div> Gruppierungselement für Zuordnung von CSS-Attributen <div>-beispiel <div style="background:red; font-size:10px;">... </div> 201 / 446 WWW-Grundlagen XHTML / HTML HTML Block- und Inline-Elemente Wichtige Inline-Elemente stark betont <strong> früher <b> (boldface) betont <em> emphasized, früher <i> (italic) Teletype <tt> nicht proportionale Schrift hochgestellt <sup> superscripted tiefgestellt <sub> subscripted Inline-Zitat <cite> CSS-Container <span> Inline-Version von <div> 202 / 446

102 WWW-Grundlagen XHTML / HTML HTML Universalattribute Universalattribute Ein Universalattribut ist für (fast) alle Elemente definiert class id style title CSS-Klasse für Präsentationsattribute Eindeutiger Bezeichner für Referenzen Inline-CSS-Stil-Definition Tooltip-Text (Anzeige im Browser, wenn der Mauszeiger auf Element zeigt) Element mit Universalattributen <div class="addresscontent" title="lageplan und Anfahrt"> Gebäude I, Raum 122 <br/> Wiesenstraße 14 <br/> Gießen </div> 203 / 446 WWW-Grundlagen XHTML / HTML HTML Anker und Hyperlinks Anker-Element und Hyperlinks Anker-Element <a> definiert auswählbaren Verweis (Hyperlink) und/oder ein Verweisziel Inhalt: Text oder Bild Hyperlink verweist auf eine durch einen URL adressierte WWW-Ressource wird als href -Attribut des Anker-Elements angegeben (href=hyper reference) Beispiel: Anker mit Hyperlink <a href=" Fachbereich MNI </a> 204 / 446

103 WWW-Grundlagen XHTML / HTML HTML Anker und Hyperlinks Hyperlinks Hyperlink-Auswahl (z.b. Mausklick) löst Aktion aus: bei HTTP-URL: HTTP GET-Request bei Datei-URL (file:///home/hg52): Dateianzeige mailto-url: Aufruf eines Mailprogramms ftp-url: Aufbau einer FTP-Verbindung Relative Pfade als URL (href="bilder/bild1.png") beziehen sich auf die Dokumentenbasis Basis wird aus URL des aktuellen HTML-Dokuments bestimmt Basis kann mit <base> im Kopf explizit gesetzt werden 205 / 446 WWW-Grundlagen XHTML / HTML HTML Anker und Hyperlinks Beispiel: Anker und Dokumentenbasis Datei: ibs/index.html <head>... <base href=" /> </head> <body>... Hier finden Sie das <a href="skript/skript.pdf" title="skript als PDF">Skript</a>... Aktionen Falls Maus auf Anker: Tooltip-Popup Skript als PDF Bei Mausklick auf Anker: HTTP GET-Request mit URL / 446

104 WWW-Grundlagen XHTML / HTML HTML Anker und Hyperlinks Anker als Verweisziel Verweisziel-Anker und Hyperlink-Anker <h1> <a id="kapitel_01"> Kapitel 1 - Übersicht </a> </h1>... <h1> <a id="kapitel_02"> Kapitel 2 - Einleitung </a> </h1>... <a href="#kapitel_01"> zurück zur Übersicht </a>... jedes Kapitel durch id direkt auswählbar URL-Syntax: Dokument-URL#Anker-ID Anker gleichzeitig als Verweis und Verweisziel nutzbar 207 / 446 WWW-Grundlagen XHTML / HTML HTML Listen Aufzählungen / Listen Verschiedene Layout-Varianten: ul, ol, dl Element Bedeutung englisch Erläuterung <ul> unnummerierte Liste unordered list <ol> nummerierte Liste ordered list Elemente ab 1 nummeriert <li> Listenelement list item Element von ul- ond ol-liste <dl> Definitionsliste definition list Listenelemente jeweils: Begriff und Erklärung <dt> Begriff defined term <dd> Erklärung definition data 208 / 446

105 WWW-Grundlagen XHTML / HTML HTML Bilder Bilder im HTML-Dokument Verwendung von Bildern in HTML im normalen Textfluss als anklickbare Hyperlinks als Aufzählungspunkt für unnummerierte Listen Bild-Einbettung mit <img> <img src="bilder/landschaft.jpg" width="300px" height="200px" alt="landschaftsbild" title="toskana im Sommer"/> Unbedingt Alternativ-Text ( alt -Attr.) angeben! (Textbrowser, Screenreader, keine Bilder wegen geringer Bandbreite,... ) 209 / 446 WWW-Grundlagen XHTML / HTML HTML Tabellen HTML-Tabellen Tabellen, Zeilen und Zellen Eine Tabelle ist eine Liste von Tabellenzeilen Eine Tabellenzeile ist eine Liste von Zellen Tabelle: <table>-element Zeile: <tr>-elementen (tr=table row) Zelle: <td>-element (table data) Spaltenüberschrift: <th>-element (table heading) statt <td> 210 / 446

106 WWW-Grundlagen XHTML / HTML HTML Tabellen Mehrzeilige und mehrspaltige Zellen Zelle kann sich über beliebig viele Zeilen und/oder Spalten erstrecken Zelle über 3 Zeilen: <td rowspan="3"> Zelle über 4 Spalten: <td colspan="4"> Tabellen-Layout HTML-Attribute für Layout: width, border, cellspacing usw. Bei CSS-Verwendung sind diese Attribute unnötig! 211 / 446 WWW-Grundlagen XHTML / HTML HTML Tabellen Beispiel: Einfache Tabelle HTML-Quelltext <table border="1"> <tr> <th colspan="2"> Die Menschheit besteht aus </th> </tr> <tr> <td>eseln</td> <td>affen</td> </tr> </table> Anzeige im Browser Die Menschheit besteht aus Eseln Affen 212 / 446

107 WWW-Grundlagen XHTML / HTML HTML Formulare HTML-Formulare Ein HTML-Formular erfasst Daten für den Webserver Übermittlung durch GET- oder POST-Requests möglich Datenübermittlung: Liste mit Name=Wert -Paaren Formular-Beispiel <form method="get" action=" <input type="hidden" name="hl" value="de" /> <input type="text" name="q" value="" size="40" maxlength="256" /> <input type="submit" name="btng" value="suchen" /> </form> HTTP-Request bei Eingabe Katze und Klick auf Suchen : GET / 446 WWW-Grundlagen XHTML / HTML HTML Formulare Eingabefelder in Formularen Texteingaben kurze Texteingaben: <input type="text"> <input type="text" name="land" value="deutschland" size="40" /> Passworteingaben: <input type="password"...> größere Textbereiche: <textarea>-element <textarea name="anmerkungen" cols="50" rows="6" /> Versteckte Felder z.b. zur Übertragung von Sitzungsinformation (statt Cookies): <input type="hidden"...> 214 / 446

108 WWW-Grundlagen XHTML / HTML HTML Formulare Formular-Schaltflächen Schaltflächen für Formular-Aktionen Versenden des Formulars: <input type="submit"...> Rücksetzen des Formulars: <input type="reset"...> Javascript-Aktion: <input type="button"...> 215 / 446 WWW-Grundlagen XHTML / HTML HTML Formulare Auswahl-Elemente Auswahllisten: <select> Auswahl von einem oder mehreren Werten aus Liste Vorselektion möglich Problem: Benutzer kennt sich oft nicht mit Mehrfachselektion aus Beispiel mit Mehrfachselektion <select name="lieblingsgerichte" size="3" multiple="multiple"> <option value="pizza">pizza</option> <option selected="selected">linseneintopf</option> <option selected="selected">erbseneintopf</option> </select> 216 / 446

109 WWW-Grundlagen XHTML / HTML HTML Formulare Auswahl mit Radiobuttons und Checkboxen Radiobutton (Einfachauswahl): <input type="radio"> <input type="radio" name="zahlung" value="visa" />Visa<br/> <input type="radio" name="zahlung" value="paypal" />Paypal<br/> <input type="radio" name="zahlung" value="lastschrift" />Lastschrift<br/> Checkbox (Mehrfachauswahl): <input type="checkbox"> <input type="checkbox" name="check1" value="milch">milch<br> <input type="checkbox" name="check2" value="butter" checked>butter<br> <input type="checkbox" name="check3" value="käse">käse<br> 217 / 446 WWW-Grundlagen XHTML / HTML HTML Formulare Beispiel-Formular mit allerlei Eingabefeldern <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>formulartest</title> </head> <body> <form method="get"> <strong>textfeld </strong><br/> <input type="text" name="textfeld" value="anfangstext" size="20" /> <p><strong>text-area </strong><br/> <textarea name="bereich" cols="20" rows="3"> Anfangstext 2 </textarea> <p><strong>select mit Mehrfachauswahl </strong><br/> <select name="lieblingsgerichte" size="4" multiple="multiple"> <option>pizza</option> <option>nudeln</option> <option selected="selected">linseneintopf </option> <option selected="selected">erbseneintopf </option> </select> <div style="position:relative"> <strong>3 Radio-Buttons</strong><br/> <input type="radio" name="zahlung" value="visa"/>visa<br/> <input type="radio" name="zahlung" value="paypal" />Paypal<br/> <input type="radio" name="zahlung" value="lastschrift" />Lastschrift<br/> <div style= "position:absolute;left:50mm;width:40mm;"> <strong>3 Checkboxen</strong><br/> <input type="checkbox" name="check1" value="milch">milch<br> <input type="checkbox" name="check2" value="butter" checked>butter<br> <input type="checkbox" name="check3" value="käse">käse<br> </div> </div> <p> <input type="submit" name="submit" value="submit-schaltfläche" /> <input type="reset" name="reset" value="reset-schaltfläche" /> </form> </body> </html> 218 / 446

110 WWW-Grundlagen XHTML / HTML HTML Formulare Beispiel-Formular in der Browseransicht 219 / 446 WWW-Grundlagen XHTML / HTML HTML Frames und iframes HTML-Frames Frames: Aufteilung des Browserfensters Frameset teilt Fenster in mehrere Teilbereiche z.b Kopfbereich, Navigationsbereich, Informationsbereich Browser verarbeiten Frames nebenläufig Verwendung verletzt Prinzip der Trennung von Inhalt und Form Manche Browser unterstützen Frames nicht (Smartphones) Verweise funktionieren oft nicht richtig (Problem: Verweis auf Frameset oder auf Einzel-Inhalt?) Fazit: Problematisch, besser nicht verwenden! Alternativen: <iframe>- und <div>-elemente/css 220 / 446

111 WWW-Grundlagen XHTML / HTML HTML Frames und iframes Eingebette Frames (iframe-element) Eingebettete Frames ermöglichen wie Frames die integrierte Darstellung mehrerer HTML-Seiten im selben Browserfenster Im Gegensatz zu Frames keine starre Fensteraufteilung, sondern Integration in den Textfluss wie bei eingebetteten Grafiken Typische Nutzung: Integration von Inhalten anderer Anbieter in das Webangebot (mehr / 446 WWW-Grundlagen CSS Cascading Stylesheets Überblick Cascading Stylesheets (CSS): HTML-Formatvorlagen Motivation: Trennung von Inhalt und Präsentation Inhalt + Struktur HTML-Datei Präsentationseigenschaften CSS-Formatvorlage CSS: Layout-Vorschriften für HTML-Elemente Schriftart /-größe/-farbe Hintergrundgestaltung Positionierung von Elementen Textfluss Tabellen-Layout Listengestaltung usw. 222 / 446

112 WWW-Grundlagen CSS Cascading Stylesheets Überblick Separate und eingebettete CSS-Definitionen Wo stehen CSS- Stylesheets? style-element im HTML-Kopf (für Dokument-Layout) style-attribut eines Elements (Element-Layout) separate CSS-Datei (Website-Layout) Verwendung der selben CSS-Datei(en) für alle HTML-Dokumente Für ein Webangebot können alternative Stylesheets angeboten werden, z.b. für Geräte mit niedriger Auflösung wie Smartphones 223 / 446 WWW-Grundlagen CSS Cascading Stylesheets Überblick Beispiel: CSS-Definitionen im HTML-Kopf und im Element Schriftfarbe und Zeichengröße für Überschriften <html...> <head> <title>... </title> <style type="text/css"> h1 { color:red; font-size:48px; } </style> </head> <body>... <h1> Rote Schrift </h1> <h2 style="color:blue; font-size:32px;" > Blaue Schrift </h2>... </body> </html> 224 / 446

113 WWW-Grundlagen CSS Cascading Stylesheets Überblick CSS-Definitionen in separater Datei: <link>-element CSS-Datei: meinformat.css HTML-Datei h1 { color:red; font-size:48px; } <html...> <head> <title>... </title> <link rel="stylesheet" type="text/css" href="meinformat.css" /> </head> <body>... <h1> Rote Schrift </h1>... </body> </html> 225 / 446 WWW-Grundlagen CSS Cascading Stylesheets Formatdefinitionen CSS-Formatdefinition: Selektor + Deklaration Selektor bestimmt Anwendungsbereich Einfache Auswahlkriterien Elementtyp h1, div, * Element-ID #einleitung Klasse.kapitel Pseudo-Klasse :first-child, :hover, :visited Einfache Selektoren z.b. div.kapitel, a:visited, h1#einleitung:hover. Komplexe Selektoren mit Operatoren z.b. ul li, td+td, p.kapitel[align="left"] 226 / 446

114 WWW-Grundlagen CSS Cascading Stylesheets Formatdefinitionen Deklarationen Deklarationen bestehen aus Paaren der Form Attributname:Attributwert Beispiele: { color:red; font-size:48px; } Deklarationen können für den Fall von Konflikten als wichtig gekennzeichnet werden, z.b. { font-size:1em!important; } Mehrere Selektoren können, durch Komma getrennt, an eine Deklaration gebunden werden Beispiel: h1, h2 { color:red; font-size:48px; } 227 / 446 WWW-Grundlagen CSS Cascading Stylesheets Formatdefinitionen CSS-Beispiel <html...> <head> <title>... </title> <!-- einbinden externer Formatdefinitionen --> <link rel="stylesheet" type="text/css" href="formate.css"> <!-- zusätzlich dokumentenspezifische Formatdefinitionen --> <style type="text/css"> body { background-color:#ffffcc; margin-left:100px; } * { color:blue; } h1 { font-size:300%; color:#ff0000; font-style:italic; border-bottom:solid thin black; } p,li { font-size:110%; line-height:140%; font-family:helvetica,arial,sans-serif; letter-spacing:0.1em; word-spacing:0.3em; } </style> </head> <body>... </body> </html> 228 / 446

115 WWW-Grundlagen CSS Cascading Stylesheets Formatdefinitionen Selektoren-Beispiele Selektor div p div > p div + p div>*>*>p p[align] p[align=center] body:first-child td:first-child + td #myid form#myid td[abbr~=berlin] *[lang =en].kapitel div.kapitel :hover selektierte Elemente p-element im Teilbaum unterhalb von div-element p-element als Kind eines div-elements p-element direkt hinter div-element p-element drei Ebenen unterhalb von div-element p-element mit align-attribut p-element mit align=center erstes Kind-Element eines body-elements td-elemente in der 2. Spalte einer Tabelle jedes Element mit der ID myid form-element mit der ID myid td-element, Berlin kommt im abbr-attribut vor beliebiges Element, Attribut lang beginnt mit en alle Elemente der benutzerdefinierten Klasse kapitel alle div-elemente der benutzerdefinierten Klasse kapitel Pseudo-Klasse für alle Elemente unter Mauszeiger 229 / 446 WWW-Grundlagen CSS Cascading Stylesheets Schriften Gestaltungselemente: Schriften Serifenschriften haben unten rechts an den Buchstaben kleine Häkchen sind für hohe Auflösung (Bücher, Zeitungen) gut geeignet Beispiele: Times, Times New Roman, Georgia Serifenlose Schriften sind auf Bildschirmen mit niedriger Auflösung besser lesbar Beispiele: Helvetica, Arial, Verdana Monospace-Schriften (im Gegensatz zu Proportionalschriften) haben für jedes Zeichen die gleiche Breite werden z.b. für Programmtexte gerne verwendet Beispiel: Courier 230 / 446

116 WWW-Grundlagen CSS Cascading Stylesheets Schriften Schriften in CSS Attribut Bedeutung Beispiele font-family Schriftfamilie, -art sans-serif, helvetica font-size Größe xx-large, smaller, 120%, 11pt font-weight Gewicht ( Fettigkeit ) bold, lighter, 200 font-style Neigung italic, oblique, normal color Farbe blue, #c33b00 Angabe von Alternativ-Schriften möglich, z.b. font-family: verdana, helvetica, arial, sans-serif; (mehr dazu: / 446 WWW-Grundlagen CSS Cascading Stylesheets Schriften Beispiel: Paragraphen in Verdana p { font-size: small; font-family: Verdana, sans-serif; font-weight: bolder; font-style: italic; } Kurzschreibweise (festgelegte Reihenfolge der Attribute) p { font: italic bolder small Verdana, sans-serif; } 232 / 446

117 WWW-Grundlagen CSS Cascading Stylesheets Listen Gestaltungselemente: <ul>-listen Listentrenner Beispiel Standard: gefüllte schwarze Kreise Andere Symbole: list-style-type: circle, disc, square, none Grafik: list-style-image (Symbol als Ersatzdarstellung möglich) ul { list-style-image:url("bilder/kleines-herz.gif"); list-style-type:square; } Kurzform ul { list-style:url("bilder/kleines-herz.gif") square; } 233 / 446 WWW-Grundlagen CSS Cascading Stylesheets Klassen Benutzerdefinierte CSS-Klassen Universalattribut class <style type="text/css">.neueseite {... } h1.hinweis {... }... </style>... <h1 class="neueseite Hinweis"> CSS-Klassen des <h1>-elements: NeueSeite h1.hinweis globale Klasse für alle Elemente Unterklasse für <h1>-elemente 234 / 446

118 WWW-Grundlagen CSS Cascading Stylesheets Vererbung und Konfliktauflösung Vererbung von Attributen CSS-Attribute eines Elements werden prinzipiell an die Nachfolger im Dokumentenbaum vererbt Ein Element kann geerbte Attribute aber überschreiben: <div style="color:red;"> <ul> <li> Schriftfarbe rot, vom div-element geerbt</li> <li style="color:green;"> Schriftfarbe grün </li> </ul> </div> Die genauen Vererbungsregeln sind recht komplex (mehr dazu: / 446 WWW-Grundlagen CSS Cascading Stylesheets Vererbung und Konfliktauflösung Konfliktauflösung / Kaskadenmodell Neben serversseitigen CSS-Definitionen des Web-Autors (Autoren-Stylesheet) berücksichtigt ein Browser Benutzer-Stylesheets (z.b. Firefox: userchrome.css) Benutzer-Voreinstellungen, sogenannte Browser-Stylesheets Falls auf ein Element mehrere Selektoren zutreffen, kann es zu widersprüchlichen Attribut-Deklarationen kommen. Der Algorithmus zur Konfliktauflösung heißt Kaskade. 236 / 446

119 WWW-Grundlagen CSS Cascading Stylesheets Vererbung und Konfliktauflösung Prinzipien des Kaskade-Algorithmus Quelle der Deklaration und important -Kennzeichnung Priorität Quelle der Deklaration Art der Deklaration höchste Benutzer-Stylesheet!important Autoren-Stylesheet!important Autoren-Stylesheet normal Benutzer-Stylesheet normal geringste Browser-Stylesheet Spezifischer Selektor vor einem allgemeineren h1.kapitel ist spezifischer als h1 oder.kapitel h1#kapitel1 ist wegen der ID spezifischer als h1.kapitel (mehr dazu in / 446 WWW-Grundlagen CSS Cascading Stylesheets Boxenmodell Boxenmodell für Blockelemente Jedes Blockelement belegt Rechteck im Browserfenster besteht aus Rahmen und Inhaltsbereich. Größe des Inhaltsbereichs: width und height Innenabstand (padding): Abstand zwischen Rahmen und Inhaltsbereich. Außenabstand (margin): Abstand des Blockelements zu seiner Umgebung Abstände und Rahmenbreite für jede Seite separat spezifizierbar (border-left, margin-bottom, padding-top usw.) Bei angrenzenden Blöcken wird der jeweils größere Außenabstand verwendet 238 / 446

XML-Verarbeitung. XPath XSL die extensible Stylesheet Language. Torsten Schaßan SCRIPTO Modul 4: EDV Wolfenbüttel 25.-29.6.2012.

XML-Verarbeitung. XPath XSL die extensible Stylesheet Language. Torsten Schaßan SCRIPTO Modul 4: EDV Wolfenbüttel 25.-29.6.2012. XML-Verarbeitung XPath XSL die extensible Stylesheet Language Folie 1 Was ist XSL? - Mehrere Komponenten: - XSLT Transformations - XSL-FO Formatting Objects - XPath - (XML-Schema) - Ausgabeformate: - XML,

Mehr

Transformation von XML-Dokumenten. IDE SummerSchool 2013, Chemnitz

Transformation von XML-Dokumenten. IDE SummerSchool 2013, Chemnitz Transformation von XML-Dokumenten Folie 1 Was ist XSL politisch? XSL ist eine eigene Technik. Zum Publizieren (Transformieren) von Dokumenten. Früher gab es dafür Verlage und Schriftsetzer, um gute Inhalte

Mehr

Internetbasierte Systeme SS 2009 (Version 1.19.0 vom 24.6.2009)

Internetbasierte Systeme SS 2009 (Version 1.19.0 vom 24.6.2009) Internetbasierte Systeme SS 2009 (Version 1.19.0 vom 24.6.2009) Michael Jäger 24. Juni 2009 Internet-basierte Systeme Offizieller Titel: Internet-basierte Geschäftssysteme Die Lehrveranstaltung behandelte

Mehr

Datenbanksysteme. XML und Datenbanken. Burkhardt Renz. Sommersemester 2015. Fachbereich MNI Technische Hochschule Mittelhessen

Datenbanksysteme. XML und Datenbanken. Burkhardt Renz. Sommersemester 2015. Fachbereich MNI Technische Hochschule Mittelhessen Fachbereich MNI Technische Hochschule Mittelhessen Sommersemester 2015 Übersicht Semistrukturierte Daten Dokumenttypdefinition XML-Schema XML aus Datenbank konstruieren XML in Datenbank speichern Merkmale

Mehr

XML 1. Einführung, oxygen. Ulrike Henny. ulrike.henny@uni-koeln.de. IDE Summer School 2013, Chemnitz

XML 1. Einführung, oxygen. Ulrike Henny. ulrike.henny@uni-koeln.de. IDE Summer School 2013, Chemnitz XML 1 Einführung, oxygen Ulrike Henny ulrike.henny@uni-koeln.de XML extensible Markup Language Was ist XML? XML-Grundlagen XML-Editoren, oxygen HTML + CSS XPath Übungen Literatur Folie 2 Was ist XML? extensible

Mehr

XSL Templates. Mit Templates arbeiten. XSL Templates

XSL Templates. Mit Templates arbeiten. XSL Templates XSL Templates Mit Templates arbeiten Innerhalb von XSLT werden Templates verwendet. Ein Template ist eine Vorlage für die Transformation bestimmter Knoten. Diese Knoten können Elemente, Attribute oder

Mehr

CARL HANSER VERLAG. Dirk Ammelburger XML. Grundlagen der Sprache und Anwendungen in der Praxis 3-446-22562-5. www.hanser.de

CARL HANSER VERLAG. Dirk Ammelburger XML. Grundlagen der Sprache und Anwendungen in der Praxis 3-446-22562-5. www.hanser.de CARL HANSER VERLAG Dirk Ammelburger XML Grundlagen der Sprache und Anwendungen in der Praxis 3-446-22562-5 www.hanser.de 1 1.1 Einleitung... 2 Über dieses Buch... 3 1.2 Für wen ist das Buch gedacht?...

Mehr

Datenaustauschformate. Datenaustauschformate - FLV

Datenaustauschformate. Datenaustauschformate - FLV Datenaustauschformate FLV-Dateien CSV-Dateien XML-Dateien Excel-Dateien Access- Backupdateien Günter M. Goetz 108 Datenaustauschformate - FLV Fixed Length Values Repräsentation einer Tabelle als 'Flat-File'

Mehr

Einführung in XML. Seminarunterlage. Version 3.05 vom

Einführung in XML. Seminarunterlage. Version 3.05 vom Seminarunterlage Version: 3.05 Version 3.05 vom 8. März 2017 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen oder

Mehr

Wege zur Anzeige. XSL die extensible Stylesheet Language. Wege zur Anzeige. Folie 1. Institut für Dokumentologie und Editorik

Wege zur Anzeige. XSL die extensible Stylesheet Language. Wege zur Anzeige. Folie 1. Institut für Dokumentologie und Editorik XSL die extensible Stylesheet Language Folie 1 Spring School 14. bis 18. März 2011 Einführung - Warum XML? Warum TEI? Trennung von Form und Inhalt Eine Quelle, viele verschiedene Ausgabeformate - Standardstylesheets

Mehr

XML Schema vs. Relax NG

XML Schema vs. Relax NG XML Schema vs. Relax NG p. 1/2 XML Schema vs. Relax NG Semistrukturierten Daten 1 Präsentation der Gruppe 2 XML Schema vs. Relax NG p. 2/2 Wozu XML Schema? W3C Empfehlung zur Definition von XML-Dokumentstrukturen

Mehr

2. XML 2.1 XML 1.0 und XML Schema. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit

2. XML 2.1 XML 1.0 und XML Schema. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit XML- und Webservice- Sicherheit 2. XML 2.1 XML 1.0 und XML Schema Gliederung 1. XML 1.0 2. XML Namespaces: URI, URL und URN 3. XML Schema Literatur: A. Tanenbaum, Computer Networks. E. R. Harold and W.

Mehr

Klausur zur Vorlesung Einführung in XML

Klausur zur Vorlesung Einführung in XML Klausur zur Vorlesung Einführung in XML MUSTERLÖSUNG Nachname: Vorname: Matr.Nr.: Studiengang: Bearbeiten Sie alle Aufgaben! Hilfsmittel sind nicht zugelassen. Die Bearbeitungszeit ist 120 Minuten. Aufgabe

Mehr

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 7. 1. 2014 Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 7. 1. 2014 Kennnr. Matrikelnr. Familienname Vorname Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 7. 1. 2014 Kennnr. Matrikelnr. Familienname Vorname Arbeitszeit: 100 Minuten. Aufgaben sind auf den Angabeblättern zu lösen; Zusatzblätter werden nicht

Mehr

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 2. 12. 2013 Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 2. 12. 2013 Kennnr. Matrikelnr. Familienname Vorname Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 2. 12. 2013 Kennnr. Matrikelnr. Familienname Vorname Arbeitszeit: 100 Minuten. Aufgaben sind auf den Angabeblättern zu lösen; Zusatzblätter werden nicht

Mehr

IT-Zertifikat: Daten- und Metadatenstandards. Transformation von XML-Dokumenten mit XSLT (und XPATH) XSLT kurz und knackig. XSLT und die Praxis

IT-Zertifikat: Daten- und Metadatenstandards. Transformation von XML-Dokumenten mit XSLT (und XPATH) XSLT kurz und knackig. XSLT und die Praxis IT-Zertifikat: Daten- und Metadatenstandards Transformation von XML-Dokumenten mit XSLT (und XPATH) XSLT kurz und knackig I. Was ist XSLT? XSL Transformation (XSLT) ist eine Programmiersprache zur Transformation

Mehr

Verwaltungsaufgaben lösen mit XML und L A T E X

Verwaltungsaufgaben lösen mit XML und L A T E X Verwaltungsaufgaben lösen mit XML und L A T E X Uwe Siart T E X-Stammtisch München tutorien@siart.de Erstellt: 11. März 2003 Zuletzt geändert: 7. November 2008 Beispiele für Verwaltungsaufgaben 1 Listen

Mehr

XSL und XSLT. Inhalt. Mathias Heilig email: mathias.heilig@gmx.de. XSL Übersicht. Formatierungsprozess. Sprachbeschreibung. Vorführung Resümee

XSL und XSLT. Inhalt. Mathias Heilig email: mathias.heilig@gmx.de. XSL Übersicht. Formatierungsprozess. Sprachbeschreibung. Vorführung Resümee Mathias Heilig email: mathias.heilig@gmx.de Inhalt XSL Übersicht XSL im XML- Umfeld XSLT XPath XSL- FO Was können wir mit XSLT heute machen? Formatierungsprozess XSLT im XML- Formatierungsprozess Transformation

Mehr

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 25. 10. 2013 Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 25. 10. 2013 Kennnr. Matrikelnr. Familienname Vorname Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 25. 10. 2013 Kennnr. Matrikelnr. Familienname Vorname Arbeitszeit: 100 Minuten. Aufgaben sind auf den Angabeblättern zu lösen; Zusatzblätter werden

Mehr

Dirk Ammelburger XML. Grundlagen der Sprache und Anwendungen in der Praxis HANSER

Dirk Ammelburger XML. Grundlagen der Sprache und Anwendungen in der Praxis HANSER Dirk Ammelburger XML Grundlagen der Sprache und Anwendungen in der Praxis HANSER r 1 Einleitung 2 1.1 Über dieses Buch 3 1.2 Für wen ist das Buch gedacht? 4 1.3 Wie ist das Buch aufgebaut? 5 1.4 Konventionen

Mehr

IT-Zertifikat: Daten- und Metadatenstandards

IT-Zertifikat: Daten- und Metadatenstandards IT-Zertifikat: Daten- und Metadatenstandards DTD - Document Type Definition / Dokumenttypdefinition Das (bislang) Wichtigste auf einen Blick Externe DTD einbinden:

Mehr

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 181.135 21. 01. 2011 Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 181.135 21. 01. 2011 Kennnr. Matrikelnr. Familienname Vorname Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 181.135 21. 01. 2011 Kennnr. Matrikelnr. Familienname Vorname Arbeitszeit: 120 Minuten. Aufgaben sind auf den Angabeblättern zu lösen; Zusatzblätter werden

Mehr

DTD: Syntax-Zusammenfassung

DTD: Syntax-Zusammenfassung DTD: Syntax-Zusammenfassung Dokumenttyp-Deklarationen Interne Teilmenge ]> Externe

Mehr

Web-Programmierung (WPR)

Web-Programmierung (WPR) Web-Programmierung (WPR) Vorlesung II. XML Manfred Gruner mailto:wpr@gruner.org 4.2 XML XML extensible Markup Language Universelles Format für strukturierte Dokumente und Daten Web: XML = Querschnittstechnologie

Mehr

XSLT für SAP NetWeaver Process Integration. Transformationssprache für XML Dokumente

XSLT für SAP NetWeaver Process Integration. Transformationssprache für XML Dokumente XSLT für SAP NetWeaver Process Integration Transformationssprache für XML Dokumente Entwicklung und Laufzeit Datenebene Metadatenebene Generieren Generieren Entwicklung ORDERS02 IDocXML Schema Validieren

Mehr

Java und XML 2. Java und XML

Java und XML 2. Java und XML Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Institut für Praktische Informatik und Medieninformatik Fachgebiet Telematik Java und XML Hauptseminar Telematik WS 2002/2003

Mehr

Java: Kapitel 9. Java und XML. Programmentwicklung WS 2008/2009. Holger Röder holger.roeder@informatik.uni-stuttgart.de.

Java: Kapitel 9. Java und XML. Programmentwicklung WS 2008/2009. Holger Röder holger.roeder@informatik.uni-stuttgart.de. Java: Kapitel 9 Java und XML Programmentwicklung WS 2008/2009 Holger Röder holger.roeder@informatik.uni-stuttgart.de Überblick über Kapitel 9 Einführung in XML XML-Verarbeitung in Java Document Object

Mehr

Klaus Schild, XML Clearinghouse 2003. Transformation von XML-Dokumenten

Klaus Schild, XML Clearinghouse 2003. Transformation von XML-Dokumenten Transformation von XML-Dokumenten Lernziele Warum kann es sinnvoll sein XML-Dokumente zu transformieren? Wie funktioniert XSLT (Extensible Stylesheet Language Transformations)? Was ist XPath? Was sind

Mehr

Klausur zur Vorlesung Einführung in XML

Klausur zur Vorlesung Einführung in XML Nachname: Klausur zur Vorlesung Einführung in XML MUSTERLÖSUNG Vorname: Matr.Nr.: Studiengang: Bearbeiten Sie alle Aufgaben! Hilfsmittel sind nicht zugelassen. Die Bearbeitungszeit ist 90 Minuten. Aufgabe

Mehr

Inhaltsverzeichnis. Teil 1 Grundlagen 5. Teil 2 Formatierung 31 INHALTSVERZEICHNIS

Inhaltsverzeichnis. Teil 1 Grundlagen 5. Teil 2 Formatierung 31 INHALTSVERZEICHNIS Inhaltsverzeichnis Vorwort 1 Was hat XML, das HTML nicht hat?......................................... 1 Zu diesem Buch.......................................................... 3 Die Website zum Buch....................................................

Mehr

Datenbanksysteme. XML und Datenbanken. Burkhardt Renz. Sommersemester Fachbereich MNI Technische Hochschule Mittelhessen

Datenbanksysteme. XML und Datenbanken. Burkhardt Renz. Sommersemester Fachbereich MNI Technische Hochschule Mittelhessen Datenbanksysteme XML und Datenbanken Burkhardt Renz Fachbereich MNI Technische Hochschule Mittelhessen Sommersemester 2019 Übersicht Semistrukturierte Daten Datendefinition in XML Dokumenttypdefinition

Mehr

... MathML XHTML RDF

... MathML XHTML RDF RDF in wissenschaftlichen Bibliotheken (LQI KUXQJLQ;0/ Die extensible Markup Language [XML] ist eine Metasprache für die Definition von Markup Sprachen. Sie unterscheidet sich durch ihre Fähigkeit, Markup

Mehr

Verteilte Systeme: Übung 4

Verteilte Systeme: Übung 4 Verteilte Systeme: Übung 4 WSDL und SOAP Oliver Kleine Institut für Telematik https://www.itm.uni-luebeck.de/people/kleine SOAP Nachrichten Serialisierung in XML Root-Element einer SOAP Nachricht ist

Mehr

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 13. 1. 2015 Kennnr. Matrikelnr. Familienname Vorname Arbeitszeit: 100 Minuten. Aufgaben sind auf den Angabeblättern zu lösen; Zusatzblätter werden nicht

Mehr

XML exemplarisch. nach: André Bergholz, Extending Your Markup: An XML Tutorial IEEE Internet Computing, Jul./Aug. 2000, 74 79

XML exemplarisch. nach: André Bergholz, Extending Your Markup: An XML Tutorial IEEE Internet Computing, Jul./Aug. 2000, 74 79 XML exemplarisch nach: André Bergholz, Extending Your Markup: An XML Tutorial IEEE Internet Computing, Jul./Aug. 2000, 74 79 Wohlgeformte XML-Dokumente bestehen aus Prolog genau einem Element Beispiel-Prolog.

Mehr

Online-Publishing mit HTML und CSS für Einsteigerinnen

Online-Publishing mit HTML und CSS für Einsteigerinnen mit HTML und CSS für Einsteigerinnen Dipl.-Math. Eva Dyllong Universität Duisburg Dipl.-Math. Maria Oelinger spirito GmbH IF MYT 07-2002 Web-Technologien Überblick HTML und CSS, XML und DTD, JavaScript

Mehr

Projektseminar "Texttechnologische Informationsmodellierung"

Projektseminar Texttechnologische Informationsmodellierung Projektseminar "Texttechnologische Informationsmodellierung" Analyse mit XSLT Ziel diese Sitzung Nach dieser Sitzung sollten Sie: Einen ersten Überblick über Funktionen in XPath haben Stylesheets und Templates

Mehr

XSL Transformation. Eine praxisorientierte Einführung Philip Heck

XSL Transformation. Eine praxisorientierte Einführung Philip Heck XSL Transformation Eine praxisorientierte Einführung Philip Heck Agenda Motivation Hello World - Getting Started with XSLT XSLT Verarbeitung im Detail XPath 2 Motivation datenzentriertes XML als Standard

Mehr

Reimo Fachhändlerbereich Import Datei

Reimo Fachhändlerbereich Import Datei Allgemein Der Reimo Fachhändlerbereich im Internet bietet die Funktionalität, eine Datei mit Bestelldaten zu importieren. Dies erspart Ihnen die Arbeit, eine Bestellung, die Sie bereits in Ihrer EDV erfasst

Mehr

XML und SOAP Einführung und Grundlagen

XML und SOAP Einführung und Grundlagen XML und SOAP Einführung und Grundlagen Matthias Böhmer 16.12.2005 Agenda 1. XML 2. SOAP 3. Seife im Buchladen?! E-Commerce :: XML und SOAP Matthias Böhmer 16.12.2005 2 XML :: Einführung (1) extensible

Mehr

XML Grundlagen. Andreas Rottmann,Sebastian Riedl. 27. August 2002. Quit Full Screen Previous Page Next Page GoTo Page Go Forward Go Back

XML Grundlagen. Andreas Rottmann,Sebastian Riedl. 27. August 2002. Quit Full Screen Previous Page Next Page GoTo Page Go Forward Go Back XML Grundlagen Andreas Rottmann,Sebastian Riedl 27. August 2002 Rottmann, Riedl: XML Grundlagen 1 Überblick Hintergründe und Geschichte Aufbau von XML-Dokumenten DTD Schemata Erweiterungen XML APIs Rottmann,

Mehr

FileMaker Konferenz 2010 XML / XSLT. Ein Workshop mit [x] cross solution Armin Egginger

FileMaker Konferenz 2010 XML / XSLT. Ein Workshop mit [x] cross solution Armin Egginger XML / XSLT Ein Workshop mit [x] cross solution Armin Egginger [x] cross solution Armin Egginger - Zertifizierter FileMaker Entwickler Urheber von CrossCheck Netzwerk von Datenbankprogrammierern Kunden

Mehr

Projektseminar "Texttechnologische Informationsmodellierung"

Projektseminar Texttechnologische Informationsmodellierung Projektseminar "Texttechnologische Informationsmodellierung" Formatierung und Transformation http://www.text-technology.de/projects/sekimo.html Ziel dieser Sitzung Nach dieser Sitzung sollten Sie: XPath

Mehr

5. Programmierschnittstellen für XML

5. Programmierschnittstellen für XML 5. Programmierschnittstellen für für Medientechnologen Dr. E. Schön Wintersemester 2015/16 Seite 146 Notwendigkeit: Programmierschnittstelle Zugriff auf -Daten durch Applikationen wiederverwendbare Schnittstellen

Mehr

XML Verarbeitung mit einer in Haskell eingebetteten DSL. Manuel Ohlendorf (xi2079)

XML Verarbeitung mit einer in Haskell eingebetteten DSL. Manuel Ohlendorf (xi2079) XML Verarbeitung mit einer in Haskell eingebetteten DSL Manuel Ohlendorf (xi2079) 2.0.200 Manuel Ohlendorf Übersicht 1 2 Einführung Datenstruktur Verarbeitung Vergleich mit anderen Verfahren Fazit 2 Übersicht

Mehr

XML Grundlagen Teil I

XML Grundlagen Teil I XML Vorlesung FH Aargau, SS 2006 XML Grundlagen Teil I Erik Wilde 20.3.2006 http://dret.net/lectures/xml-fhnw-ss06/ 20.3.2006 XML Vorlesung FHA SS 2006 1 Übersicht Aufbau von XML XML Dokumenten-Syntax

Mehr

5. Programmierschnittstellen für XML

5. Programmierschnittstellen für XML 5. Programmierschnittstellen für Grundlagen Dr. E. Schön FH Erfurt Sommersemester 2015 Seite 135 Programmierschnittstelle Notwendigkeit: Zugriff auf -Daten durch Applikationen wiederverwendbare Schnittstellen

Mehr

Konzept und Realisierung Extensible Stylesheet Language

Konzept und Realisierung Extensible Stylesheet Language Konzept und Realisierung Extensible Stylesheet Language Hauptseminar Telematik SS2002 Kai Weber XSL/XSLT 1 Inhalt des Vortrages Wozu dienen Stylesheets Vorstellung der XSL-Sprachfamilie Transformationen

Mehr

Übungsaufgaben zu XML:

Übungsaufgaben zu XML: Übungsaufgaben zu XML: Aufgabe 1 Allgemeine Fragen zu XML: (Benutzen Sie zum Lösen der Aufgaben die Online-Hilfen, welche wir erwähnt haben.) a) Was ist eine DTD? DTD steht für Document Type Definition.

Mehr

XML-Schema Datentypen

XML-Schema Datentypen Datentypen Data Types Simple Types Complex Types User-derived Built-in Atomic (restriction) Non-atomic (list, union) Primitive Derived WT:III-1 XML Schema Reference Lettmann 2014 Datentypen anytype anysimpletype

Mehr

Zusammenfassung XML. Metasprache um Dokumenttypen zu definieren

Zusammenfassung XML. Metasprache um Dokumenttypen zu definieren 1. XML Grundbegriffe XML = extensible Markup Language Metasprache um Dokumenttypen zu definieren XML Baum

Mehr

XML und Dokumentenmanagement

XML und Dokumentenmanagement XML und Dokumentenmanagement XML-Standards XML DTD XPath XSL DOM, SAX, XQuery,... - SS 2004 - Prof. Dr. Stefan Böttcher Folie XML / 1 Überblick: Internet-Technologien für Dokumentenmanagement Server-Technologien

Mehr

X-Technologien. XML and Friends. Jörn Clausen joern@techfak.uni-bielefeld.de. 9. Juli 2001

X-Technologien. XML and Friends. Jörn Clausen joern@techfak.uni-bielefeld.de. 9. Juli 2001 X-Technologien XML and Friends 9. Juli 2001 Jörn Clausen joern@techfak.uni-bielefeld.de Übersicht XML SAX DOM XSL XPath XSLT XSL FO Extensible Markup Language Simple API for XML Document Object Model Extensible

Mehr

Grundlagen der Extensible Stylesheet Language

Grundlagen der Extensible Stylesheet Language Grundlagen der Extensible Stylesheet Language Transformations (XSLT) Marc Monecke monecke@informatik.uni-siegen.de Praktische Informatik Fachbereich Elektrotechnik und Informatik Universität Siegen, D-57068

Mehr

2. Einführung in Datenbanken und XML

2. Einführung in Datenbanken und XML 2. Einführung in Datenbanken und XML Was ist XML? 2. Einführung in Datenbanken und XML XML steht für extensible Markup Language durch das W3C entwickeltes Dokumentenformat einfach, flexibel, von SGML abgeleitet

Mehr

HTML5. Wie funktioniert HTML5? Tags: Attribute:

HTML5. Wie funktioniert HTML5? Tags: Attribute: HTML5 HTML bedeutet Hypertext Markup Language und liegt aktuell in der fünften Fassung, also HTML5 vor. HTML5 ist eine Auszeichnungssprache mit der Webseiten geschrieben werden. In HTML5 wird festgelegt,

Mehr

XML DTD und Schema von Thomas Mangold

XML DTD und Schema von Thomas Mangold XML DTD und Schema von Thomas Mangold Inhalt: Zweck kurze Übersicht über den Aufbau Gemeinsamkeiten und Unterschiede Grundelemente Schema vs. DTD Beispiel Definitieren eines Schemas Links 15.05.2002 XML-Seminar

Mehr

Enterprise Applikation Integration und Service-orientierte Architekturen. 09 Simple Object Access Protocol (SOAP)

Enterprise Applikation Integration und Service-orientierte Architekturen. 09 Simple Object Access Protocol (SOAP) Enterprise Applikation Integration und Service-orientierte Architekturen 09 Simple Object Access Protocol (SOAP) Anwendungsintegration ein Beispiel Messages Warenwirtschaftssystem Auktionssystem thats

Mehr

Gliederung. Service Oriented Architecture - XML Technologies. 1 von 11

Gliederung. Service Oriented Architecture - XML Technologies. 1 von 11 1 von 11 Gliederung Extensible Markup Language (XML) Wofür steht XML? Wie sieht XML aus? Dokumentgliederung Elemente Attribute Entity-Referenzen Vordefinierte Entities Verarbeitungsanweisungen (processing

Mehr

Web (Site) Engineering (WebSE)

Web (Site) Engineering (WebSE) 1 / 22 Web (Site) Engineering (WebSE) Vorlesung 6: Tools und Programmierung B. Schiemann, P. Reiß Lehrstuhl für Informatik 8 Universität Erlangen-Nürnberg 29.11.2005 2 / 22 Übersicht XML-Beispiel Zugriff

Mehr

XSLT Vortrag. 2. Beispiel XML. 3. Anwendungsmöglichkeiten von XSLT 4. XHTML

XSLT Vortrag. 2. Beispiel XML. 3. Anwendungsmöglichkeiten von XSLT 4. XHTML XSLT Vortrag 1. Was ist XSLT? XSLT ist eine Transformationssprache für XML Dokumente. XSLT war wahrscheinlich die erste XML basierte Programmiersprache. XSLT ist von der Struktur her Template-Matching,

Mehr

<Trainingsinhalt> XML umsetzen und nutzen

<Trainingsinhalt> XML umsetzen und nutzen XML umsetzen und nutzen i Inhaltsverzeichnis Einführung 11 Das Problem mit HTML 12 Die Stärke von XML 13 Die XML-Helfer 14 XML im wirklichen Leben 15 Zu diesem Buch 16 Was Sie hier nicht

Mehr

Klaus Schild, XML Clearinghouse 2003. Namensräume

Klaus Schild, XML Clearinghouse 2003. Namensräume Namensräume Lernziele Namenskonflikte Warum lösen im World Wide Web einfache Präfixe dieses Problem nicht? Wie lösen globale Namensräume das Problem? Wie werden sie in XML-Dokumenten benutzt? Was sind

Mehr

3.1 Sinn und Zweck von Namensräumen

3.1 Sinn und Zweck von Namensräumen 3 3 Die Erstellung eigener Auszeichnungssprachen und somit die Erschaffung eigener Dokumenttypen, in denen die Elemente ihre eigene Bedeutung haben, ist mit XML leicht gemacht. Natürlich können solche

Mehr

Hauptseminar Informatik. Die Strukturierung von XML-Dokumenten mit Hilfe von DTDs und XML Schema

Hauptseminar Informatik. Die Strukturierung von XML-Dokumenten mit Hilfe von DTDs und XML Schema Hauptseminar Informatik Die Strukturierung von XML-Dokumenten mit Hilfe von DTDs und XML Schema Gliederung 1. Motivation 2. XML Eine Einführung 3. DTD 4. XML Schema 4.1 Vergleich DTD und XML Schema 4.2

Mehr

Gruppe A Bitte tragen Sie sofort und leserlich Namen, Studienkennzahl und Matrikelnummer ein und legen Sie Ihren Studentenausweis

Gruppe A Bitte tragen Sie sofort und leserlich Namen, Studienkennzahl und Matrikelnummer ein und legen Sie Ihren Studentenausweis Gruppe A Bitte tragen Sie sofort und leserlich Namen, Studienkennzahl und Matrikelnummer ein und legen Sie Ihren Studentenausweis bereit. PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 181.135 23. 01. 2008 Kennnr.

Mehr

DTDs und XML- Schemata

DTDs und XML- Schemata Wie geht es weiter? DTDs und XML- Schemata letzte Woche Syntax wohlgeformter e Namensräume Festlegung der Semantik von XML-Elementen heute Beschreibung von Dokument-Typen DTDs und XML-Schema anhand eines

Mehr

Das Einsteigerseminar

Das Einsteigerseminar Michael Seeboerger-Weichselbaum Das Einsteigerseminar XML Inhalt Vorwort Einleitung und Ziel des Buches 1 Was ist XML 1.1 HTML 1.2 XML 1.3 XSLT 1.4 XML und HTML - wo sind die Unterschiede? 1.5 Einsatzgebiete

Mehr

Vortrag im Rahmen des IFC-Seminars am 06.12.2000. Performance Messungen mit XML bei der empolis GmbH

Vortrag im Rahmen des IFC-Seminars am 06.12.2000. Performance Messungen mit XML bei der empolis GmbH Vortrag im Rahmen des IFC-Seminars am 06.12.2000 von Stefan Rauch Diplomarbeit zum Thema: Performance Messungen mit XML bei der empolis GmbH Übersicht / Agenda Einleitung Die Firma empolis GmbH XML, SAX,

Mehr

Kurzeinführung in XML. Was ist XML? Well-formed u. gültiges XML Erste Anwendung in XML Externe DTD Attribute und Entities Datenausgabe mit XSL

Kurzeinführung in XML. Was ist XML? Well-formed u. gültiges XML Erste Anwendung in XML Externe DTD Attribute und Entities Datenausgabe mit XSL Kurzeinführung in XML Was ist XML? Well-formed u. gültiges XML Erste Anwendung in XML Externe DTD Attribute und Entities Datenausgabe mit XSL Was ist XML? XML steht für Extensible Markup Language XML ist

Mehr

XML-Namensräume. Marc Monecke monecke@informatik.uni-siegen.de

XML-Namensräume. Marc Monecke monecke@informatik.uni-siegen.de XML-Namensräume Marc Monecke monecke@informatik.uni-siegen.de Praktische Informatik Fachbereich Elektrotechnik und Informatik Universität Siegen, D-57068 Siegen 19. Mai 2003 Inhaltsverzeichnis 1 Motivation

Mehr

Übungsbeispiel 1 Erstellen Sie eine Homepage für Ihre Gruppe in XML und überprüfen Sie die Wohlgeformtheit in einem Editor/Browser.

Übungsbeispiel 1 Erstellen Sie eine Homepage für Ihre Gruppe in XML und überprüfen Sie die Wohlgeformtheit in einem Editor/Browser. Erstellen Sie eine Homepage für Ihre Gruppe in XML und überprüfen Sie die Wohlgeformtheit in einem Editor/Browser. Verwenden Sie folgende XML-Sprachmittel: Leeres Element, geschachtelte Elemente, Element

Mehr

7.2.2 Spezifikation einer Treffermenge

7.2.2 Spezifikation einer Treffermenge 7.2.2 Spezifikation einer Treffermenge Das Ergebnis der Auswertung eines XPath Ausdrucks (Version 1.0) ist eine Liste von Knoten. Folgende Schritte sind bei einer Anfrage auszuführen: 1.) Festlegung des

Mehr

Document Type Definition (DTD)

Document Type Definition (DTD) Document Type Definition (DTD) 1. Einführung 2. DTD 3. XML Schema 4. XPath 5. XSLT 6. XSL-FO 7. XQuery 8. Web Services 9. XML und Datenbanken Inhalt des Moduls: Grundlagen Elemente, Attribute Komplexe

Mehr

Beschreibung von Dokumenten mit DTDs

Beschreibung von Dokumenten mit DTDs Lernziele Beschreibung von Dokumenten mit DTDs XML-Schemata Was sind Dokument-Typen? Wie können diese mit r DTD oder m Schema beschrieben werden? Was der Vorteil von XML-Schemata gegenüber DTDs? Klaus

Mehr

1 ZUR EINSTIMMUNG............................................ 13 1.1 AUFBAU DES BUCHES.......................................... 13 1.2 VORAUSSETZUNGEN FÜR DIESES BUCH.............................. 14

Mehr

XML Extensible Markup Language

XML Extensible Markup Language XML-Praxis XML Extensible Markup Language Jörn Clausen joern@techfak.uni-bielefeld.de Übersicht Woher? Wohin? Warum? Bestandteile von XML XML-Dokumente erstellen und bearbeiten XML-Praxis XML Extensible

Mehr

1 Was ist XML? Hallo XML! Kommentare in XML 52

1 Was ist XML? Hallo XML! Kommentare in XML 52 Inhalt Vorwort 13 Einleitung und Ziel des Buches 15 1 Was ist XML? 21 1.1 XML ein Definitionsversuch 21 1.2 XML und HTML wo sind die Unterschiede? 22 1.3 XSLT 24 1.4 Einsatzgebiete von XML und XSLT 25

Mehr

XML Informationsmodelle

XML Informationsmodelle XML Vorlesung ETHZ, Sommersemester 2006 XML Informationsmodelle Erik Wilde 25.4.2006 http://dret.net/lectures/xml-ss06/ 25.4.2006 XML Vorlesung ETHZ SS 2006 1 Übersicht XML Namespaces für Schema-Kombination

Mehr

RDF und RDF Schema. Einführung in die Problematik Von HTML über XML zu RDF

RDF und RDF Schema. Einführung in die Problematik Von HTML über XML zu RDF RDF und RDF Schema Einführung in die Problematik Von HTML über XML zu RDF Kirsten Albrecht Roland Illig Probleme des HTML-basierten

Mehr

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 13. 1. 2015 Kennnr. Matrikelnr. Familienname Vorname Arbeitszeit: 100 Minuten. Aufgaben sind auf den Angabeblättern zu lösen; Zusatzblätter werden nicht

Mehr

X-Technologien. Ein Überblick. Ulrike Henny. ulrike.henny@uni-koeln.de. IDE Summer School 2013, Chemnitz

X-Technologien. Ein Überblick. Ulrike Henny. ulrike.henny@uni-koeln.de. IDE Summer School 2013, Chemnitz X-Technologien Ein Überblick Ulrike Henny ulrike.henny@uni-koeln.de X-Technologien Das X-Universum XML im Zentrum Woher kommt XML? Einsatz von XML X-Technologien Datenhaltung Datenzugriff Umwandlung Ausgabe

Mehr

C O C O O N. Wo ist Cocoon in die Apache Projekte einzureihen?

C O C O O N. Wo ist Cocoon in die Apache Projekte einzureihen? C O C O O N ein Web-Framework der Apache Software Foundation http://www.apache.org Wo ist Cocoon in die Apache Projekte einzureihen? Apache Server sehr leistungsfähiger HTTP-Server Tomcat Server Referenzimplementierung

Mehr

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 24. 10. 2014 Kennnr. Matrikelnr. Familienname Vorname Arbeitszeit: 100 Minuten. Aufgaben sind auf den Angabeblättern zu lösen; Zusatzblätter werden

Mehr

Ferhat Ayaz. XML mit C++

Ferhat Ayaz. XML mit C++ Ferhat Ayaz XML mit C++ Inhaltsverzeichnis Einleitung 11 Teil I XML-Grundlagen 15 i XML im Schnellkurs 17 I.I WasistXML? 18 1.2 Was ist XML nicht? 18 1.3 Der Aufbau eines XML-Dokuments 19 1.4 XML-Deklaration

Mehr

Ressourcen-Beschreibung im Semantic Web

Ressourcen-Beschreibung im Semantic Web Ressourcen-Beschreibung im Semantic Web Cristina Vertan Inhaltsübersicht Wie sollen die Ressourcen für Semantic Web annotiert werden? Was ist und wie funktioniert RDF? Wie kodiert man RDF-Statements in

Mehr

Strukturierung von Inhalten

Strukturierung von Inhalten Strukturierung von Inhalten extensible Markup Language Metasprache erlaubt die Definition eigener Markupsprachen zur Strukturierung von Informationen World Wide Web Consortium (W3C) Standard Basiert auf

Mehr

DTDs und XML-Schema. Robert Tolksdorf Freie Universität Berlin Institut für Informatik Netzbasierte Informationssysteme

DTDs und XML-Schema. Robert Tolksdorf Freie Universität Berlin Institut für Informatik Netzbasierte Informationssysteme DTDs und XML-Schema Robert Tolksdorf Freie Universität Berlin Institut für Informatik Netzbasierte Informationssysteme tolk@ag-nbi.de Heutige Vorlesung letzte Woche XML-Syntax Namensräume Heute Definition

Mehr

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 24. 10. 2014 Kennnr. Matrikelnr. Familienname Vorname Arbeitszeit: 100 Minuten. Aufgaben sind auf den Angabeblättern zu lösen; Zusatzblätter werden

Mehr

Seminar Dokumentenverarbeitung

Seminar Dokumentenverarbeitung XPath und XSL/XSLT Seminar Dokumentenverarbeitung Juni 2002 Jan-Gerrit Drexhage jdrexhag@techfak.uni-bielefeld.de Garvin Gripp ggripp@techfak.uni-bielefeld.de 1 XSLT extensible Stylesheet Language (for

Mehr

Webseite in XML Kurzeinführung

Webseite in XML Kurzeinführung Webseite in XML Kurzeinführung 1. Entwicklung... 1 2. Erste Webpage in XML... 2 2.1 Erstes Beispiel... 2 2.2 Tags definieren... 4 2.3 Kommentare in XML... 5 2.4 XML mittels CSS im Browser ansehen... 5

Mehr

Einführung in XML. Arthur Brack FHDW Hannover. 1. Oktober 2009

Einführung in XML. Arthur Brack FHDW Hannover. 1. Oktober 2009 Einführung in XML Arthur Brack FHDW Hannover Inhalt Was ist XML? Warum XML? Aufbau von XML-Dokumenten Ausblick XML-Schemasprachen XPath XSLT Zusammenfassung Literatur Einführung in XML 2 / 14 Was ist XML?

Mehr

XSLT XSL Transformations

XSLT XSL Transformations XML-Praxis XSLT XSL Transformations Teil 1 Jörn Clausen joern@techfak.uni-bielefeld.de Übersicht Namespaces XPath einfache XSLT-Stylesheets template rules default rules XML-Praxis XSLT XSL Transformations,

Mehr

Document Type Definitions (DTDs)

Document Type Definitions (DTDs) Document Type Definitions (DTDs) Prof. Dr.-Ing. Robert Tolksdorf & Marko Harasic Freie Universität Berlin Institut für Informatik Netzbasierte Informationssysteme tolk@ag-nbi.de harasic@inf.fu-berlin.de

Mehr

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 181.135 01. 12. 2010 Kennnr. Matrikelnr. Familienname Vorname Arbeitszeit: 120 Minuten. Aufgaben sind auf den Angabeblättern zu lösen; Zusatzblätter werden

Mehr

XML Werkzeug XML Spy. Frank Heininger Axel Labuschke

XML Werkzeug XML Spy. Frank Heininger Axel Labuschke XML Werkzeug XML Spy Frank Heininger Axel Labuschke Gliederung Werkzeugkategorien Strukturbeschreibung Dokumentenerstellung Dokumentenbetrachtung Datenhaltung XML Spy Einführung Funktionen Benutzeroberfläche

Mehr

http://www.therealgang.de/

http://www.therealgang.de/ http://www.therealgang.de/ Titel : Einführung in XML (Teil 1/2) Author : Dr. Pascal Rheinert Kategorie : Programmierung-Sonstige Teil II: XML Wichtiger Hinweis: Das folgende Dokument basiert auf dem HTML-Lehrgang

Mehr

Multimedia Technologie II

Multimedia Technologie II Vorlesung / Übungen Multimedia Technologie II Prof. Dr. Michael Frank / Prof. Dr. Klaus Hering Sommersemester 2004 HTWK Leipzig, FB IMN Für die externe Vorhaltung der DTD werden sämtliche zwischen den

Mehr

Übersicht. Web (Site) Engineering (WebSE) XML-Beispieldokument. Simple API for XML (SAX) [Pro] XML-Beispiel. Vorlesung 6: Tools und Programmierung

Übersicht. Web (Site) Engineering (WebSE) XML-Beispieldokument. Simple API for XML (SAX) [Pro] XML-Beispiel. Vorlesung 6: Tools und Programmierung Übersicht Web (Site) Engineering (WebSE) Vorlesung 6: Tools und Programmierung XML-Beispiel B. Schiemann, P. Reiß Lehrstuhl für Informatik 8 Universität Erlangen-Nürnberg 29.11.2005 Zugriff auf Inhalt,

Mehr

Eine Schnelleinführung in XSL

Eine Schnelleinführung in XSL Eine Schnelleinführung in XSL Michael Dienert 8. Juli 2014 1 Was ist XSL? XSL ist die Abkürzung von Extensible Stylesheet Language. XSL ist selbst wieder eine XML-Anwendung, d.h. XSL-Dokumente müssen immer

Mehr