<texit info> author=E. Bruno title=XML TP5 </texit>
Après avoir suivi la présentation de l’outils Apache Maven, vous mettrez en place une application Apache cocoon basique.
Après avoir configuré maven pour l’utilisation à l’USTV (ajout du proxy dans ~/.m2/settings.xml cf. http://maven.apache.org/guides/mini/guide-proxies.html), suivez le tutoriel Your first Cocoon application using Maven 2 pour installer l’application de base Cocoon 2.2 (http://cocoon.apache.org/2.2/).Pas de proxy à configurer pour l’upf.
Après avoir suivi le tutoriel Your first XML pipeline, mettez en place les pipelines nécessaires pour obtenir à partir de cocoon:
books.xml
books_pivot.xml
) après application d’une feuille de style XSLT sur le document précédents (cf. TP sur XSLT)books.xhtml
après application d’un autre feuille de style sur le document books_pivot.xml
. Votre document fera référence à une feuille CSS pour la présentation.books_prices.svg
qui affichera un histogramme SVG des prix des livres.books_prices.png
qui affichera une version png du diagramme précédent.Mettez en place, une utilisation plus poussée de cocoon en :
Dans le pom.xml
à la fin de l’élément dependencies
ajouter
<dependency> <groupId>org.apache.cocoon</groupId> <artifactId>cocoon-batik-impl</artifactId> <version>1.0.0</version> </dependency>
<dependency> <groupId>org.apache.cocoon</groupId> <artifactId>cocoon-fop-impl</artifactId> <version>1.0.0</version> </dependency>
Pour utiliser le SQL Transformer vous devez :
dependencies
du pom.xml les dépendances suivantes pour que maven puisse les télécharger. Elles concernent le block databases de cocoon et les drivers de postgresql.<dependency> <groupId>org.apache.cocoon</groupId> <artifactId>cocoon-databases-impl</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> <version>8.4-702.jdbc3</version> </dependency>
Le .jar pour oracle n’est pas dans les dépôts, il faut donc le télécharger ici (dans la suite adapter la version) : http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html et l’installer “à la main”.
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 \ -Dversion=11.2.0.3 -Dpackaging=jar -Dfile=ojdbc6.jar -DgeneratePom=true
on peut ensuite ajouter la dépendance dans le pom.xml :
<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.3</version> </dependency>
src/main/resources/META-INF/cocoon/spring/datasources.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <bean name="org.apache.avalon.excalibur.datasource.DataSourceComponent/personnel" class="org.apache.cocoon.databases.bridge.spring.avalon.SpringToAvalonDataSourceWrapper"> <property name="wrappedBean"> <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" > <property name="driverClassName" value="org.postgresql.Driver"/> <property name="url" value="jdbc:postgresql://localhost/test"/> <property name="username" value="test"/> <property name="password" value="test"/> </bean> </property> </bean> </beans>
oracle.jdbc.OracleDriver
jdbc:oracle:thin:@//10.8.0.2:1521
src/main/resources/COB-INF
(attention aux chemins dans le sitemap).La syntaxe est expliquée ici http://cocoon.apache.org/2.1/userdocs/sql-transformer.html
<page> <title>Hello</title> <content> <para>This is my first Cocoon page filled with sql data!</para> <sql:execute-query xmlns:sql="http://apache.org/cocoon/SQL/2.0"> <sql:query name="personne"> select * from personne </sql:query> </sql:execute-query> </content> </page>
pipeline
un match pour générer le fichier XML précédent, lui appliquer le SQL Transformer et le serialiser.<map:match pattern="personne.xml"> <map:generate src="testsql.xml"/> <map:transform type="sql"> <map:parameter name="use-connection" value="personnel"/> <map:parameter name="show-nr-of-rows" value="true"/> <map:parameter name="clob-encoding" value="UTF-8"/> </map:transform> <map:serialize type="xml"/> </map:match>
<!-- Exemple de lecture d'un fichier avec type MIME --> <!-- Remarquer l'utilisation de l'URL pour passer un parametre --> <map:match pattern="CSS/*.css"> <map:read mime-type="text/css" src="CSS/{1}.css"/> </map:match> <map:match pattern="DTD/*.dtd"> <map:read mime-type="text/plain" src="DTD/{1}.dtd"/> </map:match>
<map:match pattern="livres/pivots_*.xml"> <map:generate src="Books/books.xml"/> <map:transform src="Books/tp3.xsl" type="saxon"> <!-- Deux solutions --> <!-- Passage directe d'un paramètre --> <map:parameter name="topauthor" value="{1}"/> <!-- La feuille de style accepte les param depuis les URL ?param1=valeur1¶m2=valeur2.... --> <map:parameter name="use-request-parameters" value="true"/> </map:transform> <map:serialize type="xml"/> </map:match>