<?xml version="1.0"?>
<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.1b1//EN" "../../../dtd/website.dtd" [
	<!ENTITY config SYSTEM "configuration.xml" NDATA XML>
]>
<webpage id="migration_sitemap">
	<head>
		<title>La mise en place du <emphasis>sitemap</emphasis> Cocoon</title>
		<titleabbrev>
			<emphasis>Sitemap</emphasis>
		</titleabbrev>
		<author>
			<firstname>Martin</firstname>
			<surname>Sévigny</surname>
			<affiliation>
				<orgname>AJLSM</orgname>
			</affiliation>
		</author>
		<revhistory>
			<revision>
				<revnumber>1.0</revnumber>
				<date>2002/07/22</date>
			</revision>
		</revhistory>
	</head>
	<section>
		<title>Rappel du fonctionnement de SDX-1</title>
		<para>Les applications SDX-1 sont construites en utilisant la technologie XSP de Cocoon. Ainsi, une page XSP est appelée, celle-ci produit un document XML virtuel qui est ensuite transformé avec une XSLT puis sérialisé pour être envoyé au navigateur Web qui a fait la demande. La page XSP est donc le <emphasis>producteur</emphasis> de contenu, la transformation XSLT est le <emphasis>transformateur</emphasis> de contenu, et la sérialisation est effectuée par un <emphasis>sérialiseur</emphasis>.</para>
		<para>Le moteur Cocoon, qui prend en charge ces opérations, doit bien entendu savoir quel producteur, quel transformateur et quel sérialiseur utiliser. Pour ce faire, il puise ces informations à ces endroits&#xA0;:</para>
		<itemizedlist>
			<listitem>
				<para>Le producteur est identifié par l'URL de la demande faite par le navigateur. Par exemple, si l'URL se termine par <filename>sdx/test/index.xsp</filename>, Cocoon sait qu'il doit utiliser le fichier <filename>index.xsp</filename> dans le dossier <filename>test</filename> comme producteur de contenu.</para>
			</listitem>
			<listitem>
				<para>Le transformateur est indiqué dans le fichier XSP producteur, à l'aide d'une instruction de traitement semblable à celle-ci&#xA0;: <sgmltag>&lt;?xml-stylesheet href="xsl/index.xsl" type="text/xsl"?&gt;</sgmltag>
				</para>
			</listitem>
			<listitem>
				<para>Le sérialiseur est en général le sérialiseur par défaut, celui qui produit du HTML. Celui-ci est spécifié dans le fichier <filename>cocoon.properties</filename>.</para>
			</listitem>
		</itemizedlist>
		<para>Ce mécanisme est le même en Cocoon-2 et donc SDX-2, mais la façon de spécifier les producteurs, transformateurs et sérialiseurs est radicalement différente.</para>
	</section>
	<section>
		<title>Concepts de base du <emphasis>sitemap</emphasis>
		</title>
		<para>Les <emphasis>sitemap</emphasis> Cocoon peuvent servir à plusieurs choses, en particulier la définition de composantes et une partie de la logique applicative. Mais surtout, les <emphasis>sitemap</emphasis> servent à déterminer, en fonction de l'URL d'appel, quel producteur, quel transformateur et quel sérialiseur utiliser. Pour la migration depuis SDX-1, il est seulement important de préciser ces dernières informations en adaptant un <emphasis>sitemap</emphasis> existant.</para>
		<para>Ces informations sont spécifiées à l'aide de <emphasis>pipelines</emphasis> définis de la sorte&#xA0;:</para>
		<programlisting>
&lt;map:match pattern="*.xsp"&gt;
  &lt;map:generate type="xsp" src="{1}.xsp"/&gt;
  &lt;map:transform src="xsl/{1}.xsl"/&gt;
  &lt;map:serialize/&gt;
&lt;/map:match&gt;
</programlisting>
		<para>Ce <emphasis>pipeline</emphasis> simple indique que pour une URL qui se termine par <filename>.xsp</filename>, le générateur sera le fichier du même nom, le contenu XML généré par ce fichier sera transformé par une transformation XSLT définie dans le fichier du même nom, mais avec une extension <filename>.xsl</filename> et situé dans le dossier <filename>xsl</filename> (par exemple si on appelle l'URL <filename>index.xsp</filename> la transformation sera effectuée selon le fichier <filename>xsl/index.xsl</filename>) et enfin, le contenu est sérialisé à l'aide du sérialiseur par défaut défini ailleurs dans la <emphasis>sitemap</emphasis> (habituellement le sérialiseur HTML). Ce type de <emphasis>pipeline</emphasis> peut être utilisé dans plusieurs situations, et il est aisé d'en ajouter d'autres pour gérer les exceptions.</para>
	</section>
	<section>
		<title>Le <emphasis>sitemap</emphasis> d'une application SDX-1</title>
		<para>Dans le  cas d'une migration depuis une application SDX-1 traditionnelle, le <emphasis>sitemap</emphasis> sera très simple, composé de la règle ci-dessus et de quelques autres règles à ajouter pour les exceptions. De plus, comme le <emphasis>sitemap</emphasis> principal de SDX <emphasis>monte</emphasis> automatiquement les <emphasis>sitemap</emphasis> nommés <filename>sitemap.xmap</filename> situés dans les dossiers des applications, il suffit de mettre ces <emphasis>pipelines</emphasis> dans ce fichier.</para>
	</section>
</webpage>
