380 likes | 473 Views
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
E N D
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 • XQuery – Das Ende der Namensraumproblematik? • Grundlegende Begriffe • N-Knoten überflüssig? • Fazit Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
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
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
1.1 Einführendes Beispiel Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
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
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
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
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
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
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
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
2.1 Idee & Definitionen Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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. 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
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
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
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
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
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
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
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. 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