Title: Manipulation von XML-Dokumenten in Tamino
1Manipulation von XML-Dokumenten in Tamino
- M. Gesmann
- Software AG
- (michael.gesmann_at_softwareag.com)
2Die Aufgabe
lt?xml version1.0?gtltBTW2003gt....lt/BTW2003gt
lt?xml version1.0?gtltBTW2003gt....lt/BTW2003gt
lt?xml version1.0?gtltBTW2003gt....lt/BTW2003gt
lt?xml version1.0?gtltSIGMOD 2002gt....lt/SIGMOD
2002gt
lt?xml version1.0?gtltVLDB 2002gt....lt/VLDB
2002gt
lt?xml version1.0?gtltBTW2003 statusgeplantgt
ltBeitraggt ltTitelgt...lt/Titelgt
ltAutorgt...lt/Autorgt ltKapitelgt...lt/Kapitelgt
... lt/Beitraggt ...lt/BTW2003gt
3Die Zielsetzung
BTW2003
lt?xml version1.0?gtltBTW2003gt....lt/BTW2003gt
lt?xml version1.0?gtltBTW2003gt....lt/BTW2003gt
lt?xml version1.0?gtltBTW2003gt....lt/BTW2003gt
lt?xml version1.0?gtltBTW2003gt....lt/BTW2003gt
lt?xml version1.0?gtltBTW2003 ...
gt...lt/BTW2003gt
_at_zustand läuft
4Überblick
- Bestehende Ansätze
- Lösung in Tamino
- Ausblick
5Bestehende Ansätze
- Offen gelegte Datenbankfunktionalität
- update(dokument, locationPath, Wert)
- updateXML(dokument, Paare von (locationPath,
Wert)) - ServerExtensions
6Bestehende Ansätze (II)
- Beschreibungssprachen
- SiXDML
- XUpdate / Updategram (eXcelon)
- Updategram (SQL Server)
- Erweiterung von XQuery
7Lösung in Tamino
- Spracherweiterung von XQuery
-
- hohe Funktionalität
- Selektion zu ändernder Dokument(teil)e
- Berechnung neuer Inhalte
- Homogenität
- Potenzial zur Anfrageoptimierung
8Lösung in Tamino Elementaroperationen
- 'delete'
- 'rename'
- 'replace'
- 'insert'
- ( ForClause LetClause ) WhereClause 'do'
...
9Lösung in Tamino Delete
DeleteClause 'delete' Expr
Änderungsknoten
XQuery
lt?xml version 1.0 ?gt ...
lt?xml version 1.0 ?gt ...
lt?xml version 1.0 ?gt ltBTW2003 ...
gt....lt/BTW2003gt
update delete input()/BTW2003/_at_status
update delete input()/BTW2003/Beitrag/Autor
Michael Gesmann
10Lösung in Tamino Rename
RenameClause 'rename' Expr 'as' QName
Änderungsknoten
XQuery
lt?xml version 1.0 ?gt ...
lt?xml version 1.0 ?gt ...
lt?xml version1.0 ?gt ltBTW2003 ...
gt....lt/BTW2003gt
update rename input()/BTW2003/_at_status as
zustand rename input()/BTW2003/Beitrag/Titel as
Thema
11Lösung in Tamino Replace
ReplaceClause 'replace' Expr 'with' Expr
Änderungsknoten
Werteknoten
lt?xml version 1.0 ?gt ...
lt?xml version 1.0 ?gt ...
lt?xml version 1.0 ?gt ltBTW2003 ...
gt....lt/BTW2003gt
update replace input()/BTW2003/_at_status with
attribute zustand geplant
update replace input()/BTW2003/Beitrag/AutorMic
hael Gesmann/Titel with ltThemagtÄnderung von
XML-Dokumentenlt/Themagt
12Lösung in Tamino - Insert
InsertClause 'insert' Expr
('into''following''preceding') Expr
Werteknoten
Änderungsknoten
lt?xml version 1.0 ?gt ...
lt?xml version 1.0 ?gt ...
lt?xml version 1.0 ?gt ltBTW2003 ...
gt....lt/BTW2003gt
13Lösung in Tamino FLWU
FLWUExpr ( ForClause LetClause )
WhereClause 'do' ( UpdateExpr Lpar
UpdateSequence Rpar )
update for Beitrag in input()/BTW2003/Beitrag
doinsert attribute thema Beitrag/Titel/text()
into Beitrag delete Beitrag/Titel
14Lösung in Tamino - Schnappschusssemantik
- Erst Bestimmung der Änderungs- und Werteknoten
- Dann Ausführung der Änderungen
- Keine Seiteneffekte / keine Rekursionen
- Dokumentreihenfolge spielt keine Rolle
- Erlaubt Reordering
15Lösung in Tamino - Konflikte
- Dabei Ausführung der Änderungen ohne feste
Reihenfolge - gültige Dokumente
- eindeutige Ergebnisse
- notwendige Änderungen
16Konflikte - Eindeutigkeit
lt?xml version 1.0 ?gt ltA/gt
update insert ltB/gt into input()/A
insert ltC/gt into input()/A
Auch rename - rename
17Konflikte - Notwendigkeit
lt?xml version 1.0 ?gt ltAgtltBgtltC/gtlt/Bgtlt/Agt
update delete input()//C delete
input()//B
Auchdelete - rename replace - replace ...
18Zusammenfassung
- XQuery Spracherweiterung
- 2-phasiges Ausführungsmodell
- Konfliktbehandlung
19Ausblick
- semantische Konfliktbehandlung
- Reihenfolge der Änderungen
- Realisierungsaspekte
- parallele Änderungen in einem Dokument
- partielle Validierung
- partielle Änderung von Indizes
20Danke schön!
Fragen?