You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-fr@cocoon.apache.org by daneel <da...@epseelon.org> on 2005/03/14 13:12:58 UTC

Structure d'un site sur 3 colonnes

Bonjour,

Je m'appelle Sébastien ARBOGAST, je suis élève-ingénieur en informatique
à l'INSA de Rennes. En ce moment et depuis le mois d'août, je suis à
Montréal (CANADA) pour ma dernière année et mon projet de fin d'études.

C'est justement ce projet qui m'a amené à Cocoon. Je fais mon stage dans
un laboratoire de l'Ecole Polytechnique de Montréal, le LARIM (pour
Laboratoire de Recherche en Réseautique et Informatique Mobile) et mon
projet c'est de proposer une architecture de gestion de contenu adaptée
à la mobilité des services. En clair ce que je veux faire c'est une
espèce de CMS qui ne diffuse pas le contenu sur du HTTP comme le font la
plupart des CMS traditionnels, mais uniquement en Web Services, de façon
à pouvoir faire appel à une passerelle pour diffuser effectivement sur
différents média (un jour le Web à travers des portlets mais pour
l'instant surtout le Wap, iMode, MMS et compagnie). Je n'ai rien trouvé
de similaire pour l'instant et si vous en connaissez, je vous serai
reconnaissant de me le faire savoir. Mais j'ai pensé qu'il pourrait être
intéressant d'avoir un outil qui simplifie le développement de services
mobiles en utilisant les dernières technos serveur.

Toujours est-il que pour ce genre de choses, un framework XML
s'imposait. J'ai testé Orbeon Presentation Server : intéressant mais
encore trop marginal. Et là je suis en train de me familiariser avec
Cocoon depuis une petite semaine donc je suis vraiment un pur newbie.
J'ai eu un peu de mal à accéder à cette mailing liste donc j'ai laissé
ma question sur un forum de developpez.com mais je pense que j'ai plus
de chances de trouver de l'aide sur cette liste alors je vous forwarde
ma question :

Bonjour,

Dans la série "je découvre Cocoon", je suis maintenant en train 
d'essayer d'établir la structure de base de mon application.
Dans un premier temps, je vise une structure assez classique de ce genre :
Code:

-----------------------------------
|                north            |
-----------------------------------
| west |      center      |  east |
-----------------------------------
|                south            |
-----------------------------------

Oh le beau BorderLayout ! Eh oui je viens du Java...
Vous allez me dire, c'est un design classique et il existe plein de 
tutoriels pour ça ! C'est vrai et je les ai essayés et soit ils sont 
beaucoup trop compliqués (et que je t'utilise des actions et des 
selectors et des... eh doucement je démarre !) soit ils ne remplissent 
pas mes objectifs.

Bon plus concrètement voilà comment je vois les choses :
- la cellule "north" ça sera pour l'entête avec éventuellement des 
onglets paramétrables (histoire que l'onglet correspondant à la section 
courante soit en avant par exemple mais bon ça c'est pas prioritaire) et 
des petits boutons genre "contact", "choix de la langue", "choix du 
thème", etc.
- la cellule "west" ça sera pour le menu de navigation : comme mon appli 
sera un CMS, l'idée c'est d'avoir un menu de navigation sous forme 
d'arborescence comme dans la console d'admin de tomcat, mais bon pour ça 
on verra plus tard
- la cellule "east", je sais pas encore ce qu'il pourra y avoir dedans, 
des informations contextuelles par exemple, mais bon je préfère la 
prévoir au cas où
- la cellule "south", c'est pour le copyright, les "powered by" et tout 
le tremblement.
- et le meilleur pour la fin : la cellule "center ça sera pour le 
contenu effectif de la section courante, de la page appelée.

Au niveau de mon pipeline voilà comment j'aimerais que les choses s'agencent
1 - je charge la page xml depuis un fichier
2 - j'applique le thème
2.1 j'aggrège le contenu xml des différentes cellules autour de celui de 
la page pour arriver à une structure du type
Code:

<view>
   <header/>
   <navigation/>
   <page/>
   <contextual/>
   <footer/>
</view>

2.2 je passe tout ça à la moulinette XSLT pour en ressortir une page 
XHTML 1.1 Strict (tant qu'à faire)
3 - je localise en utilisant le transformer adequat
4 - je sérialise

Comme vous vous en doutez peut etre le gros de la difficulté pour moi se 
situe au niveau de la notion de thème : en fait j'aime bien l'idée de 
pouvoir changer l'apparence d'une application à la volée donc j'aimerais 
bien que la transformation qui consiste à appliquer le thème soit "à 
part". Par exemple je n'aime pas trop l'idée de faire un truc du genre :
Code:

<map:pipeline>
   <map:match pattern="*">
     <map:aggregate element="view">
       <map:part src="header.xml"/>
       <map:part src="navigation.xml"/>
       <map:part src="content/{1}.xml"/>
       <map:part src="contextual.xml"/>
       <map:part src="footer.xml"/>
     </map:aggregate>
     <map:transform type="xslt" src="stylesheets/view2xhtml.xsl"/>
     <map:transform type="i18n"/>
     <map:serialize type="xhtml"/>
   </map:match>
</map:pipeline>

Parce qu'alors le chargement de la page se fait à l'intérieur de la 
procédure d'application du thème que je voudrais externaliser. Ce que je 
voudrais c'est un truc du genre:
Code:

<map:pipeline>
   <map:match pattern="*">
     <map:generate src="content/{1}.xml"/>
     <!-- Application du thème par appel d'une ressource par exemple si 
c'est possible -->
     <map:transform type="i18n"/>
     <map:serialize type="xhtml"/>
   </map:match>
</map:pipeline>


Pour l'instant je n'ai aucune idée de comment je peux faire ça. Peu 
m'importe pour l'instant le paramétrage des différents éléments pour 
faire en sorte par exemple que le lien de la page chargée soit en 
surbrillance dans le menu de navigation.

Je ne sais pas si je suis très clair. S'il vous manque des données 
n'hésitez pas à demander, je repréciserai.
Merci beaucoup par avance pour toute l'aide que vous pourrez m'apporter.

daneel

---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: Structure d'un site sur 3 colonnes

Posted by Sylvain Wallez <sy...@apache.org>.
daneel wrote:

> Bonjour,
>
> Je m'appelle Sébastien ARBOGAST, je suis élève-ingénieur en informatique
> à l'INSA de Rennes. En ce moment et depuis le mois d'août, je suis à
> Montréal (CANADA) pour ma dernière année et mon projet de fin d'études.
>
> C'est justement ce projet qui m'a amené à Cocoon. Je fais mon stage dans
> un laboratoire de l'Ecole Polytechnique de Montréal, le LARIM (pour
> Laboratoire de Recherche en Réseautique et Informatique Mobile) et mon
> projet c'est de proposer une architecture de gestion de contenu adaptée
> à la mobilité des services. En clair ce que je veux faire c'est une
> espèce de CMS qui ne diffuse pas le contenu sur du HTTP comme le font la
> plupart des CMS traditionnels, mais uniquement en Web Services, de façon
> à pouvoir faire appel à une passerelle pour diffuser effectivement sur
> différents média (un jour le Web à travers des portlets mais pour
> l'instant surtout le Wap, iMode, MMS et compagnie). Je n'ai rien trouvé
> de similaire pour l'instant et si vous en connaissez, je vous serai
> reconnaissant de me le faire savoir. Mais j'ai pensé qu'il pourrait être
> intéressant d'avoir un outil qui simplifie le développement de services
> mobiles en utilisant les dernières technos serveur.
>
> Toujours est-il que pour ce genre de choses, un framework XML
> s'imposait. J'ai testé Orbeon Presentation Server : intéressant mais
> encore trop marginal. Et là je suis en train de me familiariser avec
> Cocoon depuis une petite semaine donc je suis vraiment un pur newbie.
> J'ai eu un peu de mal à accéder à cette mailing liste donc j'ai laissé
> ma question sur un forum de developpez.com mais je pense que j'ai plus
> de chances de trouver de l'aide sur cette liste alors je vous forwarde
> ma question :
>
> Bonjour,
>
> Dans la série "je découvre Cocoon", je suis maintenant en train 
> d'essayer d'établir la structure de base de mon application.
> Dans un premier temps, je vise une structure assez classique de ce 
> genre :
> Code:
>
> -----------------------------------
> |                north            |
> -----------------------------------
> | west |      center      |  east |
> -----------------------------------
> |                south            |
> -----------------------------------
>
> Oh le beau BorderLayout ! Eh oui je viens du Java...
> Vous allez me dire, c'est un design classique et il existe plein de 
> tutoriels pour ça ! C'est vrai et je les ai essayés et soit ils sont 
> beaucoup trop compliqués (et que je t'utilise des actions et des 
> selectors et des... eh doucement je démarre !) soit ils ne remplissent 
> pas mes objectifs.
>
> Bon plus concrètement voilà comment je vois les choses :
> - la cellule "north" ça sera pour l'entête avec éventuellement des 
> onglets paramétrables (histoire que l'onglet correspondant à la 
> section courante soit en avant par exemple mais bon ça c'est pas 
> prioritaire) et des petits boutons genre "contact", "choix de la 
> langue", "choix du thème", etc.
> - la cellule "west" ça sera pour le menu de navigation : comme mon 
> appli sera un CMS, l'idée c'est d'avoir un menu de navigation sous 
> forme d'arborescence comme dans la console d'admin de tomcat, mais bon 
> pour ça on verra plus tard
> - la cellule "east", je sais pas encore ce qu'il pourra y avoir 
> dedans, des informations contextuelles par exemple, mais bon je 
> préfère la prévoir au cas où
> - la cellule "south", c'est pour le copyright, les "powered by" et 
> tout le tremblement.
> - et le meilleur pour la fin : la cellule "center ça sera pour le 
> contenu effectif de la section courante, de la page appelée.
>
> Au niveau de mon pipeline voilà comment j'aimerais que les choses 
> s'agencent
> 1 - je charge la page xml depuis un fichier
> 2 - j'applique le thème
> 2.1 j'aggrège le contenu xml des différentes cellules autour de celui 
> de la page pour arriver à une structure du type
> Code:
>
> <view>
>   <header/>
>   <navigation/>
>   <page/>
>   <contextual/>
>   <footer/>
> </view>
>
> 2.2 je passe tout ça à la moulinette XSLT pour en ressortir une page 
> XHTML 1.1 Strict (tant qu'à faire)
> 3 - je localise en utilisant le transformer adequat
> 4 - je sérialise
>
> Comme vous vous en doutez peut etre le gros de la difficulté pour moi 
> se situe au niveau de la notion de thème : en fait j'aime bien l'idée 
> de pouvoir changer l'apparence d'une application à la volée donc 
> j'aimerais bien que la transformation qui consiste à appliquer le 
> thème soit "à part". Par exemple je n'aime pas trop l'idée de faire un 
> truc du genre :
> Code:
>
> <map:pipeline>
>   <map:match pattern="*">
>     <map:aggregate element="view">
>       <map:part src="header.xml"/>
>       <map:part src="navigation.xml"/>
>       <map:part src="content/{1}.xml"/>
>       <map:part src="contextual.xml"/>
>       <map:part src="footer.xml"/>
>     </map:aggregate>
>     <map:transform type="xslt" src="stylesheets/view2xhtml.xsl"/>
>     <map:transform type="i18n"/>
>     <map:serialize type="xhtml"/>
>   </map:match>
> </map:pipeline>
>
> Parce qu'alors le chargement de la page se fait à l'intérieur de la 
> procédure d'application du thème que je voudrais externaliser.


Je ne comprends pas bien ce qui ne te convient pas. Est-ce parce que le 
nom de la XSL est fixe?

Dans ce cas, tu peux aussi écrire
  <map:transform type="xslt" src="stylesheets/{session-attr:theme}.xsl"/>

Ca va chercher le thème à appliquer dans l'attribut de session "thème". 
Cette notation utilise les "input modules" de Cocoon qui permettent 
d'aller piocher des infos simples à peu près n'importe où !

> Ce que je voudrais c'est un truc du genre:
> Code:
>
> <map:pipeline>
>   <map:match pattern="*">
>     <map:generate src="content/{1}.xml"/>
>     <!-- Application du thème par appel d'une ressource par exemple si 
> c'est possible -->
>     <map:transform type="i18n"/>
>     <map:serialize type="xhtml"/>
>   </map:match>
> </map:pipeline>
>
>
> Pour l'instant je n'ai aucune idée de comment je peux faire ça. Peu 
> m'importe pour l'instant le paramétrage des différents éléments pour 
> faire en sorte par exemple que le lien de la page chargée soit en 
> surbrillance dans le menu de navigation.
>
> Je ne sais pas si je suis très clair. S'il vous manque des données 
> n'hésitez pas à demander, je repréciserai.
> Merci beaucoup par avance pour toute l'aide que vous pourrez m'apporter.
>
> daneel

-- 
Sylvain Wallez                        Anyware Technologies
http://apache.org/~sylvain            http://anyware-tech.com
Apache Software Foundation Member     Research & Technology Director


---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: Structure d'un site sur 3 colonnes

Posted by Thenon David <th...@wanadoo.fr>.
Bonjour,

Le "thème" ce n'est que de la mise en page (CSS,etc.. ). D'après tes exemples, 
tu sembles plutôt parler de la structure de tes pages.

Pour ma part j'utilise un procédé avec un tuyau qui se base sur <map:match 
pattern="*.html"> ou <map:match pattern="*.rss"> par exemple, qui contient 
lui tout le nécessaire( transformer xsl, serializer, etc..) à la bonne mise 
en page dans le format demandé.

Ce même tuyau, lui aggrège trois autres tuyaux, une entête, un "body", et un 
pied de page. 

L'entête est construite à partir d'un fichier statique et d'autres soustuyaux 
qui récupère les métas.  Le pied de page est directement un fichier statique. 
Et enfin le "body" qui est fait pour accueillir le contenu, les navigations 
et tout le reste. Le body est construit à partit d'autres aggrégations, selon 
les besoins.

Le principe, c'est que tout ce que reçoivent les tuyaux principaux (*.html, 
*rss, etc..) est dans un format xml plus où moins définit (moi je me suis 
basé sur XDOC), ensuite il te reste plus qu'a construire des feuilles xsl 
génériques "xdoc2format.xsl" pour chaque format de sortie.
Tout les autres tuyaux, utilisent en général une feuille xsl privée qui leur 
permettent de recracher le xml brut dans une forme toute prête à être 
intégrée si ce n'est pas déja le cas.

Voila un exemple pour l'essentiel :
<!-- Une entrée à la racine du subsitemap root de ton applis. -->
<map:match pattern="*.html">
    <map:aggregate element="document">
        <map:part src="cocoon:/common/entete.xdoc"/>
        <map:part src="cocoon:/body_content_id{1}.xdoc"/>
        <map:part src="common/piedpage.xdoc"/>
    </map:aggregate>
    <map:transform src="common/xsl/xdoc2html.xsl">
        <map:parameter name="content-id" value="{1}"/>
    </map:transform>
    <!-- une ressource maison -->
    <map:call resource="xhtml-output"/>
</map:match>

<!-- Une entrée qui forme le body  -->
<map:match pattern="body_content_*.xdoc">
    <map:aggregate element="body">
        <map:part src="cocoon:/common/navigation-interne.xdoc"/>
        <map:part src="cocoon:/id{1}.xdoc"/>
        <map:part src="cocoon:/common/outils_menu_standard.xdoc"/>
    </map:aggregate>
    <map:serialize type="xml"/>
</map:match>

<!-- Le contenu direct -->
<map:match pattern="id*.xdoc">
    ...
</map:match>

Comme tu vois, on récupère le 'code' du document (avec {1}) et on s'en sert 
pour appeler le contenu en rapport avec.

Ton contenu et tes autres parties de document, peuvent être dans un fichier 
statique ou provenir d'autres sous-tuyaux qui le forme depuis une BDD ou 
autre..

Voila je crois que c'est tout, en espérant avoir été clair :)

++

Le lundi 14 Mars 2005 13:12, daneel a écrit :
> Bonjour,
>
> Je m'appelle Sébastien ARBOGAST, je suis élève-ingénieur en informatique
> à l'INSA de Rennes. En ce moment et depuis le mois d'août, je suis à
> Montréal (CANADA) pour ma dernière année et mon projet de fin d'études.
>
> C'est justement ce projet qui m'a amené à Cocoon. Je fais mon stage dans
> un laboratoire de l'Ecole Polytechnique de Montréal, le LARIM (pour
> Laboratoire de Recherche en Réseautique et Informatique Mobile) et mon
> projet c'est de proposer une architecture de gestion de contenu adaptée
> à la mobilité des services. En clair ce que je veux faire c'est une
> espèce de CMS qui ne diffuse pas le contenu sur du HTTP comme le font la
> plupart des CMS traditionnels, mais uniquement en Web Services, de façon
> à pouvoir faire appel à une passerelle pour diffuser effectivement sur
> différents média (un jour le Web à travers des portlets mais pour
> l'instant surtout le Wap, iMode, MMS et compagnie). Je n'ai rien trouvé
> de similaire pour l'instant et si vous en connaissez, je vous serai
> reconnaissant de me le faire savoir. Mais j'ai pensé qu'il pourrait être
> intéressant d'avoir un outil qui simplifie le développement de services
> mobiles en utilisant les dernières technos serveur.
>
> Toujours est-il que pour ce genre de choses, un framework XML
> s'imposait. J'ai testé Orbeon Presentation Server : intéressant mais
> encore trop marginal. Et là je suis en train de me familiariser avec
> Cocoon depuis une petite semaine donc je suis vraiment un pur newbie.
> J'ai eu un peu de mal à accéder à cette mailing liste donc j'ai laissé
> ma question sur un forum de developpez.com mais je pense que j'ai plus
> de chances de trouver de l'aide sur cette liste alors je vous forwarde
> ma question :
>
> Bonjour,
>
> Dans la série "je découvre Cocoon", je suis maintenant en train
> d'essayer d'établir la structure de base de mon application.
> Dans un premier temps, je vise une structure assez classique de ce genre :
> Code:
>
> -----------------------------------
>
> |                north            |
>
> -----------------------------------
>
> | west |      center      |  east |
>
> -----------------------------------
>
> |                south            |
>
> -----------------------------------
>
> Oh le beau BorderLayout ! Eh oui je viens du Java...
> Vous allez me dire, c'est un design classique et il existe plein de
> tutoriels pour ça ! C'est vrai et je les ai essayés et soit ils sont
> beaucoup trop compliqués (et que je t'utilise des actions et des
> selectors et des... eh doucement je démarre !) soit ils ne remplissent
> pas mes objectifs.
>
> Bon plus concrètement voilà comment je vois les choses :
> - la cellule "north" ça sera pour l'entête avec éventuellement des
> onglets paramétrables (histoire que l'onglet correspondant à la section
> courante soit en avant par exemple mais bon ça c'est pas prioritaire) et
> des petits boutons genre "contact", "choix de la langue", "choix du
> thème", etc.
> - la cellule "west" ça sera pour le menu de navigation : comme mon appli
> sera un CMS, l'idée c'est d'avoir un menu de navigation sous forme
> d'arborescence comme dans la console d'admin de tomcat, mais bon pour ça
> on verra plus tard
> - la cellule "east", je sais pas encore ce qu'il pourra y avoir dedans,
> des informations contextuelles par exemple, mais bon je préfère la
> prévoir au cas où
> - la cellule "south", c'est pour le copyright, les "powered by" et tout
> le tremblement.
> - et le meilleur pour la fin : la cellule "center ça sera pour le
> contenu effectif de la section courante, de la page appelée.
>
> Au niveau de mon pipeline voilà comment j'aimerais que les choses
> s'agencent 1 - je charge la page xml depuis un fichier
> 2 - j'applique le thème
> 2.1 j'aggrège le contenu xml des différentes cellules autour de celui de
> la page pour arriver à une structure du type
> Code:
>
> <view>
>    <header/>
>    <navigation/>
>    <page/>
>    <contextual/>
>    <footer/>
> </view>
>
> 2.2 je passe tout ça à la moulinette XSLT pour en ressortir une page
> XHTML 1.1 Strict (tant qu'à faire)
> 3 - je localise en utilisant le transformer adequat
> 4 - je sérialise
>
> Comme vous vous en doutez peut etre le gros de la difficulté pour moi se
> situe au niveau de la notion de thème : en fait j'aime bien l'idée de
> pouvoir changer l'apparence d'une application à la volée donc j'aimerais
> bien que la transformation qui consiste à appliquer le thème soit "à
> part". Par exemple je n'aime pas trop l'idée de faire un truc du genre :
> Code:
>
> <map:pipeline>
>    <map:match pattern="*">
>      <map:aggregate element="view">
>        <map:part src="header.xml"/>
>        <map:part src="navigation.xml"/>
>        <map:part src="content/{1}.xml"/>
>        <map:part src="contextual.xml"/>
>        <map:part src="footer.xml"/>
>      </map:aggregate>
>      <map:transform type="xslt" src="stylesheets/view2xhtml.xsl"/>
>      <map:transform type="i18n"/>
>      <map:serialize type="xhtml"/>
>    </map:match>
> </map:pipeline>
>
> Parce qu'alors le chargement de la page se fait à l'intérieur de la
> procédure d'application du thème que je voudrais externaliser. Ce que je
> voudrais c'est un truc du genre:
> Code:
>
> <map:pipeline>
>    <map:match pattern="*">
>      <map:generate src="content/{1}.xml"/>
>      <!-- Application du thème par appel d'une ressource par exemple si
> c'est possible -->
>      <map:transform type="i18n"/>
>      <map:serialize type="xhtml"/>
>    </map:match>
> </map:pipeline>
>
>
> Pour l'instant je n'ai aucune idée de comment je peux faire ça. Peu
> m'importe pour l'instant le paramétrage des différents éléments pour
> faire en sorte par exemple que le lien de la page chargée soit en
> surbrillance dans le menu de navigation.
>
> Je ne sais pas si je suis très clair. S'il vous manque des données
> n'hésitez pas à demander, je repréciserai.
> Merci beaucoup par avance pour toute l'aide que vous pourrez m'apporter.
>
> daneel
>
> ---------------------------------------------------------------------
> Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
> Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
> Autres commandes : mailto:users-fr-help@cocoon.apache.org


---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org