2002 XML 10.1XML I (Parsing) 17.1XML II (XLST,XPATH) (keinPraktikum) 24.1XML III FOP 31.1Cocoon2, XSP 7.2Struts, Turbine, Velocity 14.2Testat / Evaluation.

Slides:



Advertisements
Ähnliche Präsentationen
Dynamische WEB-Applikationen
Advertisements

M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
der Universität Oldenburg
Objektorientierte Programmierung
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Kurt Rosenberg. C# für.NET oder.NET für C# is(C# == C++ && Java)? true : false ; reines C# Ausblick Überblick.
Zusammenfassung des Kapitels 8
XML.
Programmierkurs Java WS 98/99 Vorlesung 15 Dietrich Boles 17/02/99Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik F Verteilte Software - Java.
Verteilte Software - Java - Prozedurale Programmierung 1
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Dipl. Inf. (FH) Paul Mizel Compilerbau.NET Compiler / Codegeneratoren / Skriptsprachen.
Binäre Bäume Richard Göbel.
Listen Richard Göbel.
Java: Grundlagen der Sprache
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
DOM (Document Object Model)
IF-ELSE-IF-Ketten Weiter mit PP..
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Welcome DTD. Document Type Definition Graphic Services/Everything you already know about presentations Was ist eine DTD? DTD ist eine Schemasprache.
M a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 9 IO – Streams in Java Sommersemester 2003 Lars Bernard.
Dynamische Webseiten Java servlets.
Document Object Model (DOM)
Speicherung von XML- Dokumenten als Large Objects.
Einführung XML XML Einführung Andreas Leicht.
Objektorientierte Programmierung JDK-Klassenbibliothek
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
Filiale pea09 Die Einbindung der MySQL-Datenbank in das Servlet.
Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich
F açade P attern By Nicolas Lanquetin. Façade Pattern Structural Pattern Bietet ein gemeinsames Interface, anstatt vieler Interfaces eines Subsystems.
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
04 - Actions Actions Actions 2 Motivation In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt. Häufig werden.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Step by step zum JFrame 1 Zum JFrame Step by step by step by step by step by step by step by step by.
Thema: Fibonacci-Zahlen
Vererbung Einfache Vererbung – Erben von abstrakten Klassen – Implementieren eines Interfaces.
FH-Hof 1 XML-Parser Richard Göbel. FH-Hof 2 XML-Parser- DOM Object Tree Parser Objekt der Klasse 'DocumentBuilderFactory' mit 'newInstance()' erzeugen.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
XML-Schnittstellen: SAX, DOM, XML Pull Parsing Timo Terletzki Transformation von XML-Dokumenten.
Die Persistenzschicht
Rekursive Funktionen (Fakultät)
Servlet III Java Webanwendung Webcontainer Web.xml
1 Sg 3 – JSP - Java Server Pages Softwareengineering Praktikum Java Server Pages Nicole Brandstätter Josef Sturm Karl Streicher.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
The free XML Editor for Windows COOKTOP Semistrukturierte Daten 1 Vortrag Semistrukturierte Daten 1 COOKTOP The free XML-Editor for Windows
Entity Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Abteilung für Telekooperation Übung Softwareentwicklung 2 für Wirtschaftsinformatik Dr. Wieland Schwinger
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Exception Handling in Java
XML IV: Cocoon 2.
XML (Extensible Markup Language)
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
CuP - Java Zwölfte Vorlesung Klassen – Komposition und Vererbung Freitag, 15. November 2002.
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Drucken mit XSL-FO DaimlerChrysler  Drucken von Webseiten
Beispielanwendung von Java Threads
Programmiervorkurs WS 2014/15 Methoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Schnaiter XML in Java XML - Datei Zugriff mit Java.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Abteilung für Telekooperation Softwareentwicklung 2 UE WS 2008/09 SE2UE_ Ausnahmen (Exceptions)
1 Java und XML Stephan Baldes Warum XML? In welchem Format wurden die Daten gespeichert? Bernd;Thomas;3;5;1987;Freiburg;Karlsruhe Peter;Maier;7;9;1980;Karlsruhe;Freiburg.
XML und Java Verarbeitung von XML-Dokumenten mit JAVA.
 Präsentation transkript:

