SEMINAR: „XML UND DATENBANKEN“
description
Transcript of SEMINAR: „XML UND DATENBANKEN“
SEMINAR: „XML UND DATENBANKEN“
Matthias Haupt
08.05.2008
Thema 3:„XML-Namensräume“
1. Namensräume – Warum?1. Einführendes Beispiel2. Problematik
2. W3C Empfehlung als Lösung „Namensräume“1. Idee & erste Definitionen2. Namensräume: Theorie und Beispiele
3. XQuery – Das Ende der Namensraumproblematik?1. Grundlegende Begriffe2. N-Knoten überflüssig?
4. Fazit
GLIEDERUNG
08.05.2008
2
Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
1. Namensräume – Warum?1. Einführendes Beispiel2. Problematik
2. W3C Empfehlung als Lösung „Namensräume“1. Idee & erste Definitionen2. Namensräume: Theorie und Beispiele
3. XQuery – Das Ende der Namensraumproblematik?1. Grundlegende Begriffe2. N-Knoten überflüssig?
4. Fazit
GLIEDERUNG
08.05.2008
3
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.1 EINFÜHRENDES BEISPIEL
08.05.2008
4
Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
Beispiel 1 Beispiel2<Titel>
<Bezeichnung>Professor</Bezeichnung>
<Gehaltsklasse>xy</Gehaltsklasse>
…
</Titel>
<Titel>
<Inhalt>blbla</Inhalt>
<Name>bljfas</Name>
…
</Titel>
Unterschiedlicher Kontext
identische Elementnamen
1.1 EINFÜHRENDES BEISPIEL
08.05.2008
5
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.1 EINFÜHRENDES BEISPIEL
08.05.2008
6
Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
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!
1.1 EINFÜHRENDES BEISPIEL
08.05.2008
7
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.2 PROBLEMATIK
08.05.2008
8
Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
?
!!
!
1. Namensräume – Warum?1. Einführendes Beispiel2. Problematik
2. W3C Empfehlung als Lösung „Namensräume“1. Idee & erste Definitionen2. Namensräume: Theorie und Beispiele
3. XQuery – Das Ende der Namensraumproblematik?1. Grundlegende Begriffe2. N-Knoten überflüssig?
4. Fazit
GLIEDERUNG
08.05.2008
9
Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
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”
2. W3C EMPFEHLUNG ALS LÖSUNG
08.05.2008
10
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.1 IDEE & DEFINITIONEN
08.05.2008
11
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“ - 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 = einzigartiger Identifier URI-Verweis muss nicht zwangsläufig dereferenzierbar sein (eine URL bspw. muss
nicht tatsächlich existieren)
2.1 IDEE & DEFINITIONEN
08.05.2008
12
Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
2.1 IDEE & DEFINITIONEN
08.05.2008
13
Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
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
2.1 IDEE & DEFINITIONEN
08.05.2008
14
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.1 IDEE & DEFINITIONEN
08.05.2008
15
Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
2.2 NAMENSRÄUME: THEORIE UND BEISPIELE
08.05.2008
16
Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
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 NAMENSRÄUME: THEORIE UND BEISPIELE
08.05.2008
17
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 NAMENSRÄUME: THEORIE UND BEISPIELE
08.05.2008
18
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. „<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=‚[…]‘/>“
2.2 NAMENSRÄUME: THEORIE UND BEISPIELE
08.05.2008
19
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: <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]
2.2 NAMENSRÄUME: THEORIE UND BEISPIELE
08.05.2008
20
Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
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“ />
2.2 NAMENSRÄUME: THEORIE UND BEISPIELE
08.05.2008
21
Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
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
2.2 NAMENSRÄUME: THEORIE UND BEISPIELE
08.05.2008
22
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 NAMENSRÄUME: THEORIE UND BEISPIELE
08.05.2008
23
Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
mh:el1
mh:unterel1
mh:unterel2
mh:unterunterel21
mh:unterunterel22
Namensraumdeklaration:xmnls:mh='http://beispiel.edu/
schema1'>
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
2.2 NAMENSRÄUME: THEORIE UND BEISPIELE
08.05.2008
24
Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
2.2 NAMENSRÄUME: THEORIE UND BEISPIELE
08.05.2008
25
Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
Struktur in Baumform
el1
unterel1 unterel2
unterunterel21
unterunterel22
Namensraumdeklaration:xmnls='http://beispiel.edu/
schema1'>
Beispiel: Bindung eines Attributs an einen Namensraum und Mischform
<!-- explizite Variante --><html xmlns=‘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><td mh: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
2.2 NAMENSRÄUME: THEORIE UND BEISPIELE
08.05.2008
26
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!<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: default Namespaces 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
2.2 NAMENSRÄUME: THEORIE UND BEISPIELE
08.05.2008
28
Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
1. Namensräume – Warum?1. Einführendes Beispiel2. Problematik
2. W3C Empfehlung als Lösung „Namensräume“1. Idee & erste Definitionen2. Namensräume: Theorie und Beispiele
3. XQuery – Das Ende der Namensraumproblematik?1. Grundlegende Begriffe2. N-Knoten überflüssig?
4. Fazit
GLIEDERUNG
08.05.2008
29
Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
3. XQUERY – DAS ENDE DER NAMENSRAUMPROBLEMATIK?
08.05.2008
30
Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
XQuery 1.0: An XML Query LanguageW3C 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 „/“) Bsp. /Einkauf/Artikel[@Anzahl=“2“]/Bezeichnung
XPath 2.0 – 2007 – Erweiterung Wechsel auf XQuery - Datenmodell
3.1. GRUNDLEGENDE BEGRIFFE
08.05.2008
31
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. GRUNDLEGENDE BEGRIFFE
08.05.2008
32
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 := “http://www.w3.org/2001/XMLSchema“ NSPrefix := “xs“
Bsp. Integer – Wert ‘10‘: [10, [xs, http://www.w3.org/2001/XMLSchema, integer]]
3.1. GRUNDLEGENDE BEGRIFFE
08.05.2008
34
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. GRUNDLEGENDE BEGRIFFE
08.05.2008
35
Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
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
3.2. N-KNOTEN ÜBERFLÜSSIG?
08.05.2008
36
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, 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
3.2. N-KNOTEN ÜBERFLÜSSIG?
08.05.2008
37
Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
1. Namensräume – Warum?1. Einführendes Beispiel2. Problematik
2. W3C Empfehlung als Lösung „Namensräume“1. Idee & erste Definitionen2. Namensräume: Theorie und Beispiele
3. XQuery – Das Ende der Namensraumproblematik?1. Grundlegende Begriffe2. N-Knoten überflüssig?
4. Fazit
GLIEDERUNG
08.05.2008
38
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. FAZIT
08.05.2008
39
Seminar „XML und Datenbanken“ – Thema 3: „XML-Namensräume“ - Matthias Haupt
Vielen Dank für Ihre Aufmerksamkeit!