XML und Datenbanken - XML-Prozessoren, XPath, XQuery - by bns26590

VIEWS: 36 PAGES: 21

									XML und Datenbanken
- XML-Prozessoren, XPath, XQuery -


Meike Klettke
Universität Rostock
Fakultät für Informatik und Elektrotechnik
meike@informatik.uni-rostock.de

www.xml-und-datenbanken.de

                                             1
Inhalt

„Techniken, um XML herum“ –
Möglichkeiten zur Verarbeitung von XML-
  Dokumenten
    XML-Prozessoren
        Einführung
        SAX (Simple API for XML) - ereignisorientierte Verarbeitung
        DOM (Document Object Model) - Manipulation von
         Baumstrukturen
        Einsatz von DOM und SAX
        JDOM, …
        Weiterführende Literatur


Meike Klettke               Vorlesung “XML und Datenbanken”            2
Universität Rostock               3) XML-Prozessoren
               XML-Prozessoren


- Einleitung       machen den Inhalt eines XML-Dokumentes für eine
- SAX
- DOM               Anwendung verfügbar
- Verwendung
- JDOM             Standardisierte Schnittstellen für zahlreiche
- Literatur
                    Programmiersprachen (Java, Phyton, C, C++, ...)
                   Einbindung von Bibliotheken

                   Auflösen von Entities
                   nichtvalidierend / validierend
                     in Bezug auf DTD oder XML Schema


               Meike Klettke           Vorlesung “XML und Datenbanken”   3
               Universität Rostock           3) XML-Prozessoren
               SAX – ereignisorientierte
               Abarbeitung
                                                    startDocument()

               <?xml version="1.0"?>
                                                                                          David Megginson
                <hotel id=                         startElement("hotel", AttributeList(
- Einleitung
                                                                          length=1,
                                                                          {name=
                                                                                          • durch Bestandteile des
- SAX                                                                      value=

- DOM
                                                                                          Dokumentes werden
                     <hotelname>                   startElement("hotelname", null)
- Verwendung                 Strand Hotel Hübner
                                                                                          Aktionen ausgelöst
- JDOM
- Literatur
                     </hotelname>                  endElement("hotelname")                • sequentielle Abarbeitung
                     <adresse>                     startElement("adresse", null)
                                                                                          • im Anwendungspro-
                           <ort>                   startElement("ort", null)
                                                                                          gramm müssen die
                              Warnemünde           characters(char[], start, length)
                                                                                          Methoden definiert
                           </ort>                  endElement("ort")                      werden, die durch
                           <telefon>                  ...                                 Auftreten von
                              0381/548230                                                 Dokumentbestandteilen
                           </telefon>                                                     ausgelöst werden
                                                                                          • zustandslos
                     </adresse>                    endElement("adresse")
                </hotel>                           endElement("hotel")

                                                   endDocument()


               Meike Klettke                       Vorlesung “XML und Datenbanken”                                     4
               Universität Rostock                           3) XML-Prozessoren
               SAX – verfügbare Methoden

                   startDocument()
- Einleitung       endDocument()
- SAX
- DOM              startElement(String, AttributeList)
- Verwendung
- JDOM
                      – Zugriff auf Elemente der AttributeList mit den Methoden
- Literatur             getName(position), getType(position), getValue(position)
                   endElement(String)
                   characters(char[], int, int)
                   processingInstruction(string, string)
                   ignorableWhitespace(char[], int, int)
                   setDocumentLocator(Locator)
                      – (Bestimmen der Stelle des Auftretens des jeweiligen
                        Ereignisses, verwendbar z.B. für Nachbearbeitung des
                        Dokumentes)

               Meike Klettke                Vorlesung “XML und Datenbanken”        5
               Universität Rostock                3) XML-Prozessoren
               DOM - Manipulation von
               Baumstrukturen
                DOMImplementation Node               NodeList       NamedNodeMap
                                                                                       Empfehlung des W3C
                                             Attr
- Einleitung
- SAX                                     CharacterData
- DOM                                                                                  beschreibt Schnittstellen
- Verwendung
                                                       Comment                            zum Zugriff auf XML-
- JDOM
- Literatur                                              Text                             Dokumente und zur
                                                                                          Veränderung von
                                                                 CDataSection
                                                                                          Struktur und Inhalten
                                           Document

                                         DocumentFragment

                                          DocumentType                                 die zugrundeliegende
                                            Element                                        Implementierung und
                                            Entity                                         Speicherung der
                                          EntityReference                                  XML-Dokumente wird
                                            Notation                                       nicht definiert !
                                         ProcessingInstruction


               Meike Klettke                             Vorlesung “XML und Datenbanken”                       6
               Universität Rostock                                3) XML-Prozessoren
               Methoden der Klasse: Node

                   Fast alle Dokumentbestandteile basieren auf dieser Klasse
