| |
@id [ 1234 ],
titel [ ct ],
redakteur [ Heise ]
Jahr [ 2001 ]
]
]
In der Repräsentation des Beispiel sind Bib und Item zwei Typen. Der Bib-Typ entspricht einem bib-
Element, mit 0 oder mehr Elementen des Typs Item. Der Item-Typ wird an das Element item
gebunden und beinhaltet 2 Attribute (typ und id) und 4 Elemente (autor, redakteur, titel und jahr,
wobei autor und redakteur optional sind).
bib0 ist eine globale Variable vom Typ Bib, und wird dadurch an das das XML-Tag bib gebunden. Für
das Dokumentfragment bib.xml entspricht dies einer Instanz des Datenmodells.
Im folgenden werden die einzelnen Konstrukte der Algebra, anhand dieses Beispiels betrachtet, wobei
jedes Beispiel aus 3 Teilen besteht:
1. Ausdruck der Algebra
2. nach ==> steht der Wert des Ausdrucks (dynamische Semantik)
3. nach : steht der Typ des Ausdrucks (statische Semantik)
Dabei hängt der Typ des Ausdrucks nur von den Typen der Unter-Ausdrücke ab.
1.Projection
Ähnlich zu XPath. Der folgende Ausdruck liefert alle Autoren-Elemente der Bücher-Elemente, die in
bib0 stehen:
bib0/item/autor
==> autor [ "Abiteboul" ],
autor [ "Buneman" ],
autor [ "Suciu" ],
autor [ "Fernandez" ],
autor [ "Suciu" ]
: autor [ String ] {0, *}
Das folgende Beispiel, liest ein Attribut aus der Variablen book0 aus
book0/@id
==> @id [1-55860-622-X ]
: @id [ String ]
Dabei ist book0 auch eine globale Variable, die an ein XML-Wert gebunden ist. Book0 entspricht hier
dem ersten Buch in bib0.
2.Atomic Data
Um die direkten Daten herauszuholen benutzt man das Schlüsselwort data(). Um zum Beispiel alle
Autoren in einem Buch und nicht alle Autoren Elemente zu haben kann man folgendes schreiben:
book0/author/data()
==> Abiteboul,
"Buneman",
"Suciu"
: String {0, *}
12
|  |
|
| |
|
|