XInclude, XPath und XQuery Flashcards
Wofür wird XInclude verwendet?
XInclude (XML Inclusions) ist eine Spezifikation des W3C, in der eine Methode definiert ist, um XML-Dokumente, Dokumentfragmente und sogar Textdateien mit Hilfe externer Referenzen zu einem Gesamtdokument zusammenzustellen.
Definiert ist das Element <xi:include>
zur Adressierung des Teildokumentes. Als Kindelement von <xi:include>
kann das Element <xi:fallback>
notiert werden, das Inhalte für den Fehlerfall enthält.
Was ist die Motivation hinter XInclude?
Ein XML-Dokument aus einzelnen Modulen zusammenzusetzen hat viele Vorteile: Die einzelnen Einheiten sind wiederverwendbar und ein verteiltes Arbeiten ist möglich. Bei der Entwicklung einer DTD oder eines XML-Schemas ist darauf zu achten, dass diese so konzipiert werden, dass sowohl die einzelnen Module und auch das Gesamtdokument validiert werden können. Desweiteren wird noch eine Methode benötigt, wie das Gesamtdokument aus den einzelnen Teildokumenten zusammengestellt werden kann.
Was ist XPath?
XPath ist eine Art Hilfssprache, die für die Adressierung und den Zugriff auf Strukturbestandteile eines XML-Dokumentes verwendet wird.
Mit ihr können auch komplexe Anfragen an XML-Dokumente gestellt werden.
Was ist das Datenmodell XDM?
XQuery und XPath haben ein gemeinsames Datenmodell »XDM«.
Zentrales Konstrukt des Datenmodells ist die Sequenz. Eine Sequenz besteht aus 0 oder mehr Items. Ein Item kann ein atomarer Wert, ein Knoten oder eine Funktion sein. Maps und Arrays sind spezielle Funktionen.
Was sind Knoten im XML-Dokument?
XML-Dokumente haben ein Wurzelelement und sind hierarchisch aufgebaut. Elemente können Kindelemente haben. Daher liegt die Repräsentation eines XML-Dokumentes als Baum bestehend aus Knoten nahe. Knoten repräsentierten die verschiedenen XMLKonstrukte.
XPath verfügt über das Konzept der Dokumentreihenfolge (document order). Die Knoten im Dokumentbaum sind in der Reihenfolge geordnet, in welcher die Dokumentteile beim Parsing gefunden werden.
Welche 7 Knotenarten gibt es im XML-Dokument?
- Dokumentknoten: Der Dokumentknoten ist ein namenloser Knoten. Sein Inhalt umfasst das ganze Dokument.
- Elementknoten: Jedes Element des Dokuments wird durch einen Elementknoten im Baum repräsentiert. Ein Elementknoten enthält evtl. weitere Elementknoten als Kinder.
- Textknoten: Ein Textknoten enthält ausschließlich Zeichendaten.
- Attributknoten: Attributknoten entsprechen den Attributen eines Elementes. Sie haben einen Bezeichner und einen Wert. Ein Attributknoten wird nicht als Kind eines Elementknotens, sondern als »zum Element zugehörig« betrachtet.
- Namensraumknoten: Ein Namensraumknoten repräsentiert den Namensraum eines Elementes. Er ist kein Kindknoten des Elementes, sondern dem Element zugeordnet.
- Verarbeitungsanweisungsknoten: Ein Verarbeitungsanweisungsknoten repräsentiert eine Verarbeitungsanweisung. Er ist ein Kindknoten des Dokumentknotens und somit ein Geschwisterknoten des Elementknotens des Wurzelelementes.
- Kommentarknoten: Kommentarknoten repräsentieren die Kommentare im XML-Dokument. Ihr Wert ist die in
<!-- -->
enthaltene Zeichenkette.
Welche zwei Arten von Werten werden bei Knoten unterschieden?
- Textueller Wert: Der textuelle Wert ist sein Zeicheninhalt und die Verkettung aller Textknoten, die Nachfolger des Elementknotens sind. Der textuelle Wert eines Attributknotens ist sein Attributwert. Auf den Textuellen Wert kann mit der XPath-Funktion
string()
zugegriffen werden. - Getypter Wert: Wird das XML-Dokument über ein XML-Schema validiert, haben die Element- und Attributknoten den im XML-Schema definierten Wert. Auf den getypten Wert eines Knotens kann mit der XPath-Funktion
data()
zugegriffen werden.
Was sind Atomare Werte und wozu werden sie verwendet?
Atomare Werte sind einfache Datenwerte, ohne Markup und ohne Beziehung zu einem speziellen Element oder Attribut. Sie kommen in XML-Dokumenten eigentlich nicht vor, können aber mit den XPath-Funktionen string()
und data()
aus Knoten extrahiert werden.
Atomare Werte werden zum Rechnen und bei vielen Funktionen benötigt. Bei vielen Ausdrücken wie z.B. Arithmetischen Ausdrücke, Vergleichsausdrücke oder bei Funktionsrückgabewerten, erfolgt eine Atomisierung.
Welche Typen können Atomare Werte sein?
Der Typ eines atomaren Wertes kann ein eingebauter Typ oder ein benutzerdefinierter Typ sein.
* xs:anyAtomicType
ist der Basistyp von xs:untypedAtomic
und von allen primitiven Datentypen wie z.B. xs:integer
und xs:string
* Ein Listentyp repräsentiert eine Liste von atomaren Werten eines bestimmten Typs. Im Typsystem sind drei Listentypen definiert: xs:IDREFS
, xs:NMTOKENS
und xs:ENTITIES
.
* Vereinigungstypen haben als Werteraum die Vereinigungsmenge der Werteräume der vereinigten Typen. z.B. ist der Typ xs:numeric
der Vereinigungstyp der drei primitiven Zahlentypen xs:double
, xs:fload
und xs:decimal
Was ist eine Sequenz im XPath/XQuery-Datenmodell?
Eine Sequenz bildet das zentrale Konstrukt.
Eine Sequenz besteht aus einer Aneinanderreihung von Items. Da ein Item ein Knoten, ein atomarer Wert oder eine Funktion sein kann, können Sequenzen heterogen sein. Jede Operation liefert als Resultat eine Sequenz.
Eine Sequenz kann auch explizit durch den sogenannten Sequenzkonstruktor konstruiert werden. Die Einträge werden durch Kommata getrennt und von runden Klammern umfasst.
Welche 6 Eigenschaften hat eine Sequenz im XPath/XQuery-Datenmodell?
- Eine Sequenz mit genau einem Item wird Singleton-Sequenz genannt. Es gibt keinen Unterschied zwischen einer ein-elementigen Sequenz und dem Item, das sie enthält. Daher können alle Funktionen und Operatoren, die auf Sequenzen anwendbar sind, auch auf individuellen Items operieren. Und umgekehrt kann jedes Item als ein-elementige Sequenz behandelt werden.
- Eine Sequenz, die kein Item enthält, ist eine leere Sequenz. Sie wird dargestellt durch »()«.
- Sequenzen sind nicht verschachtelt. Der Ausdruck
(1,(),(<element/>,3),1)
ist äquivalent zu:(1,<element/>,3,1)
. - Sequenzen sind geordnet. Die einzelnen Einträge sind hinsichtlich ihrer Position unterscheidbar.
- Sequenzen können Duplikate enthalten.
- Zwei Sequenzen sind gleich, wenn sie die gleiche Anzahl Einträge aufweisen und die Einträge an jeder Position paarweise gleich sind.
Welche 6 Operationen gibt es für Sequenz im XPath/XQuery-Datenmodell?
- Kommaoperator:
(1,<x/>),(3)
liefert(1,<x/>,3)
. - Bereichsoperator
to
: Sequenzen ganzer Zahlen lassen sich durch einen Bereichsoperator angeben. Der gesamte Ausdruck wird dann als Bereichsausdruck bezeichnet. Beispiel: Der Bereichsausdruck1 to 5
liefert die Sequenz(1,2,3,4,5)
. - Mengenoperatoren: Sequenzen werden wie Mengen behandelt. Die Ergebnissequenz ist in der Dokumentreihenfolge geordnet.
- union (auch »
|
«): Vereinigung zweier Sequenzen. - intersect: Durchschnitt zweier Sequenzen.
- except: Die Ergebnissequenz enthält alle Items, die in der ersten Sequenz, aber nicht in der zweiten enthalten sind.
Was sind Sequenztypen im XPath/XQuery-Datenmodell?
Ein Sequenztyp wird verwendet, um in einem XQuery-Ausdruck genaue Typangaben für eine Sequenz anzugeben. In Funktionsdeklarationen müssen beispielsweise die Typen der Übergabeparameter und des Rückgabewertes notiert werden. Ein Sequenztyp besteht aus einem Typ, der den Typ jedes Items der Sequenz angibt, und einer Kardinaltätsangabe, die angibt, wie viele Items die Sequenz enthalten muss oder darf.
Welche Sequenztypen und Kardinalitätsangaben gibt es im XPath/XQuery-Datenmodell?
Sequenztypen:
* item()
: beliebiges Item, d. h. beliebiger Knotentyp oder ein atomarer Wert beliebigen Typs
* node()
: umfasst die Knotentypen
* empty-sequence()
: für eine leere Sequenz
* xs:anyAtomicType
: beliebiger atomarer Wert
Kardinalitäten / Häufigkeitsindikatoren
* ?
: für 0 oder ein Item
* *
: für 0 bis beliebig viele Items
* +
: für 1 bis beliebig viele Items
* keine Angabe: genau ein Item
Was sind Ausdrücke in XPath und XQuery und was ist der Rückgabewert?
In XPath und XQuery wird jede XPath-Beschreibung bzw. jede gültige Suchanfrage als Ausdruck bezeichnet. Rückgabewert eines Ausdrucks ist immer eine Sequenz.
Welche 5 Syntaxregeln gelten für Ausdrücke in XPath und XQuery
- Ausdrücke sind case-sensitiv
- Namen, die für Elemente, Attribute, Variablen und Funktionen verwendet werden, müssen gültige XML-Namen sein.
- Ein String wird in einfache oder doppelte Hochkommata eingeschlossen.
- Eine XQuery-Variable beginnt mit einem »$«-Zeichen.
- XQuery benutzt die Smileys »(:« und »:)« zur Kennzeichnung von Beginn und Ende eines Kommentars.
(: XQuery Kommentar :)
Welche XPath/XQuery Ausdrücke werden unterschieden?
- Elementare Ausdrücke
- Arithmenitsche Ausdrücke
- Logische Ausdrücke
- Pfadausdrücke
Erweiterte Ausdrücke
* Verleichsausdrücke
* Konditionale Ausdrücke
* switch
-Ausdrücke
* Quantifizierende Ausdrücke
* for
-Ausdrücke
* Der einfache Map-Operator “!
”
Was sind Elementare Ausdrücke in XPath/XQuery?
Zu den elementaren Ausdrücken gehören:
* Literale
* Variablen
* Funktionsaufrufe
* Klammerausdrücke
Was sind Arithmeitsche und logische Ausdrücke in XPath/XQuery?
Arithmetische und logische Ausdrücke ähneln denen anderer Programmiersprachen. Innerhalb der arithmetischen Ausdrücke können die Operatoren: +
, -
, *
, div
, idiv
(Ganzzahldivision), mod
(Modulo) verwendet werden.
Logische Operatoren sind and
und or
.
Was sind Pfadausdrücke in XPath/XQuery?
Pfadausdrücke dienen der Adressierung und dem Zugriff auf Strukturbestandteile eines XML-Dokumentes.
Pfadausdrücke können auf drei verschiedene Arten formuliert und ausgewertet werden:
* Lokalisierungspfade und Achsen
* Knotentest
* Prädikate
Was sind Lokalisierungspfade und Achsen, welche beide Arten von Lokalisierungspfaden werden unterschieden??
Ein Lokalisierungspfad (location path) ist ein XPath-Ausdruck, Lokalisierungsder verwendet wird, um Knoten in einem XML-Dokument zu pfad adressieren. Lokalisierungspfade werden stets relativ zu einem Kontextitem ausgewertet, welches als »Startpunkt« des Pfades dient. Handelt es sich beim Kontextitem um einen Knoten, spricht man vom Kontextknoten.
XPath unterscheidet absolute und relative Lokalisierungspfade.
Absolute Pfade starten am Dokumentknoten, der XPath-Ausdruck beginnt dann mit einem »/«.
Relative Pfade beginnen bei einem beliebigen anderen Knoten.
Wie sind Lokalisierungspfade aufgebaut?
Ein Lokalisierungspfad besteht aus einzelnen Lokalisierungsschritten. Die einzelnen Lokalisierungsschritte werden – ähnlich wie bei der Adressierung von Dateien in einem Verzeichnissystem – durch einen »/«, den sogenannten Pfad-Operator, voneinander getrennt. Die Lokalisierungsschritte werden sukzessive von links nach rechts ausgewertet.
Was ist ein Achsenschritt, wozu wird er verwendet?
Mit einem Achsenschritt es möglich, im Dokumentenbaum des XML-Dokuments, zu navigieren und auf Teilbäume zuzugreifen. Für einen Achsenschritt gilt folgende Syntax:achse::knotentest[prädikat]
Ein Achsenschritt besteht also aus drei Teilen:
* Die Achse gibt die Richtung an, in der die zu selektierenden Knoten gesucht werden,
* der Knotentest dient der Filterung der durch die Achse selektierten Knoten und
* mit Prädikaten (optional) kann die Knotensequenz, die durch achse::knotentest
ausgewählt wurde, weiter gefiltert werden.
Welche 24 Achsen gibt es in XPath?
- self: Der gegenwärtige Knoten, Kontextknoten.
- child: (Default-Achse) Alle Kindknoten, dazu gehören Element-, Text-, Kommentarund Verarbeitungsanweisungsknoten, nicht jedoch Attribut- und Namensraumknoten.
- parent: Direkter Vorfahr (Elternknoten). Bei einem Attribut- oder Namensraumknoten ist der Elternknoten der Elementknoten, zu dem der Attribut- bzw. der Namensraumknoten gehört.
- ancestor*: Alle Vorfahren des Kontextknotens (in umgekehrter Dokumentreihenfolge).
- ancestor-or-self*: Der Kontextknoten und alle seine Vorfahren.
- following: Alle Knoten, die in der Dokumentreihenfolge dem Kontextknoten folgen, nicht jedoch die direkten Nachfahren.
- following-sibling: Geschwisterknoten (Knoten mit gleichem Elternelement), die in der Dokumentreihenfolge dem Kontextknoten folgen.
- preceding*: Alle Knoten, die in der Dokumentreihenfolge vor dem Kontextknoten stehen, nicht jedoch die direkten Vorfahren.
- preceding-sibling*: Geschwisterknoten, die vor dem Kontextknoten stehen.
- descendant: Alle Knoten, die Nachfahren (Kinder, Kindeskinder, …) des Kontextknotens sind.
- descendant-or-self: Der Kontextknoten und alle Knoten, die Nachfahren (Kinder, Kindeskinder, …) des Kontextknotens sind.
- attribute: Alle Attributknoten eines Elementknotens.
- namespace: Namensraumknoten eines Elementknotens.