<?xml version="1.0"?>
<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.1b1//EN" "../../../dtd/website.dtd" [
<!ENTITY pipeline SYSTEM "pipeline.xml" NDATA XML>
]>
<webpage id="indexation_parametres"> 
  <head> 
	 <title>Paramètres d'indexation</title> 
	 <titleabbrev>Paramètres</titleabbrev> 
	 <author> 
		<firstname>Martin</firstname> 
		<surname>Sévigny</surname> 
		<affiliation> 
		  <orgname>AJLSM</orgname> 
		</affiliation> 
	 </author> 
	 <revhistory> 
		<revision> 
		  <revnumber>1.0</revnumber> 
		  <date>2003-05-14</date> 
		</revision> 
	 </revhistory> 
  </head> 
  <para>L'indexation d'un document XML se fait à l'aide d'un <olink targetdocent="pipeline"><emphasis>pipeline</emphasis> d'indexation</olink> ; comme tout <emphasis>pipeline</emphasis> en SDX, celui-ci peut recevoir des paramètres. Ces paramètres sont transférés à <emphasis role="bold">toutes les transformations du <emphasis>pipeline</emphasis></emphasis>, sans aucune distinction. Ces transformations peuvent choisir ou non d'utiliser les paramètres. Nous allons définir ici les paramètres que SDX fournit à tous les <emphasis>pipelines</emphasis> d'indexation, de même que la procédure à suivre pour fournir vos propres paramètres d'indexation.</para><section><title>Paramètres SDX</title><para>Les paramètres suivants sont fournis par SDX au <emphasis>pipeline</emphasis> d'indexation, lors de toute opération d'indexation.</para><variablelist><varlistentry><term>docUrl</term><listitem><para>L'adresse URL absolue du document indexé, lorsqu'une telle adresse existe. Ce sera le cas lorsque le document est fourni à SDX sous la forme d'un fichier ou d'une adresse URL ; sinon, ce paramètre ne sera pas renseigné, par exemple lorsque le document a été fourni à SDX sous la forme d'un objet DOM.</para></listitem></varlistentry><varlistentry><term>sdxUser</term><listitem><para>Le code de l'utilisateur SDX qui a déclenché le processus d'indexation. Ce paramètre est facultatif, car il est possible qu'aucun utilisateur n'ait été spécifié lors du lancement du processus, par exemple si c'est un appel direct à l'API Java. Lorsqu'on passe par l'API XSP, SDX renseigne toujours l'utilisateur et ce champ est donc toujours présent.</para></listitem></varlistentry><varlistentry><term>sdxDate</term><listitem><para>La date actuelle complète (avec journée, heure et minute). A noter que si un lot de documents est envoyé à l'indexation, la date est modifié au démarrage de l'indexation de chaque document.</para><para>Le format de la date contenue dans ce paramètre dépend de la machine virtuelle Java et de sa configuration. Techniquement, la date est obtenue avec cet appel Java : <literal>java.text.DateFormat.getDateTimeInstance(java.text.DateFormat.FULL, java.text.DateFormat.FULL).format(new java.util.Date())</literal>.  C'est le <emphasis>locale</emphasis> système qui déterminera le format exact utilisé. Voici un exemple : <literal>vendredi 2 mai 2003 08 h 14 CEST</literal>. Il est préférable d'utiliser ce paramètre dans le cas où la date doit être affichée, pas pour être exploitée par l'informatique.</para></listitem></varlistentry><varlistentry><term>sdxISO8601Date</term><listitem><para>La date actuelle complète (avec journée, heure et minute). A noter que si un lot de documents est envoyé à l'indexation, la date est modifiée au démarrage de l'indexation de chaque document.</para><para>Le format de la date contenue dans ce paramètre respecte la norme ISO 8601 : <literal>yyyy-MM-dd'T'HH:mm:ssz</literal>, par exemple <literal>2003-05-02T08:14:00CEST</literal>.</para></listitem></varlistentry></variablelist></section><section><title>Comment utiliser ces paramètres ?</title><para>Toutes les transformations qui font partie d'un <emphasis>pipeline</emphasis> d'indexation ont accès à ces informations. L'accès aux paramètres va varier selon que la transformation est une XSLT ou une classe Java (les deux mécanismes supportés par SDX).</para><section><title>Transformations XSLT</title><para>Pour bénéficier de ces paramètres, vous devez les déclarer comme des paramètres XSLT de premier niveau, de cette façon :</para><programlisting>
&lt;xsl:stylesheet&gt;
  &lt;xsl:param name="docUrl"/&gt;
  &lt;xsl:param name="sdxUser"/&gt;
  &lt;xsl:param name="sdxDate"/&gt;
  &lt;xsl:param name="sdxISO8601Date"/&gt;
  ...
&lt;/xsl:stylesheet&gt;
</programlisting><para>Par la suite, vous pouvez les utiliser où vous voulez dans votre transformation en les appelant comme des variables, par exemple ainsi :</para><programlisting>
  &lt;xsl:template match="doc"&gt;
    &lt;xsl:message&gt;Début de l'indexation du document
       &lt;xsl:value-of select="@id"/&gt; à &lt;xsl:value-of select="$sdxDate"/&gt;
       par &lt;xsl:value-of select="$sdxUser"/&gt;
    &lt;/xsl:message&gt;
  &lt;/xsl:template&gt;
</programlisting></section><section><title>Classes Java</title><para>Une transformation d'un <emphasis>pipeline</emphasis> peut être implémentée par une classe Java qui implémente l'interface fr.gouv.culture.sdx.pipeline.Transformation. Cette interface a une méthode <literal>setParameters(org.apache.avalon.framework.parameters.Parameters)</literal> qui sera utilisée par SDX pour passer les paramètres. La classe qui implémente cette interface n'a plus qu'à gérer correctement les paramètres en interne.</para><para>A noter que pour simplifier cette gestion des paramètres, il est conseillé de créer une classe qui étend <literal>fr.gouv.culture.sdx.pipeline.AbstractTransformation</literal>, car cette classe abstraite implémente déjà la gestion des paramètres et met à disposition des classes qui étendent une variable protégée <literal>parameters</literal> qui les contient.</para></section></section> 
</webpage> 
