Mit dem Admintool können Anfragen an die Datenbank gestellt werden. Wenn dem Admintool der Parameter
USETESTFILE übergeben wird, werden anstatt der angegebenen Anfrage die
Testqueries ausgeführt.
ACHTUNG: Die Benuzterverwaltung und die Dokumente 'test' und 'test1' werden verändert!
Die Dokumente der XQDB entsprechen nicht genau dem XML-Standart des W3C. Die XQDB hat neben den Element-, Text-, Kommentart- und Attributknoten noch eine 5 Knotenart, die Accessknoten. Sie stehen wie die Attribute innerhalb der Elementknoten, doch sie beginnen mit einer Raute '#'. Die Accessknoten haben immer die folgende Form: #GruppenOderUserName='rwxi'. Die vier Buchstaben haben folgende bedeutung:
[1] |
Document |
::= |
CharData Element CharData |
[2] |
Element |
::= |
'<' QName ( S Attribute | Attribute ) * S '/>' |
| '<' QName ( S Attribute | Attribute ) * S '>' Content '' QName S '>' |
|||
[3] |
Access |
::= |
'#' QName '=' Literal |
[4] |
Attribute |
::= |
QName '=' Literal |
[5] |
Comment |
::= |
'<!--' CharData '-->' |
[6] |
Content |
::= |
CharData ? ( Element | Comment ) |
Jedes Dokument hat automatisch eine Benuzterverwaltung. Wenn diese umgangen werden soll, dann kann man sich entweder als Benuzter root anmelden oder man kann in den Wurzelknoten folgenden Accessknoten einfügen:
#groups="rwxi"Das Dokument users bildet die Benuztervarwaltung. Es ist folgendermassen aufgebaut:
<?xml version="1.0"?>
<auth>
<users>
<root passwd="" />
<guest passwd="" />
</users>
<groups>
<guest />
<admin>
<root />
</admin>
</groups>
</auth>
In <users> sind alle Benuzter mit den Passwörtern gespeichert, in <groups> sind die Gruppen mit den Benutzern gespeichert. folgt noch ...
return string[] Array mit den Zeiten, die die Funktionen der XQDB für die Ausführung brauchten.
return string Beschreibung, des Zuletzt aufgetretenen Fehlers.
Gibt die Beschreibung des zuletzt aufgetretenen Fehler zurück. Wenn kein Fehler aufgetreten ist, wird null zurückgegeben.
return int Nummer des zuletzt aufgetretenen Fehlers.
Gibt die Nummer des zuletzt aufgetretenen Fehler zurück. Mögliche Rückgabewerte sind aus den Konstanten zusammengesetzte Fehlernummern. Wenn kein Fehler aufgetreten ist, wird XQDB_OK zurückgegeben.
Diese Kapitel enthält eine Einführung in XQDB in Form eines Tutorials. Dabei werden die wichtigsten Syntaxelemente erläutert. Die Beispeile beziehen sich auf die ein und Ausgabe der shell. Als Beispieldokumente werden immer die beiden Dokumente './manual/xqdb.example.xml' und './manual/xqdb.users.xml' verwendet.
Mit LOGIN benuztername 'passwort' kann man sich bei der Datenbank anmelden.
xqldb> LOGIN root ''
Mit LOGOUT kann man sich bei der Datenbank abmelden. Wenn man sich nicht angemeldet oder abgemeldet hat, ist man als Gast eingeloggd.
xqldb> LOGOUT
Ein Dokument wird mit der folgenden Syntax erstellt: CREATE DOCUMENT 'documentName'
Das Dokument ist leer und kann nun gefüllt werden. Der Name des Dokuments muss eindeutig sein, d.h er darf nur einmal in der Datenbank vokommen.
xqldb> CREATE DOCUMENT 'test'
Die Syntax SHOW DOCUMENTS zeigt die Namen alle in der Datenbank gespeicherten Dokumente an.
xqldb> SHOW DOCUMENTS
'test'
Mit TRUNCATE DOCUMENT ( 'documentName' | users ) kann der Inhalt eines Dokuments gelöscht werden. Der Inhalt wird unwiederruflich gelöscht und kann
nicht wieder hergestellt werden. Es kann entweder der Name eines Dokuments als Literal (in Hockkomma " oder ') oder die Zeichenfolge 'users' angegeben werden.
Wenn users angegeben wird, wird das Dokument mit der Benuzterverwaltung gelöscht.
xqldb> TRUNCATE DOCUMENT 'test'
xqldb> TRUNCATE DOCUMENT users
Mit DROP DOCUMENT 'documentName' kann der Inhalt eines Dokuments gelöscht werden. Der Inhalt wird unwiederruflich gelöscht und kann
nicht wieder hergestellt werden.
xqldb> DROP DOCUMENT 'test'
Mit LOAD 'pfad' INTO ( 'documentName' | users ) kann eine externe Datei in die Datenbank eingelesen werden. Das Dokument muss leer sein, damit eine
Datei importiert werden kann.
xqldb> load './manual/xqdb.example.xml' into 'test'
xqldb> load './manual/xqdb.users.xml' into users
Mit SAVE ( 'documentName' | users ) INTO 'pfad' wird ein Dokument in eine Datei gespeichert. Die Ausgegebene Datei entspricht nicht dem genauen
XML-Standart, da auch die Zugriffsknoten exportiert werden.
xqldb> save 'test' into '/tmp/test.xml'
xqldb> save users into '/tmp/users.xml'
Mit FOR variable IN DOCUMENT( 'documentName' | users )/pfad RETURN variable wird ein besimmter Pfad in einem Dokument abgefragt.
xqldb> for $x in document('test')/zutat return $x/text()
xqldb> for $x in document('test')/zutat return $x/attribute::id
xqldb> for $x in document(users)/users return $x/root
Mit FOR variable IN DOCUMENT( 'documentName' | users )/pfad DELETE variable wird ein Knoten mit all seinen Kinderknoten unwiederruflich
gelöscht und kann nicht wiederhergestellt werden.
xqldb> for $x in document('test')/anleitung/zutat delete $x
xqldb> for $x in document('test')/anleitung delete $x/access::test
xqldb> for $x in document(users)/descendant-or-self::*/root delete $x
Mit FOR variable IN DOCUMENT( 'documentName' | users )/pfad RENAME variable TO 'name' wird ein Knoten umbenannt.
xqldb> for $x in document('test')/anleitung/zutat rename $x to 'andereZutat'
Mit FOR variable IN DOCUMENT( 'documentName' | users )/pfad REPLACE variable TO 'neuerWert' wird der Inhalt eines Knotens geändert.
Replace kann nur auf Text, Kommentart, Attribute und Accessknoten angewant werden
xqldb> for $x in document('test') replace $x/comment() to 'noch mehr Zutaten :)'
xqldb> for $x in document('test')/zutat replace $x/attribute::id to 'Vollkornmehl'
xqldb> for $x in document('test') replace $x/access::groups to 'rw--'
xqldb> for $x in document(users)/users/root replace $x/attribute::passwd to 'root'
Mit FOR variable IN DOCUMENT( 'documentName' | users )/pfad INSERT 'xmlNodes' ( INTO | BEFORE | AFTER ) variable werden die Elemente, die in
xmlNodes gespeichert sind in / vor / nach den ausgewählten Knoten gespeichert.
xqldb> for $x in document('test')/anleitung insert '1Kg Zucker ' before $x
xqldb> for $x in document('test')/anleitung insert access(test, 16) into $x
[7] |
Query |
::= |
S SingleQuery S ( ';' S Query S ) ? |
[8] |
SingleQuery |
::= |
Flower |
| Login |
|||
| Logout |
|||
| CreateDocument |
|||
| DropDocument |
|||
| ShowDocuments |
|||
| TruncateDocument |
|||
| LoadFile |
|||
| SaveFile |
|||
[9] |
Literal |
::= |
'"' [^"]* '"' |
| "'" [^']* "'" |
|||
[10] |
Login |
::= |
'login' QName Literal |
[11] |
Logout |
::= |
'logout' |
[12] |
CreateDocument |
::= |
'create' 'document' Literal |
[13] |
DropDocument |
::= |
'drop' 'document' Literal |
[14] |
ShowDocuments |
::= |
'show' 'documents' |
[15] |
TruncateDocument |
::= |
'truncate' 'document' DocumentName |
[16] |
LoadFile |
::= |
'load' Literal 'into' DocumentName |
[17] |
SaveFile |
::= |
'save' DocumentName 'into' Literal |
[18] |
Flower |
::= |
'for' Variable 'in' LocationPath ActionExpr |
[19] |
ActionExpr |
::= |
'return' ReturnExpr |
'delete' DeleteExpr |
|||
'rename' RenameExpr |
|||
'replace' ReplaceExpr |
|||
'insert' InsertExpr |
|||
[20] |
ReturnExpr |
::= |
LocationPath |
[21] |
DeleteExpr |
::= |
LocationPath |
[22] |
RenameExpr |
::= |
LocationPath 'to' Literal |