Merci de l'explication detaillee. Presentation Server ne possede pas
une telle couche basee sur des URLs. Certains use cases sont couverts
par XPL lui-meme, d'autres clairement non. On a d'une cote un choix
XML pur (Presentation Server) avec serialisation uniquement lorsqu'on
s'interface avec le monde exterieur, et de l'autre, un choix XML pur +
streams (Cocoon) plus generique, mais qui necessite l'introduction de
tout ce systeme de protocoles. Avec Presentation Server, on a
seulement une couche pipelines, et une couche page flow. C'est une
simplicite qui a ses avantages. Pas encore de conclusion finale de mon
cote. Encore de la matiere a brainstorming !
> D'après ce que j'ai compris, l'exécution d'un XPL passe par un
> "chaînage arrière", en partant des serializers (sans output) et en
> remontant les relations input -href/output-id jusqu'au(x)
> générateur(s).
>
> Comment (question de newbie) peut-on dans ce cas choisir le type de
> production en fonction de l'entête http user-agent ?
Le modele d'execution de XPL effectivement part des
"serialiseurs". Lorsque le processus arrive a une condition
(p:choose), il doit evaluer le document sur lequel porte la condition
avant de pouvoir decider quelle branche d'execution suivre. Par
exemple, on utiliserait le Request generator pour faire un test sur le
header user-agent:
<p:processor name="oxf:request">
<p:input name="config">
<!-- Configuration of the processor -->
</p:input>
<p:output name="data" id="request"/>
</p:processor>
<p:choose href="#request">
<p:when test="/*/headers/header[name = 'user-agent'] = 'foo'">
<!-- Etc. -->
</p:when>
<p:when test="/*/headers/header[name = 'user-agent'] = 'bar'">
<!-- Etc. -->
</p:when>
<p:otherwise>
<!-- Etc. -->
</p:otherwise>
</p:choose>
On aurait une entree toute simple dans le Page Flow:
<page path-info="/([^\.]*)\.html" matcher="oxf:perl5-matcher"
view="oxf:/${1}.xml"/>
Ensuite, on mettrait dans l'epilogue (le pipeline qui applique a toute
vue) le mecanisme de selection du serialiseur avec un p:choose. Il n'y
a pas de mecanisme de selecteurs built-in comme dans Cocoon.
> Voici comment on ferait avec Cocoon :
>
> <map:match src="{1}.hml">
> <map:generate src="{1}.xml"/>
> <map:transform src="doc2html.xsl"/>
> <map:select type="browser">
> <map:when test="xhtml-compliant">
> <map:serialize type="xhtml"/>
> </map:when>
> <map:otherwise>
> <map:serialize type="html"/>
> </map:otherwise>
> </map:select>
> </map:match>
>
> Le selecteur "browser" permet d'associer des patterns sur l'entête
> user-agent à des noms symboliques comme ici "xhtml-compliant".
-Erik
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "dev@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie au developpement du site XMLfr.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a dev-request@xmlfr.org
(mailto:dev-request@xmlfr.org?Subject=unsubscribe)
Received on Tue Sep 28 21:28:25 2004