MCI 1 - Praktikum WS 2002/2003

dienstags 15.15-17.00 Uhr, 503D
Interaktive Depotverwaltung Nächstes Treffen: 14. Januar 2003
Diskussion 17. Dezember 2002 Teilnemerliste


Allgemeines zu Cocoon. Die Wertpapierdepot-Anwendung soll mit dem XML-Publishing-Framework Cocoon realisiert werden. Dieses Framework hebt die Benutzung von XML- und XSLT-Technologien auf eine neue Ebene. Der Web-Application-Designer kann sich schwerpunktmäßig auf die Konstruktion von XML-Bäumen und zugehörigen XSL-Stylesheets konzentrieren, ohne sich mit den Techniken der Servlet-API aueinandersetzen zu müssen. Zusätzlich bietet Cocoon die Möglichkeit, dynamisch XML-Bäume (DOM-Bäume) zur Laufzeit zu generieren. Zum Beispiel kann aus dem Resultset eines SQL-Select-Statements ein DOM-Baum aufgebaut werden. Der Baum wird durch den XSLT-Prozessor in eine andere Datenstruktur wie z.B. ein HTML-Dokument transformiert. Für diese Schritte braucht kein Javacode geschrieben werden.

Das nächste Treffen zum MCI-1 - Praktikum findet am Dienstag, den 14. Januar 2003 statt. Bis zu diesem Termin bitte ich Sie, in kleinen Gruppen (max 3 Leute) die Grundfunktionalität für ein Wertpapierdepot fertig zu stellen. In den verbleibenden 2-3 Wochen kann dan an geeigneten Stylesheets gearbeitet werden. In der Datenbank habe ich alle Constraints deaktiviert, so dass Datensätze auch ohne existierende Foreign-Keys angelegt werden können. In die Marktdatentabelle werde ich selbst einige Tupel einfügen. Bitte beachten Sie, dass am 28. Januar in der FH der Strom abgeschlaltet wird. An diesem Tag steht die Datenbank daher nicht zur Verfügung.

Teilnemerliste mit eMail-Adressen

Bitte lesen Sie die folgenden Punkte genau durch und probieren Sie selbst verschiedene Beispiele - auch mit Datenbankzugriff auf Ihrem Rechner aus.

Schöne Weihnachtsferien, die Informatik aber bitte nciht ganz vergessen.

Um mit Cocoon zu arbeiten, müssen folgende Vorbereitungen getroffen werden:

  1. JDK, Tomcat und Cocoon installieren. Die Umgebungungsvariablen JAVA_HOME (JDK) und CATALINA_HOME (Tomcat) auf die jeweiligen BIN-Verzeichnisse setzen
  2. JDBC-Treiber installieren. Der JDBC-Treiber, z.B. "oracle.jar", muss in das Runtime Environment Verzeichnis von JDK kopiert werden: "%JAVA_HOME%/jre/lib/ext/". Falls der JDBC-Treiber, den Sie beim Datenbankhersteller downloaden können, die Extension ".zip", so kann die Datei einfach in "<filename>.jar" umbenannt werden, da es sich um ein Java-Archiv handelt.
  3. Cocoon konfigurieren. Die Administration von Cocoon erfolgt über sogenannte Sitemaps. Sitemaps sind XML-Dokumente, deren Tags von Cocoon gelesen werden. Durch diese Tags werden Cocoon's Funktionn gesteuert.
  4. Die XML- und XSL-Dateien werden zum Beispiel in den definierte Subkontext von Cocoon z.B. "mci1_depot" angelegt. Die innere Vereichnis-Struktur im Subkontext kann beliebig gewählt werden. Man muss nur darauf achten, dass die regulären Ausdrücke in der Subsitemap in der Lage sind einen URL-String zu parsen, damit Cocoon die Dateien finden kann. Beispiel:
    Der URL-String "http://localhost:8080/cocoon/hk/ws0203/mci1_depot/xml/depotstart.xml" wird durch die regulären Ausdrücke in der Subsitemap geparsed, wobei die Variable {1} den Wert "/ws0203/mci1_depot/xml/" und die Variable {2} den Wert "depostart" erhält. Der Subkontext heißt hier "hk" und wurde in der Hauptsidemap spezifiziert.
  5. Um dynamische XML-Bäume zu generieren muss ein XSP-Dokument geschrieben werden (eXtensible Server Pages). Für XSP-Dokumente stellt Cocoon eine eigene Tag-Library zur Verfügung, die in der Cocoon-Dokumentation beschrieben ist. Hier ein Beispiel für eine Datenbankanfrage und die Konstruktion eines DOM-Baumes:
    <?xml version="1.0"?>
    
    <xsp:page	language="java"
     			xmlns:xsp="http://apache.org/xsp"
     			xmlns:esql="http://apache.org/cocoon/SQL/v2">
    <xsp:logic>
    String hallo = "Heute ist Dienstag.";
    </xsp:logic>
    
    <root>
    	<esql:connection>
    		<esql:pool>mydepot</esql:pool>
    		<esql:execute-query>
    			<esql:query>SELECT waehrungen_id, name, kuerzel FROM waehrungen</esql:query>
    			<esql:results>
    				<esql:row-results>
    					<waehrung>
    						<waehrungen_id>
    							<esql:get-int column="waehrungen_id"/>
    						</waehrungen_id>
    						
    						<name>
    							<esql:get-string column="name"/>
    						</name>
    
    						<kuerzel>
    							<esql:get-string column="kuerzel"/>
    						</kuerzel>
    					</waehrung>
    				</esql:row-results>
    			</esql:results>
    		</esql:execute-query>
    
    	</esql:connection>
    
    	<gruesse><xsp:expr>hallo</xsp:expr></gruesse>
    </root>
    
    </xsp:page>
    
  6. Die entsprechende XSL-Datei zu dem mit der XSP-Seite generierten DOM-Baum sieht zum Beispiel folgendermaßen aus:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
    	<xsl:template match="/">
    		<html>
    			<title>
    			</title>
    			<head></head>
    			<body>
    				<table border="1">
    					<xsl:apply-templates/>
    				</table>
    			</body>
    		</html>
    	</xsl:template>
    
    	<xsl:template match="gruesse">
    		<xsl:value-of select="."/>
    	</xsl:template>	
    	
    	<xsl:template match="content">
    		<tr>
    			<xsl:apply-templates/>
    		</tr>
    	</xsl:template>	
    	
    	<xsl:template match="waehrung">
    		<tr>
    			<xsl:apply-templates/>
    		</tr>
    	</xsl:template>
    
    	<xsl:template match="waehrungen_id | name | kuerzel">
    		<td>
    			<xsl:value-of select="."/> 
    		</td>
    	</xsl:template>
    
    </xsl:stylesheet>
    

Letzte Änderung: 19. Dezember 2002