2002 XML 10.1XML I (Parsing) 17.1XML II (XLST,XPATH) (keinPraktikum) 24.1XML III FOP 31.1Cocoon2, XSP 7.2Struts, Turbine, Velocity 14.2Testat / Evaluation / Prüfung

Wie weiter? Bis jetzt: -einfache dynamische Anwendungen mit Servlet und JSP Technologie Wunsch: QuellDok verschiedene Ausgabeformate kein out.println(….) Trennung Inhalt, Präsentation Technologie XML

XML Daten aus verschiedenen heterogenen Systemen, z.B. Datenbanken oder Directory Services, müssen ohne Verlust einer einzelnen Dezimalstelle transformiert werden. XML -> Datenaustausch B2B -> DTD Verschieden Ausgabeformate müssen unterstützt werden. (HTML,WAP,PDF,…) Smart Agents -> Strukturierte Dokumente

Was ist XML? XML ist die Extensible Markup Language Eine Metasprache zur Definition anderer Sprachen. Plattform und Sprach unabhängig Java + XML = Portable Code + Portable Data

Was ist XML? XML besitzt keine Grammatik und keine Tag Sets. vollständig Erweiterbar. Bsp: In HTML ist definiert, hat keine Bedeutung. weitere Akronyme: PI Processing Instruction DTD Document Type Definition (def. Gramatik) XSL Extensible Stylesheet Language XPATHXML Path Language FOFormating objects Namespaces Abbildung eines prefix auf eine URI

Grundkonzept I XML Dokumente müssen wohlgeformt (well-formed) sein. bla bla Errror !!

Grundkonzept II XML Dokumente können gültig (valid) sein. Ein gültiges Dokument erfüllt eine document type definition (DTD). Oder ein Shema XML basiert auf dem universellen Unicode. !! Unicode Editor !! ä &x00e4;

Interpretieren und Parsen Document Object Model (DOM) Dokument Baum im Speicher Simple API for XML (SAX) serielles parsen des Dokuments und abfeuern von Events SAX oder DOM? DOM -> Modifizieren SAX -> einmaliges Parsen

Xerces XML-Parser Implementation

Begriffe Tags und Attribute Element Typ Deklaration

Los gehts 1 XML-Dokument für Schach 2 DTD erstellen 3 Parsen mit SAX 4 Parsen mit DOM Referenzen

XML Schach

Schach DTD <!ENTITY % figur "KOENIG, DAME?, LAUEFER?, LAUEFER?, TURM?, TURM?, PFERD?, PFERD?, BAUER?, BAUER?, BAUER?, BAUER?, BAUER?, BAUER?, BAUER?, BAUER?" > <!ATTLIST POSITION SPALTE (A|B|C|D|E|F|G|H) #REQUIRED REIHE (1|2|3|4|5|6|7|8) #REQUIRED >