- Einleitung
- SAX
- DOM              Die Klasse Node enthält
- Verwendung
- JDOM               – Methoden zur Identifikation des Knotentypes
- Literatur
                     – Methoden zur Navigation durch die Dokumentstruktur
                     – Methoden zur Manipulation der Dokumentstruktur




               Meike Klettke            Vorlesung “XML und Datenbanken”     7
               Universität Rostock            3) XML-Prozessoren
               DOM (Document Object Model) –
               Navigation durch das Dokument
                                                 • XML-Dokument als Baum dargestellt,
                                                 • Zugriff kann durch Navigation erfolgen
                                                 • Manipulation des Dokumentstruktur
- Einleitung
- SAX
- DOM
- Verwendung
                                                   ebenfalls möglich
                                     1
- JDOM
- Literatur
                                                                       Ausgehend vom Knoten
                        5                    6                         liefern folgende Methoden der Klasse Node
                                                                       die Knoten bzw. Knotenlisten
                                                                       als Ergebnis:
                         4                                               1 - getParentNode()
                               2         3
                                                                         2 - getFirstChild()
                                                                         3 - getLastChild()
                                                                         4 - getChildren()
                                                                         5 - getPreviousSibling()
                                                                         6 - getNextSibling()


               Meike Klettke                         Vorlesung “XML und Datenbanken”                         8
               Universität Rostock                         3) XML-Prozessoren
               DOM – Manipulation der Struktur
                    insertBefore
                      (newChild, refChild)




                                                                                        Löschen, Ergänzen,
- Einleitung
- SAX
                                         refChild              refChild
                                                        newChild                        Verschieben, Verändern
- DOM                                                                                   von Dokumentanteilen
                     appendChild
- Verwendung           (newChild)
- JDOM
- Literatur                                                                             Bestandteile der Schnittstelle
                                                               newChild                 Node
                     replaceChild
                       (newChild, oldChild)




                                             oldChild          newChild



                     removeChild
                       (oldChild)




                                         oldChild

               Meike Klettke                                              Vorlesung “XML und Datenbanken”                9
               Universität Rostock                                              3) XML-Prozessoren
               Interface NodeList

                   Zur Verarbeitung von Knotenlisten steht die Klasse
- Einleitung        NodeList bereit.
- SAX
- DOM              NodeList speichert eine Liste von Knoten, das
- Verwendung
- JDOM
                    Ordnungskriterium der Liste ist dabei die
- Literatur         Dokumentordnung.

                   Methoden der Schnittstelle NodeList sind:
                     – item(index) zum Zugriff auf die einzelnen Knoten, dabei
                       beginnt der Index mit 0.
                     – getLength() liefert die Anzahl der Knoten in der Liste



               Meike Klettke            Vorlesung “XML und Datenbanken”      10
               Universität Rostock            3) XML-Prozessoren
               Interface NamedNodeMap

                   Neben der NodeList steht auch das Interface
- Einleitung        NamedNodeMap zur Verfügung.
- SAX
- DOM
- Verwendung
- JDOM             Methoden dieser Klasse sind:
- Literatur
                     – getLength() - liefert die Anzahl der Knoten in der Liste
                     – item(index) - dient zum Zugriff auf die einzelnen Knoten
                       der Liste
                     – getNamedItem(name) und
                     – removeNamedItem(name) werden zum gezielten
                       Auslesen beziehungsweise Löschen eines Elementes
                       Node eingesetzt.

               Meike Klettke             Vorlesung “XML und Datenbanken”      11
               Universität Rostock             3) XML-Prozessoren
               Die Klasse: Element

                   Die Informationen von Elementen können über folgende
- Einleitung        spezialisierte Methoden erfragt und manipuliert werden.
- SAX
- DOM                – getTagName() liefert den Tagnamen eines Elementes
- Verwendung
- JDOM               – getAttribute(name) liefert das angegebene Attribut
- Literatur
                     – setAttribute(name, value) ermöglicht das Verändern und
                       Ergänzen von Attributen
                     – removeAttribute(name) löscht das spezifizierte Attribut
                     – getElementsByTagName(tagname) liefert alle Elemente
                       des Dokumentes, die den angegebenen Elementnamen
                       haben, bei Angabe von
                     – getElementsByTagName(*) werden alle Elemente
                       zurückgegeben.
               Meike Klettke            Vorlesung “XML und Datenbanken”     12
               Universität Rostock            3) XML-Prozessoren
               Methoden der Klasse Attribute


- Einleitung       Attributinformationen können über die folgenden Methoden
- SAX
- DOM               erfragt werden:
- Verwendung
- JDOM
- Literatur
                      – getName() gibt den Attributnamen zurück
                      – getValue() liefert den Attributwert und
                      – setValue(value) setzt den Attributwert.




               Meike Klettke            Vorlesung “XML und Datenbanken”    13
               Universität Rostock            3) XML-Prozessoren
               Methoden der Klasse Character
               Data
                   Zum Auslesen, Verändern und Setzen von Textanteilen
- Einleitung       Methoden der Klasse Character Data:
- SAX
- DOM                 – getLength() liefert die Länge des Textanteils
- Verwendung
- JDOM
                      – getData() liefert den vollständigen Text
