SEMINAR: XML UND DATENBANKEN Matthias Haupt Thema 3: XML-Namensräume
1. Namensräume – Warum? 1. Einführendes Beispiel 2. Problematik 2. W3C Empfehlung als Lösung Namensräume 1. Idee & erste Definitionen 2. Namensräume: Theorie und Beispiele 3. XQuery – Das Ende der Namensraumproblematik? 1. Grundlegende Begriffe 2. N-Knoten überflüssig? 4. Fazit G LIEDERUNG Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
1. Namensräume – Warum? 1. Einführendes Beispiel 2. Problematik 2. W3C Empfehlung als Lösung Namensräume 1. Idee & erste Definitionen 2. Namensräume: Theorie und Beispiele 3. XQuery – Das Ende der Namensraumproblematik? 1. Grundlegende Begriffe 2. N-Knoten überflüssig? 4. Fazit G LIEDERUNG Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
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? 1.1E INFÜHRENDES B EISPIEL Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
Beispiel 1Beispiel2 Professor xy … blbla bljfas … Unterschiedlicher Kontext identische Elementnamen 1.1E INFÜHRENDES B EISPIEL Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
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 1.1E INFÜHRENDES B EISPIEL Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
Zurück zum Beispiel: 1. Element, welches einen zur Ansprache verwendeten Titel einer Person bestimmt 2. Element, welches einen Literaturtitel beschreibt Zwei unterschiedliche Bedeutungen mit gleichem Elementnamen! 1.1E INFÜHRENDES B EISPIEL Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
Gesucht:Spezifikation, die eindeutige Namenszuweisungen erlaubt! Forderungen an eine Lösung: Eindeutigkeit des Markup-Vokabulars über die Dokumentgrenzen hinweg Aufwand muss sich in Grenzen halten, da es sonst zu Performance-Problemen kommen könnte Möglichst minimale Fehlerquellen 1.2P ROBLEMATIK Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
1. Namensräume – Warum? 1. Einführendes Beispiel 2. Problematik 2. W3C Empfehlung als Lösung Namensräume 1. Idee & erste Definitionen 2. Namensräume: Theorie und Beispiele 3. XQuery – Das Ende der Namensraumproblematik? 1. Grundlegende Begriffe 2. N-Knoten überflüssig? 4. Fazit G LIEDERUNG Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
1. Spezifikation zur Lösung W3C Recommendation 14 January aDon Chamberlin – 11 August 2004 [DM] IBM-DM-031: No need for namespace nodes 2.b Erneuerung W3C Recommendation 16 August XQuery-Datenmodell W3C Recommendation 23 January W3C E MPFEHLUNG ALS L ÖSUNG Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
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 (internationalized resource identifier) 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 2.1I DEE & D EFINITIONEN Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
Definition: URI-Verweise sind kompakte Zeichenketten zur Identifikation oder Benennung von Ressourcen. können URL (Locator), URN (Name) oder beides sein URL – wie Adresse- 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. != (Fehlende Identität) != (fehlende gleiche Funktionalität) Ungleiche URI, gleicher Name anderer Elementtyp Kombination URI-Namensraum + eigener Namensraum = einzigartiger Identifier URI-Verweis muss nicht zwangsläufig dereferenzierbar sein (eine URL bspw. muss nicht tatsächlich existieren) 2.1I DEE & D EFINITIONEN Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
2.1I DEE & D EFINITIONEN Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
Idee zur Lösung:Erweiterung der Elementnamen Probleme: Unlesbarkeit / nicht als Pfadtrenner in Elementnamen erlaubt Speicheraufwand steigt Problematisch bei Änderungen 2.1I DEE & D EFINITIONEN Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
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 2.1I DEE & D EFINITIONEN Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
2.2 N AMENSRÄUME : T HEORIE UND B EISPIELE Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt Namespaces in XML 1.0 (Second Edition) W3C Recommendation 16 August 2006 Namespaces in XML 1.0 (Second Edition) W3C Recommendation 16 August 2006
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 2.2 N AMENSRÄUME : T HEORIE UND B EISPIELE Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
einfache Definition:Ein erweiterter Name besteht aus dem Namensraumnamen und dem lokalen Teil. einfache Definition:Ein qualifizierter Name ist ein Namenssubjekt, welches referenziert wird. 2.2 N AMENSRÄUME : T HEORIE UND B EISPIELE Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
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. [3] DefaultAttName ::= 'xmlns' // voreingestellter Namensraumname, der solange gilt, solange keine neue Definition Anwendung findet bspw. // 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 (extra Referenzen zur Nutzung) bspw. [6] NCNameStartChar ::= Letter | '_' // Startzeichen kann nur ein Buchstabe oder Unterstrich sein bspw. ODER 2.2 N AMENSRÄUME : T HEORIE UND B EISPIELE Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
Qualifizierte Namen: [7] QName ::= PrefixedName| UnprefixedName // Qualifizierte Namen beginnt entweder mit oder ohne Präfix [8] PrefixedName ::= Prefix ':' LocalPart // Präfixversion:Bsp: [9] UnprefixedName ::= LocalPart // ohne Präfix: Bsp: [10] Prefix ::= NCName // wie vorher dargestellt in Punkt [4] [11] LocalPart ::= NCName // wie vorher dargestellt in Punkt [4] 2.2 N AMENSRÄUME : T HEORIE UND B EISPIELE Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
Aufbau von Elementnamen / Tags: /* S – Leerzeichen */ [12] STag ::= ' ' // StartTag Bsp. mit Präfix // ?- für Verarbeitungsanweisungen wie [13] ETag ::= ' // EndTag Bsp. mit Präfix [14] EmptyElemTag ::= ' // Tag mit leerem ElementBsp. mit Präfix Attribute: [15] Attribute ::= NSAttName Eq AttValue| QName Eq AttValue /* Attribut sind entweder Namensraumdeklarationen oder werden als qualifizierte Namen gegeben Bsp. mit Präfix oder 2.2 N AMENSRÄUME : T HEORIE UND B EISPIELE Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
Beispiel: Bindung eines Elements an einen Namensraum /* leeres Element */ /* leeres Element */ Namensraum wird als Präfix jedem Element zugeordnet 2.2 N AMENSRÄUME : T HEORIE UND B EISPIELE Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
Struktur in Baumform 2. Möglichkeit einen Namensraum im Vater deklarieren, der solange gilt, solange keine erneute Deklaration erfolgt 2.2 N AMENSRÄUME : T HEORIE UND B EISPIELE Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt mh:el1 mh:unterel1mh:unterel2 mh:unterunterel21mh:unterunterel22 Namensraumdeklaration: xmnls:mh='
Beispiel: Bindung eines Elements an einen Namensraum /* leeres Element */ /* leeres Element */ Namensraum wird Vaterelement zu geordnet und gilt solange keine neue Deklaration in einem Kind für dieses Element und seine Kinder erfolgt 2.2 N AMENSRÄUME : T HEORIE UND B EISPIELE Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
2.2 N AMENSRÄUME : T HEORIE UND B EISPIELE Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt Struktur in Baumform el1 unterel1 unterel2 unterunterel21unterunterel22 Namensraumdeklaration: xmnls='
Beispiel: Bindung eines Attributs an einen Namensraum und Mischform <html xmlns= xmlns:mh=' Ein eventuell übergeordneter Namensraum (bspw. html) kann es nötig machen, nur einzelne Attribute zum Namensraum zuzuweisen 2.2 N AMENSRÄUME : T HEORIE UND B EISPIELE Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
Qualifizierte Namen in Deklarationen (DTD / XML-Schema): // um auf die Namensräume zugreifen zu können die darin definiert wurden [16] doctypedecl ::= ' // StartTag Bsp. mit Präfix [17] elementdecl ::= ' // StartTag Bsp. mit Präfix [18] cp ::= (QName | choice | seq) ('?' | '*' | '+')? // StartTag Bsp. mit Präfix [19] Mixed ::= '(' S? '#PCDATA' (S? '|' S? QName)* S? ')*' | '(' S? '#PCDATA' S? ')' // StartTag Bsp. mit Präfix [20] AttlistDecl ::= ' // StartTag Bsp. mit Präfix [21] AttDef ::= S (QName | NSAttName) S AttType S DefaultDecl // StartTag Bsp. mit Präfix 2.2 N AMENSRÄUME : T HEORIE UND B EISPIELE Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
Weitere Forderungen: Attribute in einem Tag sollen keine identischen Namen oder Qualifizierte Namen mit identischem LocalPart und Präfix haben, die an den selben Namensraum gebunden sind Beispiel für Fehler: Wohlgeformtheitsforderung – ein Element, darf nicht zwei Attribute gleichen Namens besitzen! <EL1xmlns:mh1= xmlns:mh2= Anmerkung:default Namespaces werden nicht per se Attributnamen zugeordnet, damit kann ein Ausdruck, in dem ist und dieser Tag vorkommt noch korrekt sein: mit mh1 == DefaultNamensraum Attributen muss direkt ein Namensraum zugewiesen werden 2.2 N AMENSRÄUME : T HEORIE UND B EISPIELE Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
1. Namensräume – Warum? 1. Einführendes Beispiel 2. Problematik 2. W3C Empfehlung als Lösung Namensräume 1. Idee & erste Definitionen 2. Namensräume: Theorie und Beispiele 3. XQuery – Das Ende der Namensraumproblematik? 1. Grundlegende Begriffe 2. N-Knoten überflüssig? 4. Fazit G LIEDERUNG Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
3. XQ UERY – D AS E NDE DER N AMENSRAUMPROBLEMATIK ? Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt XQuery 1.0: An XML Query Language W3C Recommendation 23 January 2007 XQuery 1.0: An XML Query Language W3C Recommendation 23 January 2007
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 /) XPath 2.0 – 2007 – Erweiterung Wechsel auf XQuery - Datenmodell 3.1. G RUNDLEGENDE B EGRIFFE Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
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 3.1. G RUNDLEGENDE B EGRIFFE Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
Wohlgeformtheit: 1. Jedes Start-Tag muss ein dazugehöriges End-Tag haben. 2. Elemente dürfen geschachtelt sein, sich aber nicht überlappen. 3. Es muss genau ein Wurzelelement geben. 4. Attributwerte müssen in Anführungszeichen stehen. 5. Ein Element darf nicht zwei Attribute mit dem gleichen Namen besitzen. 6. Kommentare und Verarbeitungsanweisungen dürfen nicht innerhalb von Tags stehen. 7. In den Zeichendaten eines Elements oder Attributs dürfen keine ungeschützten <- oder &-Zeichen stehen G RUNDLEGENDE B EGRIFFE Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
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 := NSPrefix := xs Bsp. Integer – Wert 10: [10, [xs, integer]] 3.1. G RUNDLEGENDE B EGRIFFE Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
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 3.1. G RUNDLEGENDE B EGRIFFE Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
Zur Erinnerung: XML-Namensräume zur Vermeidung von Namenskollisionen NSName localPart eindeutig [ LocalPart] In XML-Dokumenten: Referenzierung von NSNames durch NSPrefixes [mh, 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 3.2.N-K NOTEN ÜBERFLÜSSIG ? Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
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, 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 3.2.N-K NOTEN ÜBERFLÜSSIG ? Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
1. Namensräume – Warum? 1. Einführendes Beispiel 2. Problematik 2. W3C Empfehlung als Lösung Namensräume 1. Idee & erste Definitionen 2. Namensräume: Theorie und Beispiele 3. XQuery – Das Ende der Namensraumproblematik? 1. Grundlegende Begriffe 2. N-Knoten überflüssig? 4. Fazit G LIEDERUNG Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
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 4. F AZIT Seminar XML und Datenbanken – Thema 3: XML-Namensräume - Matthias Haupt
Vielen Dank für Ihre Aufmerksamkeit!