1 / 38

SEMINAR: „XML UND DATENBANKEN“

SEMINAR: „XML UND DATENBANKEN“. Thema 3: „XML-Namensräume“. Matthias Haupt 08.05.2008. Gliederung. Namensräume – Warum? Einführendes Beispiel Problematik W3C Empfehlung als Lösung „Namensräume“ Idee & erste Definitionen Namensräume: Theorie und Beispiele

maxim
Télécharger la présentation

SEMINAR: „XML UND DATENBANKEN“

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SEMINAR: „XML UND DATENBANKEN“ Thema 3: „XML-Namensräume“ Matthias Haupt 08.05.2008

  2. Gliederung • Namensräume – Warum? • Einführendes Beispiel • Problematik • W3C Empfehlung als Lösung „Namensräume“ • Idee & erste Definitionen • Namensräume: Theorie und Beispiele • XQuery – Das Ende der Namensraumproblematik? • Grundlegende Begriffe • N-Knoten überflüssig? • Fazit Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  3. Gliederung • Namensräume – Warum? • Einführendes Beispiel • Problematik • W3C Empfehlung als Lösung „Namensräume“ • Idee & erste Definitionen • Namensräume: Theorie und Beispiele • XQuery – Das Ende der Namensraumproblematik? • Grundlegende Begriffe • N-Knoten überflüssig? • Fazit Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  4. 1.1 Einführendes Beispiel • Vorbemerkung • Definiere „Markup-Vokabular“ als Einheit aller Elemente und Attribute eines XML-Dokuments. • Problem? • Was passiert wenn ein XML-Dokument unterschiedliches Markup-Vokabular besitzt und Anwendungen von außen auf die Daten zugreifen wollen UND gleiche Elemente oder Attribute existieren, welche unterschiedliche Bedeutungen haben? Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  5. 1.1 Einführendes Beispiel Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  6. 1.1 Einführendes Beispiel • Voraussetzungen für das fehlerfreie Zusammenwirken verschiedener Anwendungen und verschiedener XML-Dokumente: • Einfache, möglichst fehlerfreie Nutzung durch leicht zu verstehende Namen für das Markup-Vokabular • Eindeutigkeit der Namen auch für XML-Dokumente mit unterschiedlichem Markup-Vokabular Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  7. 1.1 Einführendes Beispiel • Zurück zum Beispiel: • 1. <Titel> </Titel> Element, welches einen zur Ansprache verwendeten Titel einer Person bestimmt • 2. <Titel> </Titel> Element, welches einen Literaturtitel beschreibt • Zwei unterschiedliche Bedeutungen mit gleichem Elementnamen! Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  8. 1.2 Problematik ? • Gesucht: Spezifikation, die eindeutige Namenszuweisungen erlaubt! • Forderungenan eine Lösung: • Eindeutigkeit des Markup-Vokabulars über die Dokumentgrenzen hinweg • Aufwand muss sich inGrenzen halten, da es sonst zu Performance-Problemen kommen könnte • Möglichst minimale Fehlerquellen ! ! ! Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  9. Gliederung • Namensräume – Warum? • Einführendes Beispiel • Problematik • W3C Empfehlung als Lösung „Namensräume“ • Idee & erste Definitionen • Namensräume: Theorie und Beispiele • XQuery – Das Ende der Namensraumproblematik? • Grundlegende Begriffe • N-Knoten überflüssig? • Fazit Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  10. 2. W3C Empfehlung als Lösung • 1. Spezifikation zur Lösung • „W3C Recommendation 14 January 1999“ • 2.a Don Chamberlin – 11 August 2004 • „[DM] IBM-DM-031: No need for namespace nodes” • 2.b Erneuerung • „W3C Recommendation 16 August 2006“ • 3. XQuery-Datenmodell • „W3C Recommendation 23 January 2007” Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  11. 2.1 Idee & Definitionen • Lösungsansatz zur Eindeutigkeitsproblematik: • Namensräume als Forderung für valide XML-Dokumente • Definition: „Ein XML-Namensraum ist eine Zusammenstellung von Namen, identifiziert durch einen URI-Verweis, die in XML-Dokumenten als Elementtypen und Attributnamen verwendet werden.“ • Anmerkung: • Seit XML1.1 statt URI auch IRI (internationalizedresourceidentifier) möglich • Ermöglicht Einsatz von Zeichen außerhalb des ASCII-Codes wie é oder π • Im Grunde aber nur theoretische Unterscheidung, da Parser nicht auf zulässige XML 1.0 URIs prüft Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  12. 2.1 Idee & Definitionen • Definition:URI-Verweise sind kompakte Zeichenketten zur Identifikation oder Benennung von Ressourcen. •  können URL (Locator), URN (Name) oder beides sein • URL – wie „Adresse“ - http://www.wikipedia.org/ • URN – wie „Name“ - ISBN System • Achtung! – leerer String ist URI-Verweis, aber nicht als Namensraum nutzbar • Definition: „URI-Verweise, die Namensräume identifizieren, werden als identisch angesehen, wenn sie Zeichen für Zeichen genau gleich sind.“ • http://www.wikipedia.org/ != http://www.Wikipedia.org/ • (Fehlende Identität) != (fehlende gleiche Funktionalität) • Ungleiche URI, gleicher Name  anderer Elementtyp • Kombination URI-Namensraum + eigener Namensraum = einzigartigerIdentifier • URI-Verweis muss nicht zwangsläufig dereferenzierbar sein (eine URL bspw. muss nicht tatsächlich existieren) Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  13. 2.1 Idee & Definitionen Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  14. 2.1 Idee & Definitionen • Idee zur Lösung: Erweiterung der Elementnamen <?xml version="1.0" encoding="UTF-8“ standalone="yes"?> <http://www.beispiel.org/schema1:element1> <http://www.beispiel.org/schema1:unterelement1 /> <http://www.beispiel.org/schema1:unterelement2 /> </http://www.beispiel.org/schema1:element1> • Probleme: • Unlesbarkeit • „/“ nicht als Pfadtrenner in Elementnamen erlaubt • Speicheraufwand steigt • Problematisch bei Änderungen Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  15. 2.1 Idee & Definitionen • Anmerkungen: • Namensräume erst nach der XML1.0 Spezifikation, aber abwärtskompatibel gehalten • Namensräume sind unabhängig von DTD •  Können also in ungültigen oder gültigen Dokumenten angewandt werden Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  16. 2.2 Namensräume: Theorie und Beispiele Namespaces in XML 1.0 (Second Edition) W3C Recommendation 16 August 2006 Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  17. 2.2 Namensräume: Theorie und Beispiele • Definition: „Ein Namensraum wird deklariert, indem reservierte Attribute verwendet werden. Ein Attributname muss entweder xmlns sein oder es muss ein Präfix-xmlns: verwendet werden. Diese Attribute müssen, wie jedes andere XML-Attribut, direkt oder durch eine Voreinstellung zur Verfügung gestellt werden.“ • Alle andere Präfixe sollten nicht mit „x,m,l“ beginnen • Namensraum kann „aufgehoben“ werden (seit XML1.1), indem man dem Namensraum  ““ (leerer Wert) zuordnet Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  18. 2.2 Namensräume: Theorie und Beispiele • einfache Definition: Ein erweiterter Namebesteht aus dem Namensraumnamen und dem lokalen Teil. • einfache Definition: Ein qualifizierter Name ist ein Namenssubjekt, welches referenziert wird. 18 08.05.2008 Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  19. 2.2 Namensräume: Theorie und Beispiele Attributnamen für Namensraum-Deklarationen: [1]   NSAttName   ::=   PrefixedAttName|DefaultAttName // Namensraumattributname – entweder Präfixversion oder voreingestellt [2]   PrefixedAttName   ::=   'xmlns:' NCName // Nutzung der Präfixvariante – müssen Elementnamen vorangestellt werden bspw. „<MENSCH xmlns:hum=‘http://www.mensch.org/Mensch‘></Mensch> [3]   DefaultAttName   ::=   'xmlns' // voreingestellter Namensraumname, der solange gilt, solange keine neue Definition Anwendung findet bspw. „<MENSCH xmnls=‘http://www.w3.org/TR/REC-html40‘></MENSCH> // HTML 4.0 Namensraum  [4]   NCName   ::=   NCNameStartChar NCNameChar * [5]   NCNameChar   ::=   NameChar - ':' // NS-Constraints (Begrenzungen, Nebenbedingungen) //alle Unicode Zeichen bis auf „:“ oder Zeichen, die von XML reserviert sind wie „<“ oder „>“ (extra Referenzen zur Nutzung) bspw. [6]   NCNameStartChar  ::=  Letter | '_' // Startzeichen kann nur ein Buchstabe oder Unterstrich sein bspw. „<MENSCH xmlns:_hum=‘[…]‘/>“ODER „<MENSCH xmlns:hum=‚[…]‘/>“ Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  20. 2.2 Namensräume: Theorie und Beispiele Qualifizierte Namen: [7]   QName   ::=   PrefixedName| UnprefixedName // Qualifizierte Namen beginnt entweder mit oder ohne Präfix [8]   PrefixedName   ::=    Prefix ':' LocalPart // Präfixversion: Bsp: <html:LocalPart /> [9]   UnprefixedName   ::=    LocalPart // ohne Präfix: Bsp: <LocalPart /> [10]   Prefix   ::=   NCName // wie vorher dargestellt in Punkt [4] [11]   LocalPart   ::=   NCName // wie vorher dargestellt in Punkt [4] Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  21. 2.2 Namensräume: Theorie und Beispiele Aufbau von Elementnamen / Tags: /* S – Leerzeichen */ [12]    STag   ::=   '<' QName (S Attribute)* S? '>' // StartTag Bsp. mit Präfix <html:table style="width: 100%“> // „?“- für Verarbeitungsanweisungen wie <?php> [13]    ETag   ::=   '</' QName S? '>‚ // EndTag Bsp. mit Präfix </html:table> [14]    EmptyElemTag   ::=   '<' QName (S Attribute)* S? '/>‚ // Tag mit leerem Element Bsp. mit Präfix <html:table /> Attribute: [15]    Attribute   ::=   NSAttName Eq AttValue| QName Eq AttValue /* Attribut sind entweder Namensraumdeklarationen oder werden als qualifizierte Namen gegeben Bsp. mit Präfix <hallo xmnls:hallo=““ /> oder <hallo1:el1 hallo2:weite=“100“ /> Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  22. 2.2 Namensräume: Theorie und Beispiele Beispiel: Bindung eines Elements an einen Namensraum <!-- explizite Variante --> <mh:el1 xmlns:mh='http://element1.edu/schema1'> <!-- Das „mh"-Präfix wird für das Element „el1" und Inhalt an http://element1.edu/schema1 gebunden. --> <mh:unterel1 /> /* leeres Element */ <mh:unterel2> <mh:unterunterel21 /> /* leeres Element */ <mh:unterunterel22 /> /* leeres Element */ </mh:unterel2> </mh:el1> • Namensraum wird als Präfix jedem Element zugeordnet Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  23. 2.2 Namensräume: Theorie und Beispiele Struktur in Baumform  2. Möglichkeit einen Namensraum im Vater deklarieren, der solange gilt, solange keine erneute Deklaration erfolgt Namensraumdeklaration:xmnls:mh='http://beispiel.edu/schema1'> mh:el1 mh:unterel1 mh:unterel2 mh:unterunterel21 mh:unterunterel22 Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  24. 2.2 Namensräume: Theorie und Beispiele Beispiel: Bindung eines Elements an einen Namensraum <!-- implizite Variante oder „Namespace Defaulting“ --> <el1 xmlns='http://element1.edu/schema1'> <!– Das Element el1 und alle Kindelemente werden an den Namensraum http://element1.edu/schema1 gebunden. --> <unterel1 /> /* leeres Element */ <unterel2> <unterunterel21 /> /* leeres Element */ <unterunterel22 /> /* leeres Element */ </unterel2> </el1> • Namensraum wird Vaterelement zu geordnet und gilt solange keine neue Deklaration in einem Kind für dieses Element und seine Kinder erfolgt Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  25. 2.2 Namensräume: Theorie und Beispiele Struktur in Baumform Namensraumdeklaration:xmnls='http://beispiel.edu/schema1'> el1 unterel1 unterel2 unterunterel21 unterunterel22 Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  26. 2.2 Namensräume: Theorie und Beispiele Beispiel: Bindung eines Attributs an einen Namensraum und Mischform <!-- explizite Variante --> <htmlxmlns=‘http://www.w3.org/HTML/1998/html4‘ xmlns:mh='http://element1.edu/schema1‘> <!– Das Element html und alle Kindelemente werden an den Namensraum ‘http://www.w3.org/HTML/1998/html4‘ gebunden, mh wird als zusätzliches Präfix für den Namensraum 'http://element1.edu/schema1‘ definiert--> <table><tr> <tdmh:attr1=“no_entry“> <mh:unterel1 /> <mh:unterel2 /> </td> </tr></table> • Ein eventuell übergeordneter Namensraum (bspw. html) kann es nötig machen, nur einzelne Attribute zum Namensraum zuzuweisen Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  27. 2.2 Namensräume: Theorie und Beispiele • Weitere Forderungen: • Attribute in einem Tag sollen keine identischen Namen oder • Qualifizierte Namen mit identischem LocalPartund Präfix haben, die an den selben Namensraum gebunden sind • Beispiel für Fehler: • Wohlgeformtheitsforderung – ein Element, darf nicht zwei Attribute gleichen Namens besitzen! <EL1 xmlns:mh1=“http://www.beispiel.org/schema1“ xmlns:mh2=“http://www.beispiel.org/schema1“> <FEHLER1 hallo=“gruss“ hallo=“kein gruss“ /> <FEHLER2 mh1:zahl=“5“ mh2:zahl=“3“ /> </EL1> • Anmerkung:defaultNamespaces werden nicht per se Attributnamen zugeordnet, damit kann ein Ausdruck, in dem ist und dieser Tag vorkommt noch korrekt sein: <KORREKT mh1:zahl=“1“ zahl=“5“ /> mit mh1 == DefaultNamensraum • Attributen muss direkt ein Namensraum zugewiesen werden Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  28. Gliederung • Namensräume – Warum? • Einführendes Beispiel • Problematik • W3C Empfehlung als Lösung „Namensräume“ • Idee & erste Definitionen • Namensräume: Theorie und Beispiele • XQuery – Das Ende der Namensraumproblematik? • Grundlegende Begriffe • N-Knoten überflüssig? • Fazit Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  29. 3. XQuery – Das Ende der Namensraumproblematik? XQuery 1.0: An XML Query Language W3C Recommendation 23 January 2007 Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  30. 3.1. Grundlegende Begriffe • XPath 1.0 – 1999 • Ziel: Adressierung und Auswahl von Teilen eines XML-Dokuments •  Anfragesprache an XML-Dokumente • XML-Dokument als Baum • 7 Knotenarten: Dokumentknoten, Elementknoten, Attributknoten, Kommentarknoten, Verarbeitungsanweisungsknoten, Textknoten, Namensraumknoten • XPath-Ausdrücke für Anfragen (Lokalisierungspfad aus Lokalisierungsschritten mit „/“) • Bsp. /Einkauf/Artikel[@Anzahl=“2“]/Bezeichnung • XPath 2.0 – 2007 – Erweiterung  Wechsel auf XQuery - Datenmodell Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  31. 3.1. Grundlegende Begriffe • XQuery – Datenmodell: • XQuery verzichtet auf die Bedingung wohlgeformter XML-Dokumente • Wohlgeformt: Einschränkungen bzgl. der Platzierung und Schreibweise der Tags (jeder offene Tag bedingt einen schließenden Tag; alle Attributwerte müssen in Anführungszeichen stehen) • XQuery – erlaubt auch freistehende A-Knoten (später mehr) • Operation auf Sequenzen • Sequenzen bestehen aus Sequenzeinträgen Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  32. 3.1. Grundlegende Begriffe • Sequenzeinträge sind entweder atomarer Wert oder Knoten • Atomarer Wert = Wert eines atomaren Typen (vordefinierte Typen wie string, boolean, … und untypedAtomic •  geordnetes Paar aus Wert und Typnamen • Bsp. [10, integer]  noch nicht ganz richtig • Typnamen in XQuery – Tripel aus: • [opt. NSPrefix, opt. NSName, Typnamen] • Bei vordefinierten Typen (XML-Schema, XQuery): • NSName := “http://www.w3.org/2001/XMLSchema“ • NSPrefix := “xs“ • Bsp. Integer – Wert ‘10‘: • [10, [xs, http://www.w3.org/2001/XMLSchema, integer]] Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  33. 3.1. Grundlegende Begriffe • Namensraumknoten (“N-Knoten“): • Bindung von NSName an NSPrefix • Reihenfolge der NS Bindungen unwesentlich • Vater-Kind-Beziehungen zwischen Knoten: • Nur D-Knoten (Dokument-K.) und E-Knoten (Element-K.) können Vater sein • A, N können einseitige Vater-Kind-Beziehung als Kind aufbauen Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  34. 3.2. N-Knoten überflüssig? • Zur Erinnerung: • XML-Namensräume zur Vermeidung von Namenskollisionen • NSName  localPart  eindeutig • [http://www.beispiel.org/BeispielName, LocalPart] • In XML-Dokumenten: • Referenzierung von NSNames durch NSPrefixes • [mh, http://www.beispiel.org/BeispielName/LocalPart] •  Notwendigkeit der Verwaltung dieser Informationen •  XML-Infoset – Namensraum-Informationseinheiten •  XQuery – N-Knoten zur Informationsverwaltung und Derefernzierung von Namensräumen und Namensraumpräfixen • Jeder E-Knoten besitzt einen N-Knoten zur Dereferenzierung •  Problem freistehende A-Knoten als Beispiel Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  35. 3.2. N-Knoten überflüssig? • Problem: freistehende A-Knoten: • Vaterlos •  keine N-Knoten (an Vater-E-Knoten) keine Namensrauminformationen •  N-Knoten reichen nicht aus um Namensraumpräfix aufzulösen! • Andere Möglichkeit der Namensauflösung gesucht! • Lösung W3C: • Andere Möglichkeit  generelle Definition von Namen als Tripel [NSPrefix*, NSName*, localPart] • [mh, http://www.beispiel.org/Beispiel, LocalPart] • * NSName darf nur fehlen, wenn auch NSPrefix fehlt •  Auflösung von Namensraumpräfixen nicht mehr nötig, da: • NSName bereits Teil des (falls vorhandenen) Namens ist •  N-Knoten überflüssig, da redundant Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  36. Gliederung • Namensräume – Warum? • Einführendes Beispiel • Problematik • W3C Empfehlung als Lösung „Namensräume“ • Idee & erste Definitionen • Namensräume: Theorie und Beispiele • XQuery – Das Ende der Namensraumproblematik? • Grundlegende Begriffe • N-Knoten überflüssig? • Fazit Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  37. 4. Fazit • Namensräume als geeignete Form der Identifizierung • Trotz Redundanzen - N-Knoten dennoch ins XQuery-Datenmodell aufgenommen • Hauptgrund wahrscheinlich: Verhindern des mühsamen Umschreibens der vorigen, sich darauf beziehenden, Spezifikationen Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt

  38. Vielen Dank für Ihre Aufmerksamkeit!

More Related