teichmann@7255: ========= teichmann@7255: Datenkorb teichmann@7255: ========= teichmann@7255: teichmann@7255: teichmann@7255: .. contents:: Inhalt teichmann@7255: teichmann@7255: Übersicht teichmann@7255: --------- teichmann@7255: teichmann@7314: Daten teichmann@7314: ----- teichmann@7314: Im Datenkorb stehen zwei Arten von Daten zur Auswertung zur Verfügung. teichmann@7314: teichmann@7314: ``Datensätze`` teichmann@7314: ~~~~~~~~~~~~~~ teichmann@7314: Datensätze sind Tabellen mit benannten Spalten. Sie werden von Datenquellen teichmann@7314: erzeugt und in einem Stapel verwaltet. Die konkreten Werte stehen erst durch teichmann@7314: Auffaltung als Variablen zur Verfügung. teichmann@7314: teichmann@7314: teichmann@7314: ``Variablen`` teichmann@7314: ~~~~~~~~~~~~~ teichmann@7314: Variablen sind die Werte, die aktuell zur Auswertung zur Verfügung stehen. Sie haben teichmann@7314: einen Namen und einen Typ (String, Zahl, durch Datenquelle bestimmt). teichmann@7314: teichmann@7314: Textersatz teichmann@7314: ---------- teichmann@7314: Um die Wertebelegungen in das Ausgabedokument schreiben zu kann an entsprechenden teichmann@7314: Stellen eine String-Interpolation durchgeführt werden. teichmann@7314: Hier finden zwei Arten von Textersatz ihren Einsatz. teichmann@7314: teichmann@7314: ``${}-Ersetzungen`` teichmann@7314: ~~~~~~~~~~~~~~~~~~~ teichmann@7314: Die ältere Variante. Innerhalb von Strings werden hier nur Variablen aufgelöst. teichmann@7314: Beispiel: "**Hallo, ${planet}!**" wird bei planet = 'Welt' zu "**Hallo, Welt!**". teichmann@7314: teichmann@7314: ``{$}-Ersetzungen`` teichmann@7314: ~~~~~~~~~~~~~~~~~~~ teichmann@7314: Die neuere Variante, allerdings noch nicht komplett an allen Stellen einsatzfähig. teichmann@7314: Innerhalb der geschweiften Klammern können beliebige XPath-Ausdrück stehen, die teichmann@7314: zu Strings evaluiert werden. Dies orientiert sich an den String-Auswertungen in XSLT. teichmann@7314: "**{ concat($greet, ', ', $planet, '!') }**" wird bei gesetzten Variablen greet = Hallo teichmann@7314: und planet = "Welt" zu **Hallo, Welt!** ausgewertet. teichmann@7314: teichmann@7255: Datenkorb-Elemente teichmann@7255: ------------------ teichmann@7255: teichmann@7314: Datensätze erzeugen teichmann@7314: ~~~~~~~~~~~~~~~~~~~ teichmann@7255: teichmann@7315: ``dc:context`` Aufspannen eines Gültigkeitsbereiches eines Datenbankdatensatz teichmann@7315: ............................................................................. teichmann@7255: teichmann@7315: .. code:: xml teichmann@7315: teichmann@7315: teichmann@7315: ... teichmann@7315: teichmann@7315: teichmann@7315: Spannt einen Gültigkeitsbereich für einen Datensatz auf, der aus der Datenbank teichmann@7315: kommt. Die adressierte Datenbank wird über das optionale Attribut 'connection' teichmann@7315: bestimmt. Zur Zeit sind drei Datenbanken angebunden: teichmann@7315: teichmann@7315: - **user**: Die Index-Datenbank des Artefakt-Servers. Hierüber stehen Meta-Informationen teichmann@7315: zu alten Berechnungen zur Verfügung. teichmann@7315: teichmann@7315: - **system**: Die FLYS-Datenbank mit den hydrologischen, morphologische und geodätischen teichmann@7315: Daten. teichmann@7315: teichmann@7315: - **seddb**: Die Sediment-Datenbank. teichmann@7315: teichmann@7315: In einem ``-Element wird zwingend ein ``-Element erwartet, teichmann@7315: um einen Datensatz aus der Datenbank zu holen. Dieser Datensatz steht dann innerhalb des teichmann@7315: ``-Elementes ein oder mehrfach zur Verfügung. Innerhalb eines teichmann@7315: ``-Elementes können weitere ``-Elemente eingeschachtelt werden. teichmann@7315: Ist kein 'connection'-Attribut vorhanden, wird die Datenbank-Verbindung des umgebenen teichmann@7315: Kontextes weiterbenutzt. Initial wird je nach Aufrufart der Datenkorbs entweder teichmann@7315: der **user** oder **system**-Kontext angenommen. Dies richtet sich danach, ob in teichmann@7315: der Aufrufumgebung eine Artefakt gesetzt wird oder nicht. Im ersten Fall wird teichmann@7315: angenommen, dass es sich um einen Ladevorgang für zusätzliche Daten handelt, die teichmann@7315: auch alte Berechnungen mit einschliesst. teichmann@7315: teichmann@7315: teichmann@7315: ``dc:statement`` Holen eines Datensatzes aus einer Datenbank teichmann@7315: ............................................................ teichmann@7315: teichmann@7315: .. code:: xml teichmann@7315: teichmann@7315: teichmann@7315: SQL-Select-Statement. teichmann@7315: teichmann@7315: teichmann@7315: Mittels eines SQL-Select-Statements werden in einem ``-Elementes aus teichmann@7315: der dort definierten Datenbank geholt. Die Spaltennamen der Projektion des SQL-Statements teichmann@7315: werden übernommen und später beim Auffalten des Datensatzes benutzt. teichmann@7255: teichmann@7255: ``dc:container-context`` **TODO** teichmann@7255: teichmann@7255: ``dc:properties`` **TODO** teichmann@7255: teichmann@7314: ``dc:virtual-column`` **TODO** teichmann@7314: teichmann@7314: Datensätze einschränken teichmann@7314: ~~~~~~~~~~~~~~~~~~~~~~~ teichmann@7314: teichmann@7314: ``dc:filter`` **TODO** teichmann@7314: teichmann@7314: ``dc:group`` **TODO** teichmann@7314: teichmann@7314: Datensätze auffalten teichmann@7314: ~~~~~~~~~~~~~~~~~~~~ teichmann@7314: teichmann@7255: ``dc:for-each`` **TODO** teichmann@7255: teichmann@7255: ``dc:iterate`` **TODO** teichmann@7255: teichmann@7314: Makros teichmann@7314: ~~~~~~ teichmann@7255: teichmann@7255: ``dc:macro`` **TODO** teichmann@7255: teichmann@7255: ``dc:macro-body`` **TODO** teichmann@7255: teichmann@7255: ``dc:call-macro`` **TODO** teichmann@7255: teichmann@7314: Sonstige Elemente teichmann@7314: ~~~~~~~~~~~~~~~~~ teichmann@7255: teichmann@7314: ``dc:element`` Hinzufügen neuer Elemente in der Ausgabe teichmann@7314: ....................................................... teichmann@7255: teichmann@7314: .. code:: xml teichmann@7314: teichmann@7314: teichmann@7314: ... teichmann@7314: teichmann@7314: teichmann@7314: Erzeugt ein Element namens Name. Für den Namen gelten die `${}-Ersetzungen`_. teichmann@7314: teichmann@7314: teichmann@7314: ``dc:attribute`` Hinzufügen neuer Attribute zum umgebenden Ausgabeelement teichmann@7314: ......................................................................... teichmann@7314: teichmann@7314: .. code:: xml teichmann@7314: teichmann@7314: teichmann@7314: teichmann@7314: Fügt dem umgebenden Ausgabeelement ein weiteres Attribut namens Name mit dem teichmann@7314: Wert von Wert hinzu. Für Namen und Wert gelten die `${}-Ersetzungen`_. teichmann@7314: Der Einsatz dieses Konstrukts findet häufig im Zusammenhang mit dc:element teichmann@7314: seinen Einsatz, wenn es ein Ausgabeelement vollständig aus Variablenbelegungen teichmann@7314: erstellt werden soll. teichmann@7314: teichmann@7315: ``dc:comment`` Kommentare im Beschreibungsdokument teichmann@7315: .................................................. teichmann@7316: teichmann@7315: .. code:: xml teichmann@7314: teichmann@7315: teichmann@7315: ... teichmann@7315: teichmann@7314: teichmann@7315: Ein Kommentar auf Ebene des Beschreibungsdokumentes, das keinerlei Ausgabe teichmann@7315: im Ausgabedokument erzeugt. Eingeschachtelte Elemente werden ebenfalls nicht ausgewertet. teichmann@7315: Im Gegensatz dazu werden die XML-typischen **** in das Ausgabedokument übernommen! teichmann@7315: teichmann@7255: teichmann@7316: ``dc:message`` Ausgabe auf die Diagnoseausgabe (Log) teichmann@7316: .................................................... teichmann@7255: teichmann@7316: .. code:: xml teichmann@7255: teichmann@7316: teichmann@7316: Text für die Diagnose. teichmann@7316: teichmann@7255: teichmann@7316: Gibt den Text innerhalb des Elementes aus Ausgabe im Log aus. Dies dient in erster Linie teichmann@7316: dem Nachvollziehen von Aufrufen innerhalb des Datenkorbdokumentes. Für den Text gelten teichmann@7316: die `{$}-Ersetzungen`_. teichmann@7316: teichmann@7316: ``dc:variable`` Erzeugung einer kontext-lokalen Variablen teichmann@7316: ......................................................... teichmann@7316: teichmann@7316: .. code:: xml teichmann@7316: teichmann@7316: teichmann@7316: teichmann@7316: Legt im aktuellen Kontext eine lokale Variable namens Name an. Diese hat den teichmann@7316: Typ Typ und entsteht durch Auswertung des XPath-Ausdruck expr. Der Typ teichmann@7316: ist optional. Wird dieser nicht gesetzt, wird das Ergebnis als String interpretiert. teichmann@7316: Alternativ können hier die Werte 'number' für Zahlen, 'bool' für Boolean-Werte teichmann@7316: benutzt werden. Für den Namen und den Typ gelten die `${}-Ersetzungen`_. teichmann@7316: Wird der aktuellen `dc:context` verlassen, ist diese Variable nicht mehr definiert. teichmann@7316: teichmann@7316: teichmann@7316: ``dc:convert`` kontext-lokale Konvertierung von Variablen teichmann@7316: ......................................................... teichmann@7316: teichmann@7316: .. code:: xml teichmann@7316: teichmann@7316: teichmann@7316: teichmann@7316: Konvertiert die Variable namens Name für die Gültigkeit des aktuellen Kontextes in teichmann@7316: einen anderen Typ. Für Name und Typ gelten die `${}-Ersetzungen`_. Für die teichmann@7316: Typen gilt das gleiche wie für die Typen von `dc:variable`. teichmann@7255: teichmann@7255: Bedingte Ausführung teichmann@7255: ~~~~~~~~~~~~~~~~~~~ teichmann@7255: teichmann@7255: ```` Einfaches Wenn-Dann ohne Sonst-Fall teichmann@7255: ............................................... teichmann@7255: teichmann@7255: .. code:: xml teichmann@7255: teichmann@7255: teichmann@7255: ... teichmann@7255: teichmann@7255: teichmann@7255: Der innere Teil wird nur dann betreten, wenn der XPath-Ausdruck zu teichmann@7255: logisch wahr evaluiert wird. Dieses Konstrukt kennt keinen alternativen teichmann@7255: Pfad, der betreten wird, falls der Ausdruck zu logisch falsch ausgewertet teichmann@7255: wird. Wird dies benötigt, muss man ```` benutzen. teichmann@7255: ```` ist in Symmetrie zu ```` von XSLT entworfen worden. teichmann@7255: teichmann@7255: ```` Ketten von Wenn-Dann-Ausdrücken teichmann@7255: ............................................... teichmann@7255: teichmann@7255: .. code:: xml teichmann@7255: teichmann@7255: teichmann@7255: ... teichmann@7255: ... teichmann@7255: ... teichmann@7255: ... teichmann@7255: teichmann@7255: teichmann@7255: Es werden der Reihe nach von oben nach unter die ``test``-XPath-Ausdrücke der ``dc:when``-Elemente ausgewertet. Evaluiert ein Ausdruck zu logisch wahr, wird der innere Teil des entsprechenden ````-Elements betreten. Die verbliebenen teichmann@7255: ````- und ````-Elemente werden dann ignoriert. Evaluiert teichmann@7255: keiner der ``test``-Ausdrücke zu wahr, wird der innere Teil des teichmann@7255: ````-Elements betreten. teichmann@7255: ```` ist in Symmetrie zu ```` von XSLT entworfen worden. teichmann@7255: teichmann@7255: teichmann@7255: teichmann@7255: Datenkorb-Funktionen teichmann@7255: -------------------- teichmann@7255: teichmann@7255: ``dc:contains`` **TODO** teichmann@7255: teichmann@7255: ``dc:fromValue`` **TODO** teichmann@7255: teichmann@7255: ``dc:toValue`` **TODO** teichmann@7255: teichmann@7255: ``dc:replace`` **TODO** teichmann@7255: teichmann@7255: ``dc:replace-all`` **TODO** teichmann@7255: teichmann@7255: ``dc:has-result`` **TODO** teichmann@7255: teichmann@7255: ``dc:group-key`` **TODO** teichmann@7255: teichmann@7255: ``dc:date-format`` **TODO** teichmann@7255: teichmann@7255: ``dc:dump-variables`` **TODO** teichmann@7255: teichmann@7255: ``dc:get`` **TODO** teichmann@7255: teichmann@7255: teichmann@7255: