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:
<map:pipeline>
<!-- Matcher: -->
<map:match pattern="mci1_depot/**">
<!-- Mount: -->
<map:mount check-reload="yes" src="mci1_depot/sitemap.xmap" uri-prefix="mci1_depot"/>
</map:match>
<map:handle-errors>
<map:transform src="stylesheets/system/error2html.xsl"/>
<map:serialize status-code="500"/>
</map:handle-errors>
</map:pipeline>
<map:pipelines>
<map:pipeline>
<map:match pattern="">
<map:redirect-to uri="welcome"/>
</map:match>
<map:match pattern="welcome">
<map:generate src="xml/hello.xml"/>
<map:transform src="stylesheets/simple-page2html.xsl"/>
<map:serialize/>
</map:match>
<map:match pattern="**/*.xsp">
<map:generate type="serverpages" src="{1}/{2}.xsp"/>
<map:transform src="{1}/../stylesheets/{2}.xsl"/>
<map:serialize/>
</map:match>
<map:match pattern="**/*.xml">
<map:generate src="{1}/{2}.xml"/>
<map:transform src="{1}/../stylesheets/{2}.xsl"/>
<map:serialize/>
</map:match>
</map:pipeline>
</map:pipelines>
Erklärung: Zwei Sterne (**) stehen für einen String, welcher Verzeichnistrennzeichen ('/') enthalten darf. Die korrespondierende Variable, hier {1}, enthält also einen kompletten Verzeichnis-String, zum Beispiel "/ws0203/mci1_depot/xml/". Ein Stern steht für einen String, der kein '/'-Zeichen enthalten darf. Die entsprechende Variable, hier {2}, enthält z.B. den Namen der XML-Datei, zum Beispiel "waehrungen.xsp". Mit Hilfe dieser Variablen wird dann der Pfad konstruiert, in dem Cocoon die XML-, XSP- und XSL-Dateien findet.
<init-param>
<param-name>load-class</param-name>
<param-value>
oracle.jdbc.driver.OracleDriver
</param-value>
</init-param>
<!-- Datasources: -->
<datasources>
<jdbc logger="core.datasources.depot" name="mydepot">
<pool-controller max="10" min="5" oradb="true"/>
<dburl>jdbc:oracle:thin:@139.6.65.215:1521:fsyg</dburl>
<user>banker</user>
<password>banker</password>
</jdbc>
</datasources>
<?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>
<?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