Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Sofie Andler Geändert vor über 11 Jahren
1
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
2
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
3
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
4
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
5
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
6
Grundkonzept I XML Dokumente müssen wohlgeformt (well-formed) sein. bla bla Errror !!
7
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. http://www.unicode.org/ !! Unicode Editor !! ä &x00e4;
8
Interpretieren und Parsen Document Object Model (DOM) Dokument Baum im Speicher http://www.w3.org/DOM/ Simple API for XML (SAX) serielles parsen des Dokuments und abfeuern von Events http://www.saxproject.org/ SAX oder DOM? DOM -> Modifizieren SAX -> einmaliges Parsen
9
Xerces XML-Parser Implementation http://xml.apache.org
10
Begriffe Tags und Attribute Element Typ Deklaration
11
Los gehts 1 XML-Dokument für Schach 2 DTD erstellen 3 Parsen mit SAX 4 Parsen mit DOM Referenzen http://www.w3.org/XML/ http://www.xml.com/ http://www.xml.org/ http://xml.apache.org/
12
XML Schach
13
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 >
14
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);
15
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"); }
16
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() + ": ");
17
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"); }
18
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); }
20
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);
21
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")); } … … … …
22
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"); }
23
Legi XML Praktikum 1.XML Dokument 2.DTD 3.SAX Parser 4.DOM Parser Beising Edith 28.11.70 Weil Deutschland Phil. II 97-061-634 W.S. 2001/02
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.