Benutzer-Werkzeuge

Webseiten-Werkzeuge


export:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
export:start [2019/01/07 17:13] pbudenzexport:start [2019/01/07 17:34] – [Individuelle Datenbankabfragen für den Export] pbudenz
Zeile 77: Zeile 77:
 ===== Individuelle Datenbankabfragen für den Export ===== ===== Individuelle Datenbankabfragen für den Export =====
  
-Sollen im Export auch Daten ausgegeben werden, die nicht in der XML-Struktur enthalten sind, besteht die Möglichkeit hier für individuelle Datenbankabfragen in Form von SQL-Statements in die XSL-Vorlage zu integrieren.+Sollen im Export auch Daten ausgegeben werden, die nicht in der XML-Struktur enthalten sind, besteht die Möglichkeit individuelle Datenbankabfragen in Form von SQL-Statements in die XSL-Vorlage zu integrieren.
  
-Hier für stehen beim Export (und auch bei den XSL-Vorlagen für EMails) zwei neue Xsl-Funktionen zur Verfügung, mit denen dies realisert werden kann.+Hierfür stehen beim Export (und auch bei den XSL-Vorlagen für EMails) zwei neue XSL-Funktionen zur Verfügung:
  
-ext:SqlSingle(statement) - hiermit kann ein einzelnes Attribut gelesen und direkt ausgegeben werden +  * **ext:SqlSingle(statement)** Hiermit kann ein einzelnes Attribut gelesen und direkt ausgegeben werden 
-ext:Sql(statement) - hiermit wird das Ergebnis einer Abfrage als XML-Struktur generiert, die dann mit XPath bzw. Xsl-Select-Anweisungen iteriert und ausgegeben werden kann.+  * **ext:Sql(statement)** Diese Funktion liefert das  Ergebnis einer Abfrage als XML-Struktur generiert.
  
 Die Verwendung beider Funktionen soll das folgende Beispiel verdeutlichen: Die Verwendung beider Funktionen soll das folgende Beispiel verdeutlichen:
Zeile 120: Zeile 120:
 </HTML> </HTML>
  
-Diese Exportvorlage wird für eine XML-Struktur genutzt, die nur Matrikelnummern und Namen von Studierenden liefert, aber keine weiteren Angaben zur Person oder deren Studienverlauf. Der Export soll nun aber zusätzlich um das Geburtsdatum und die belegten Studienabschnittsversionene ergänzt werden.+Diese Exportvorlage wird für eine XML-Struktur genutzt, die nur Matrikelnummern und Namen von Studierenden liefert, aber keine weiteren Angaben zur Person oder deren Studienverlauf. Der Export soll nun aber zusätzlich um das Geburtsdatum und die belegten Studienabschnittsversionen ergänzt werden.
  
-Zunächst ist es erforderlich, dass im Stylesheet-Tag (hier in der 2. Zeile) die Angabe für den namespace "ext" mit angegeben wird. Dies erfolgt durch den zusätzlichen Parameter *xmlns:ext="http://ihb-eg.de/xsl"*. Ohne diesen Paramter können die Funktionen nicht verwendet werden bzw. es führt zu einer Fehlermeldung.+Zunächst ist es erforderlich, dass im Stylesheet-Tag (hier in der 2. Zeile) die Angabe für den Namespace "ext" mit angegeben wird. Dies erfolgt durch den zusätzlichen Parameter  
 +<HTML>xmlns:ext="http://ihb-eg.de/xsl"</HTML> 
 +Ohne diesen Paramter können die Funktionen nicht verwendet werden bzw. es führt zu einer Fehlermeldung.
  
-Da die Sql-Abfragen umfangreicher sein können und auch darin auf Daten der XML-Struktur verwiesen werden kann, ist es ratsam, dass für jede Abfrage eine eigene Xsl-Variable definiert wird. Dies erfolgt im Beispiel für zwei Abfragen in den folgenden Zeilen:+Da die Sql-Abfragen umfangreicher sein können und auch darin auf Daten der XML-Struktur verwiesen werden kann, ist es ratsam, dass für jede Abfrage eine eigene XSL-Variable definiert wird. Dies erfolgt im Beispiel für zwei Abfragen in den folgenden Zeilen:
    
 <HTML> <HTML>
 <xsl:variable name="sql1">select gdatum from student where matrnr=<xsl:value-of select="nMatrNr"/></xsl:variable> <xsl:variable name="sql1">select gdatum from student where matrnr=<xsl:value-of select="nMatrNr"/></xsl:variable>
 +
 <xsl:variable name="sql2"> <xsl:variable name="sql2">
  select abschnitt.bez, studabver.bez as version  select abschnitt.bez, studabver.bez as version
Zeile 139: Zeile 142:
 </HTML> </HTML>
  
-Die erste Abfrage *sql1* liefert das Geburtsdatum der Studierenden. Hier ist auch zu sehen, wie diese Abfrage mit der Matrikelnummer aus der XML-Struktur parametrisiert wird. Die Ausgabe des Geburtsdatums erfolgt nun mit der Funktion ext:SqlSingle:+Die erste Abfrage **sql1** liefert das Geburtsdatum der Studierenden. Hier ist auch zu sehen, wie diese Abfrage mit der Matrikelnummer aus der XML-Struktur parametrisiert wird. Die Ausgabe des Geburtsdatums erfolgt nun mit der Funktion ext:SqlSingle:
  
 <HTML> <HTML>
Zeile 145: Zeile 148:
 </HTML> </HTML>
  
-Die zweite Abfrage liefert die Bezeichnungen der belegten Studienabschnitte und die Version. Damit selektiert diese Abfrage sowohl mehrere Attribute, wie auch mehrere mögliche Datensätze als Resultat. Daher wird hierfür die Funktion ext:Sql verwendet, die z.B. folgendes Resultat wiederum als XML-Struktur liefert (dies wird zur Kontrolle auch im System Log ausgegeben):+Die zweite Abfrage **sql2** ermittelt die Bezeichnungen der belegten Studienabschnitte und Versionen. Damit selektiert diese Abfrage sowohl mehrere Attribute, wie auch mehrere mögliche Datensätze als Resultat. Daher wird hierfür die Funktion ext:Sql verwendet, die z.B. folgendes Resultat wiederum als XML-Struktur liefert (dies wird zur Kontrolle auch im [[sysemlog:start|System Log]] ausgegeben):
  
 <HTML> <HTML>
Zeile 160: Zeile 163:
 </HTML> </HTML>
  
-Über diese XML-Struktur kann nun mit einer for-each-Schleife iteriert und die gewünschten Attribute ausgegeben werden (im Beispiel mit Semikolin getrennt).+Über diese XML-Struktur kann nun mit einer for-each-Schleife iteriert und die gewünschten Attribute ausgegeben werden (im Beispiel mit Semikolon getrennt). Dabei ist zu beachten, dass sich die for-each-Schleife bereits auf das row-Tag bezieht, d.h. der Zugriff auf untergeordneten Attribute kann ohne Pfadangabe erfolgen.
  
 <HTML> <HTML>
export/start.txt · Zuletzt geändert: 2020/01/15 06:36 von pbudenz