- Literatur           – substringData(start,count) liefert einen Teilstring des Textes, der bei
                        start beginnt und soviele Zeichen enthält, wie bei count angegeben ist
                      – appendData(text) hängt den angegebenen Text an der Originaltext an
                      – replaceData(offset,count,text) ersetzt den durch offset und count
                        definierten Textanteil durch den angegebenen Text
                      – insertData(offset,text) fügt an der durch offset angegebenen Stelle
                        den Text ein
                      – deleteData(offset,count) löscht den durch offset und count
                        spezifizierten Textanteil


               Meike Klettke                   Vorlesung “XML und Datenbanken”               14
               Universität Rostock                   3) XML-Prozessoren
               Weitere Schnittstellen

               In ähnlicher Form wie für Elemente, Attribute und Character
- Einleitung      Data stehen für die anderen Knotenarten (z.B.
- SAX
- DOM           Processing Instructions,
- Verwendung
- JDOM          Kommentare und
- Literatur
                Entities)

               Schnittstellen und Methoden zur Abfragen von allen
                  Informationen des XML-Dokumentes zur Verfügung.




               Meike Klettke           Vorlesung “XML und Datenbanken”       15
               Universität Rostock           3) XML-Prozessoren
               Genereller Vergleich DOM - SAX
                                             XML-                 DTD/
                                           Dokument            XML Schema

- Einleitung
- SAX
- DOM
                                                      Parser
- Verwendung
- JDOM
- Literatur

                                     DOM                                SAX

                                                            startDocument
                                                            startElement        Anwendung,
                                                            startElement        implemen-
                                                                                tiert
                                                            endElement
                                                                                Document
                                                             ...                Handler
                                                            endDocument


                                                                           nach Roland Böndgen


               Meike Klettke                     Vorlesung “XML und Datenbanken”                 16
               Universität Rostock                     3) XML-Prozessoren
               Zum Einsatz von SAX und DOM

                                     SAX                                     DOM
- Einleitung    einfacher Zugriff                       Navigation durch
- SAX
- DOM           einfach strukturierte oder             Dokumentstruktur
- Verwendung
- JDOM
               gleichartig strukturierte                 dadurch kontextabhängige
- Literatur    Dokumente                                Zugriffe
                                                         Manipulation der Struktur



                auch geeignet für sehr                 Für sehr große XML-
               große XML-Dokumente                      Dokumente problematisch
                geeignet, wenn Zugriff nur
               auf geringe Anteile eines                   auch Speicherungsstruktur
               Dokumentes erfolgt

               Meike Klettke               Vorlesung “XML und Datenbanken”            17
               Universität Rostock               3) XML-Prozessoren
               JDOM

                   JDOM : einfaches und effizientes Lesen, Verändern und
- Einleitung
- SAX
                    Erzeugen von XML-Dokumenten
- DOM
- Verwendung
                   “Java-optimiert”
- JDOM
- Literatur
                   Basiert (trotz Namensähnlichkeit) nicht auf DOM
                   JDOM versteckt die Komplexität von XML soweit möglich,
                    z.B.:
                     – Elemente haben Inhalte, nicht Nachfolger-Textknoten
                     – Auf diese kann durch die API direkt zugegriffen werden

                   Informationen, API, Publikationen usw. unter:
                    www.jdom.org

               Meike Klettke             Vorlesung “XML und Datenbanken”    18
               Universität Rostock             3) XML-Prozessoren
Zusammenfassung

    SAX:
      – sequentielle Verarbeitung von XML-Dokumenten
      – nicht kontextabhängig
      – nur lesende Zugriffe
    DOM/ JDOM
      – Verwendung einer internen Struktur (Beschreibung
        dieser aber nur über Schnittstellen)
      – Navigation durch die Informationen des XML-
        Dokumenten, kontextabhängige Zugriffe möglich
      – Manipulation möglich
    zahlreiche XML-Prozessoren existieren

Meike Klettke           Vorlesung “XML und Datenbanken”    19
Universität Rostock           3) XML-Prozessoren
Literatur

XML-Prozessoren:
 Informationen über SAX:

   – www.saxproject.org
 DOM:

   – www.w3.org/DOM-Level-1/
   – www.w3.org/DOM-Level-2/
   – www.w3.org/DOM-Level-3/
XPath, XQuery:
 Schöning, Lehner: XQuery, dpunkt.verlag, 2004

 www.w3.org/TR/xpath

 www.w3.org/XML/Query

Meike Klettke         Vorlesung “XML und Datenbanken”   20
Universität Rostock         3) XML-Prozessoren
Verfügbare Parser


    An dieser Stelle sollen keine SAX- oder DOM-Prozessoren
     aufgezählt werden, da die Aussagen, was sie jeweils
     unterstützen, schnell veralten
    viel verwendet wird: Xerces

    (kommentierte) Softwaresammlungen unter:
      – xml.coverpages.org
      – www.xmlsoftware.com




Meike Klettke           Vorlesung “XML und Datenbanken”    21
Universität Rostock           3) XML-Prozessoren

								
To top