UP PREVIOUS NEXT   Technologies Internet et Education, © TECFA
  4. "Basics" du Cocoon Framework

4. "Basics" du Cocoon Framework

A TECFA tous les fichiers *.sxml sont envoyés à Cocoon pour traitement

4.1 Principe de base

Cocoon est un "publishing framework" basé XML et écrit en Java

Philosophie de base = séparation des tâches:

  1. Création de XML: Typiquement ces fichiers sont produits par des auteurs/spécialistes de contenu avec un éditeur XML.
  2. Traitement de XML: Certains vocabulaires ou tags nécessitent un traitement spécial par un "logicsheet". Imaginez un tag <publications name="dill"> qui fait de sorte à ce que toutes les publications de "dill" soient sorties d'une base de données.
  3. Mise en forme (rendering de XML). Le contenu XML final sera mise en forme par une feuille de style. Actuellement surtout du HTML, mais on peut servir des contenus HTML, PDF, XML, WML, XHTML, VRML, etc. en fonction du client)

Résumé: Cocoon/XSP permet de séparer contenu, "logique" et style.

... ceci est quasi-impossible avec Php, Jsp, Asp etc.

4.2 XML + XSL simple

Principe:

Vous faites un fichier *.sxml (contenu) et un fichier *.xsl (style)

Vous devez indiquer à Cocoon comment traiter le fichier xml et comment utiliser la feuille de style dans le fichier xsl selon les règles ci-dessous

Entêtes à mettre dans les fichiers (S)XML et XSL:

Fichier XML (extension = *.sxml):

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="VOTRE_FICHER_XSL.xsl" type="text/xsl"?>
<?cocoon-process type="xslt"?>

Fichier XSL (extension = .xsl):

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
// doit aller DANS le template pour la racine XML !!!
<xsl:template match="VOTRE_RACINE">
<xsl:processing-instruction name="cocoon-format">type="text/html"
     </xsl:processing-instruction>
......

Exemple 4-1: Cocoon XML + XSL examples

<?xml version="1.0"?>
<?xml-stylesheet href="hello-page-html.xsl" type="text/xsl"?>
<?cocoon-process type="xslt"?>
 <title>Hello Cocoon friend</title>
 <content> ...... </content> 
 <comment>  Written by DKS/Tecfa, adapted from S.M./the Cocoon samples
 </comment>
</page>

hello-page-html.xsl:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="page">
   <xsl:processing-instruction name="cocoon-format">type="text/html"</xsl:processing-instruction>
   <html> <head> <title> <xsl:value-of select="title"/> </title> </head>
    <body bgcolor="#ffffff">
     <xsl:apply-templates/>
    </body>
   </html>
  </xsl:template>
......
</xsl:stylesheet>

4.3 Interfaces SQL

Cocoon possède 3 interfaces:

..... voir plus loin dans ce document !

4.4 LDAP Interface

<?xml version="1.0"?>
<?xml-stylesheet href="ldap.xsl" type="text/xsl"?>
<?cocoon-process type="ldap"?>
<?cocoon-process type="xslt"?>
<page>
  <ldap-defs>
    <ldap-server name="tecfa">
      <initializer>com.sun.jndi.ldap.LdapCtxFactory</initializer>
      <ldap-serverurl>ldap://tecfa2.unige.ch:389</ldap-serverurl>
    </ldap-server>
    <ldap-querydefs name="standard" default="yes"/>     
  </ldap-defs>
  <ldap-query server="tecfa" ldap-searchbase="o=tecfa.unige.ch" defs="standard">
     givenname=Daniel
  </ldap-query>
</page>

4.5 Xinclude Processor

Template:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="style.xsl" type="text/xsl"?>
<?cocoon-process type="xinclude"?>
<?cocoon-process type="xslt"?>
<page xmlns:xinclude="http://www.w3.org/1999/XML/xinclude">
 
 <include xinclude:parse="xml" xinclude:href="inclure.xml"/>
 
</page>

Exemple 4-2: Simples extractions avec Xinclude et Xpointer

<?xml version='1.0' encoding='ISO-8859-1'?>
<?xml-stylesheet href="dtd/evallist.xsl" type="text/xsl"?>
<?cocoon-process type="xinclude"?>
<?cocoon-process type="xslt"?>
 
<page xmlns:xinclude="http://www.w3.org/1999/XML/xinclude">
 
<include xinclude:parse="xml" xinclude:href="proj/proj1/info.xml"/>
<specification>
<include xinclude:parse="xml" xinclude:href="proj/proj1/specification.xml#xpointer(//specification/evaluation)"/>
</specification>
 
<include xinclude:parse="xml" xinclude:href="proj/proj12/info.xml"/>
<specification>
<include xinclude:parse="xml" xinclude:href="proj/proj12/specification.xml#xpointer(//specification/evaluation)"/>
</specification>
</page>
 

UP PREVIOUS NEXT -- TIE