SAX Parser I import org.xml.sax.*; import org.xml.sax.helpers.*; import javax.xml.parsers.*; import java.io.*; public class SchachSAXPrinter { static private SAXParser parser; private PrintStream out; //Konstruktor public SchachSAXPrinter(boolean validating) throws Exception{ } public void print(String fileName) throws SAXException, IOException { SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setNamespaceAware(true); factory.setValidating(true);

SAX Parser II try { DefaultHandler handler = new MyHandler(); parser = factory.newSAXParser(); parser.parse(fileName, handler); } catch (SAXException se) {System.out.println(se); // handle error } catch (IOException ioe) {System.out.println(ioe);// handle error } catch (ParserConfigurationException pce) {System.out.println(pce);// handle error } return; } public static void main(String[] args) throws Exception{ boolean validating = true; SchachSAXPrinter saxPrinter = new SchachSAXPrinter(true); long time = System.currentTimeMillis(); saxPrinter.print("file:spiel1.xml"); System.err.print((((double) (System.currentTimeMillis() - time)) / 1000 ) + "\t"); }

Handler I import org.xml.sax.*; import org.xml.sax.helpers.*; import javax.xml.parsers.*; public class MyHandler extends DefaultHandler { private boolean whitePiece = false; protected int fIndent; public void startElement(String namespaceURI, String localName, String name, Attributes attrs)throws SAXException { if (name.equals("WEISS")) { whitePiece = true; } else if (name.equals("SCHWARZ")) { whitePiece = false; } else if (name.equals("KOENIG") || name.equals("DAME") || name.equals("LAUEFER") || name.equals("TURM") || name.equals("PFERD") || name.equals("BAUER")) { System.out.print((whitePiece ? "weiss" : "schwarz") + " "+ name.toLowerCase() + ": ");

Handler II } else if (name.equals("POSITION")) { if (attrs != null) { System.out.print(attrs.getValue("SPALTE")); System.out.println(attrs.getValue("REIHE")); } return; } public void error(SAXParseException exception) throws SAXException { System.out.println("**Parsing Error**\n" + " Line: " + exception.getLineNumber() + "\n" + " URI: " + exception.getSystemId() + "\n" + " Message: " + exception.getMessage()); //throw new SAXException("Error encountered"); }

Weitere Events package schach; import org.xml.sax.*; import org.xml.sax.helpers.*; class MyContentHandler implements ContentHandler { private Locator locator; private boolean whitePiece = false; public void setDocumentLocator(Locator locator) { System.out.println(" * setDocumentLocator() called"); // We save this for later use if desired. this.locator = locator; } public void startDocument() throws SAXException { System.out.println("Parsing begins..."); } public void endDocument() throws SAXException { System.out.println("...Parsing ends."); } public void processingInstruction(String target, String data) throws SAXException { System.out.println("PI: Target:" + target + " and Data:" + data); } public void startPrefixMapping(String prefix, String uri) { System.out.println("Mapping starts for prefix " + prefix + " mapped to URI " + uri); }

DOM Parser I import org.w3c.dom.*; import org.xml.sax.*; import javax.xml.parsers.*; import java.io.*; public class SchachDOMPrinter { static private DocumentBuilder builder; public SchachDOMPrinter() throws Exception{ } public void print(String fileName) throws SAXException, IOException { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(true); try { builder = factory.newDocumentBuilder(); builder.setErrorHandler(new MyErrorHandler()); Document document = builder.parse(fileName);

DOM Parser II NodeList nodes_i = document.getDocumentElement().getChildNodes(); for (int i = 0; i < nodes_i.getLength(); i++) { Node node_i = nodes_i.item(i); if (node_i.getNodeType() == Node.ELEMENT_NODE && ((Element) node_i).getTagName().equals("SCHACHBRETT")) { Element chessboard = (Element) node_i; NodeList nodes_j = chessboard.getChildNodes(); for (int j = 0; j < nodes_j.getLength(); j++) { Node node_j = nodes_j.item(j); if (node_j.getNodeType() == Node.ELEMENT_NODE) { Element pieces = (Element) node_j; NodeList nodes_k = pieces.getChildNodes(); for (int k = 0; k < nodes_k.getLength(); k++) { Node node_k = nodes_k.item(k); if (node_k.getNodeType() == Node.ELEMENT_NODE) { Element piece = (Element) node_k; Element position = (Element) piece.getChildNodes().item(0); System.out.println((pieces.getTagName().equals("WEISS")? "weiss " : "schwarz ") + piece.getTagName().toLowerCase() + ": " + position.getAttribute("SPALTE") + position.getAttribute("REIHE")); } … … … …

DOM Parser III } catch (SAXException se) {System.out.println(se); // handle error } catch (IOException ioe) {System.out.println(ioe);// handle error } catch (ParserConfigurationException pce) {System.out.println(pce);// handle error } return; } public static void main(String[] args) throws Exception{ boolean validating = true; SchachDOMPrinter DOMPrinter = new SchachDOMPrinter(); long time = System.currentTimeMillis(); DOMPrinter.print("file:spiel1.xml"); System.err.print((((double) (System.currentTimeMillis() - time)) / 1000 ) + "\t"); }

Legi XML Praktikum 1.XML Dokument 2.DTD 3.SAX Parser 4.DOM Parser Beising Edith Weil Deutschland Phil. II W.S. 2001/02