460 likes | 629 Views
XML. Extensible Markup Language. XML. Metasprache Sprache, die Sprachen beschreibt Sprachen beschreiben Formate zum Datenaustausch. Beispiel. Hans Meyer Lohmannstrasse 23 06366 Köthen Dr. Else Müller Bernburger Strasse 56 06366 Köthen. <Patient> <Name> <Strasse> <Ort>
E N D
XML Extensible Markup Language
XML • Metasprache • Sprache, die Sprachen beschreibt • Sprachen beschreiben Formate zum Datenaustausch
Beispiel Hans Meyer Lohmannstrasse 23 06366 Köthen Dr. Else Müller Bernburger Strasse 56 06366 Köthen
<Patient> <Name> <Strasse> <Ort> </Patient> <Arzt> <Name> <Strasse> <Ort> </Arzt> </Name> </Strasse> </Ort> </Name> </Strasse> </Ort> Hans Meyer Lohmannstrasse 23 06366 Köthen Dr. Else Müller Bernburger Strasse 56 06366 Köthen Beispiel
Aufbau von XML-Dokumenten • Prolog • Deklaration der Dokumenttypen • DTD (Document Type Definition) • Elemente
Document Type DefinitionDTD • Beschreibt die Grammatik eines XML – Dokuments • Erlaubte Elemente und Attribute • Deren Datentyp und Wertebereich • Deren Schachtelung • Ein XML – Dokument, das den Regeln einer DTD entspricht heißt gültig
Beispiel DTD <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE Personen [ <!ELEMENT Personen (Person)> <!ELEMENT Person (#PCDATA)> ]> <Personen> <Person> Hans Meyer Lohmannstrasse 23 06366 Köthen </Person> </Personen> http://www.inf.hs-anhalt.de/~Worzyk/Telemedizin/Beispiele/Patienten1.xml
Aufbau von XML-Dokumenten • DTD beschreibt die Eigenschaften der Elemente • Elemente werden durch ein Startzeichen <Elementname> eingeleitet und durch ein Endzeichen </Elementname> abgeschlossen. Elemente können Elemente enthalten. • #PCDATA Parsed character data: Das Element besteht aus einer Kette der im definierten Zeichensatz erlaubten Zeichen.
Folge von Elementen Untergeordnete Elemente werden in der Deklaration durch Kommata voneinander getrennt und in Klammern eingeschlossen. Beispiel: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE Personen [ <!ELEMENT Personen (Patient,Arzt)> <!ELEMENT Patient (Name,Adresse)> <!ELEMENT Arzt (Name, Adresse)> <!ELEMENT Name (#PCDATA)> <!ELEMENT Adresse (#PCDATA)> ]> http://www.inf.hs-anhalt.de/~Worzyk/Telemedizin/Beispiele/Patienten2.xml http://www.inf.hs-anhalt.de/~Worzyk/Telemedizin/Beispiele/Patienten3.xml
Auswahlliste • Auswahl genau eines Elementes: Die wahlweise zur Verfügung stehenden Elemente werden durch | getrennt • Beispiel: <!DOCTYPE Personen [ <!ELEMENT Personen (Patient|Arzt)> <!ELEMENT Patient (Name,Adresse,Diagnose)> <!ELEMENT Arzt (Name, Adresse,Fachgebiet)> http://www.inf.hs-anhalt.de/~Worzyk/Telemedizin/Beispiele/Patienten4.xml
Mehrmaliges Auftreten * Das Element kann keinmal oder beliebig oft erscheinen + Das Element kann mindestens einmal oder beliebig oft erscheinen ? Das Element kann keinmal oder höchstens einmal erscheinen
Worzyk FH Anhalt Attribute <!ATTLIST element-name attribute-name attribute-type default-value> Attributtypen: CDATA, (en1|en2|..), ID, IDREF, IDREFS, NMTOKEN, NMTOKENS, ENTITY, ENTITIES, NOTATION, xml: Defaultwerte: value #REQUIRED, #IMPLIED, #FIXED value http://www.inf.hs-anhalt.de/~Worzyk/Telemedizin/Beispiele/Patienten5.xml Datenbanksysteme 2 SS 2004 Seite 13 - 12
Kommentare Kommentare werden von <!– und --> eingeschlossen.
Wohlgeformte XML - Datei • Am Beginn steht die XML-Deklaration, die den Bezug zu XML herstellt • Es gibt mindestens ein Datenelement • Es gibt ein äußerstes Datenelement, das alle anderen Datenelemente enthält • Die erforderlichen Attribute sind angegeben • Alle Werte haben den richtigen Datentyp und Wertebereich • Die Elemente müssen korrekt verschachtelt sein
Gültige XML-Datei • Die Datei ist wohlgeformt • Der Datei ist eine DTD zugeordnet • Der Inhalt der Datei entspricht den Regeln der zugeordneten DTD
Parser Prüfen, ob die XML-Datei gültig ist: <html> <body> <script type="text/javascript"> var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") xmlDoc.async="false" xmlDoc.validateOnParse="true" xmlDoc.load("Patienten5.xml") document.write("<br />Error Code: ") document.write(xmlDoc.parseError.errorCode) document.write("<br />Error Reason: ") document.write(xmlDoc.parseError.reason) document.write("<br />Error Line: ") document.write(xmlDoc.parseError.line) </script> </body> </html> http://www.inf.hs-anhalt.de/~Worzyk/Telemedizin/Beispiele/Parser.htm
DTD - Nachteile • Wenige Datentypen • Beschreibung nicht in der XML - Syntax
XML - Schema Definiert: • Elemente, die in einem Dokument erscheinen können • Attribute, die ein Element haben kann • die Kindelemente • die Reihenfolge der Kindelemente • die Anzahl der Kindelemente • Pflichtfelder • Datentypen von Elementen und Attributen • Defaultwerte
XML SchemaVorteil gegenüber DTD • Erweiterbar um zukünftige Anwendungen • in XML geschrieben • Unterstützen Namesspaces • xmlns:xs="http://www.w3.org/2001/XMLSchema“ • unterstützen Datentypen • xs;date, xs;dateTime, xs:string
Anfragen an XML - Dateien • XPath • XQuery
XPath Die Sprache XPath dient zur Adressierung von Teilen eines XML-Dokuments. Sie wurde für die Verwendung sowohl in XSLT als auch in XPointer entworfen. XPath modelliert ein XML-Dokument als einen Baum, der aus Knoten besteht. http://www.informatik.hu-berlin.de/~obecker/obqo/w3c-trans/xpath-de-20010702/
Beispiel <spielfilme> <film regie="Tom Tykwer" titel="Lola rennt"> <beschreibung> <name typ="w">Lola</name> rennt für <name typ="m">Manni</name>, der 100000 Mark liegengelassen hat und noch 20 Minuten Zeit hat, das Geld auszuliefern. </beschreibung> </film> </spielfilme>
Als Baumstruktur http://de.selfhtml.org/xml/regeln/baumstruktur.htm
Anfrage mit XPath /spielfilme/film/beschreibung/name ////name [@Typ=“w“] /spielfilme/film[regie ="Tom Tykwer" ]* http://www.w3schools.com/xpath/xpath_examples.asp
XQuery • Anfragesprache für XML Daten • benutzt Xpath Audrücke • Analogie zu SQL
Xquery Beispiel <?xml version="1.0" encoding="ISO-8859-1"?> <bib> <book year="1994"> <title>TCP/IP Illustrated</title> <author><last>Stevens</last><first>W.</first></author> <publisher>Addison-Wesley</publisher> <price>65.95</price> </book> <book year="1992"> <title>Advanced Programming in the Unix environment</title> <author><last>Stevens</last><first>W.</first></author> <publisher>Addison-Wesley</publisher> <price>65.95</price> </book> <book year="2000"> <title>Data on the Web</title> <author><last>Abiteboul</last><first>Serge</first></author> <author><last>Buneman</last><first>Peter</first></author> <author><last>Suciu</last><first>Dan</first></author> <publisher>Morgan Kaufmann Publishers</publisher> <price>39.95</price> </book> <book year="1999"> <title>The Technology and Content for Digital TV</title> <editor> <last>Gerbarg</last><first>Darcy</first> <affiliation>CITI</affiliation> </editor> <publisher>Kluwer Academic Publishers</publisher> <price>129.95</price> </book> </bib>
Xquery Beispiel Anfrage;: doc("books.xml")/bib/book[price<50] ergibt: <book year="2000"> <title>Data on the Web</title> <author><last>Abiteboul</last><first>Serge</first></author> <author><last>Buneman</last><first>Peter</first></author> <author><last>Suciu</last><first>Dan</first></author> <publisher>Morgan Kaufmann Publishers</publisher> <price>39.95</price> </book>
FLWOR For, Let, Where, Order by, Return for $x in doc("books.xml")/bib/book where $x/price>50 order by $x/title return $x/title ergibt: <title>Advanced Programming in the Unix environment</title> <title>TCP/IP Illustrated</title> <title>The Technology and Content for Digital TV</title>
XML - Dokumente in Datenbanken XML - Dokumente • datenzentriert • dokumentzentriert • semistrukturiert
Arten der Speicherung • Speicherung als Ganzes • Generische Speicherung der Dokumentenstruktur • Abbildung auf Datenbankstrukturen
Speicherung von XML-Dokumenten als Ganzes Original in einem Dateien system oder als CLOB in der Datenbank Volltextindex Strukturindex
Beispiel <hotel url=“http://www.hotel-huebner.de“ id=“h0001“ erstellt-am=“03/02/2003“ Autor=“Hans Müller“> <hotelname>Hotel Hübner</hotelname> <kategorie>4</kategorie> <adresse> <plz>18199</plz> <ort>Warnemünde</ort> <strasse>Seestraße</strasse> </adresse> <telefon>0381 / 5434-0</telefon> <fax> 0381 / 5434-444</fax> <anreisebeschreibung>Aus Richtung Rostock kommend ... </anreisebeschreibung> </hotel>
Volltextindex <hotel url=“http://www.hotel-huebner.de“ id=“h0001“ erstellt-am=“03/02/2003“ Autor=“Hans Müller“> <hotelname>Hotel Hübner</hotelname> <kategorie>4</kategorie> <adresse> <plz>18199</plz> <ort>Warnemünde</ort> <strasse>Seestraße</strasse> </adresse> <telefon>0381 / 5434-0</telefon> <fax> 0381 / 5434-444</fax> <anreisebeschreibung>Aus Richtung Rostock kommend ... </anreisebeschreibung> </hotel>
Volltext- undStrukturindex <hotel url=“http://www.hotel-huebner.de“ id=“h0001“ erstellt-am=“03/02/2003“ Autor=“Hans Müller“> <hotelname>Hotel Hübner</hotelname> <kategorie>4</kategorie> <adresse> <plz>18199</plz> <ort>Warnemünde</ort> <strasse>Seestraße</strasse> </adresse> <telefon>0381 / 5434-0</telefon> <fax> 0381 / 5434-444</fax> <anreisebeschreibung>Aus Richtung Rostock kommend ... </anreisebeschreibung> </hotel>
Anfragen Volltextindex hotel AND warnemünde (hotel OR pension) AND (rostock OR warnemünde) Volletxt- und Strukturindex hotel.adresse.ort CONTAINS (“warnemünde“) AND hotel.freizeitmoeglichkeit CONTAINS (“swimming pool“)
Generische Speicherung Alle Informationen aus einem XML-Dokument werden gespeichert • einfache generische Speicherung • Document Object Model
Document Object Model Die Baumstruktur wird auf eine Klassenstruktur abgebildet Speicherung in objektrelationalen oder objektorientierten Datenbanken
Anfragen • XPath • QXuery • XQL • Abfragesprache der Software AG • SQL
Abbildung auf Datenbankstrukturen DTD oder Schema müssen vorhanden sein automatische oder anwenderdefinierte Verfahren Abbildung auf relationale objektrelationale objektorientierte Datenbanken
Anfragen • SQL mit • Joins • Aggregatfunktionen • Anfrageopimierung • Update