Ignore:
Timestamp:
2007-05-25T16:12:13+12:00 (17 years ago)
Author:
lh92
Message:

Added the copyright information

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl-documentation/manuals/xml-source/fr/Develop_fr.xml

    r13868 r14099  
    22<Manual id="Develop" lang="fr">
    33<Heading>
    4 <Text id="1"/>
     4<Text id="1"/><Updated date="1-Mar-2004 by unknown"/>
    55</Heading>
    66<Title>
    7 <Text id="2">Guide du développeur de la bibliothÚque numérique Greenstone</Text>
     7<Text id="2">Guide du développeur de la bibliothÚque numérique Greenstone</Text><Updated date="1-Mar-2004 by unknown"/>
    88</Title>
    99<Author>
     
    1717<Text id="top_index">Retourner à l'indexe du dessus</Text>
    1818</SupplementaryText>
    19 <Text id="5">Greenstone est une suite logicielle destinée à la construction et à la distribution de collections de bibliothÚques numériques. Cette suite fournit une nouvelle maniÚre d'organiser l'information et de la publier sur l'Internet ou sur un cédérom. Greenstone est produit par le projet de bibliothÚque numérique de Nouvelle-Zélande (dépendant de l'université de Waikato), et distribué en coopération avec l'UNESCO et le projet de bibliothÚques pour l'humanité. C'est un logiciel Open Source, qu'on peut obtenir à l'URLhttp://greenstone.org, et qui est diffusé selon les termes de la licence publique générale de GNU.</Text>
     19<Text id="5">Greenstone est une suite logicielle destinée à la construction et à la distribution de collections de bibliothÚques numériques. Cette suite fournit une nouvelle maniÚre d'organiser l'information et de la publier sur l'Internet ou sur un cédérom. Greenstone est produit par le projet de bibliothÚque numérique de Nouvelle-Zélande (dépendant de l'université de Waikato), et distribué en coopération avec l'UNESCO et le projet de bibliothÚques pour l'humanité. C'est un logiciel Open Source, qu'on peut obtenir à l'URL http://greenstone.org, et qui est diffusé selon les termes de la licence publique générale de GNU.</Text>
    2020<Comment>
    21 <Text id="6">Nous souhaitons nous assurer que ce logiciel fonctionne bien pour vous.<br/>Faites-nous part, en anglais, de tout problÚme à l'adresse électronique.</Text>
     21<Text id="6">Nous souhaitons nous assurer que ce logiciel fonctionne bien pour vous.<br/>Faites-nous part, en anglais, de tout problÚme à l'adresse électronique [email protected].</Text>
    2222</Comment>
    2323<Version>
     
    6060</Bullet>
    6161</BulletList>
     62</Content>
     63</Section>
     64<Section id="copyright">
     65<Title>
     66<Text id="copyright-title">Copyright</Text>
     67</Title>
     68<Content>
     69<Text id="right-text-1">Copyright 2002 2003 2004 2005 2006 2007 by the <Link url="http://www.nzdl.org">New Zealand Digital Library Project</Link> at <Link url="http://www.waikato.ac.nz">the University of Waikato</Link>, New Zealand.</Text>
     70<Text id="right-text-2">Permission is granted to copy, distribute and/or modify this document under the terms of the <Link url="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation License</Link>, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled <Link url="http://greenstonewiki.cs.waikato.ac.nz/wiki/gsdoc/GNUFDL.html">“GNU Free Documentation License.”</Link></Text>
    6271</Content>
    6372</Section>
     
    19982007<Text id="489">Les greffons de traitement de documents sont utilisés par le logiciel de construction de collection pour analyser chaque document source d'une maniÚre qui dépend de son format. Le fichier de configuration d'une collection liste tous les greffons utilisés lors de sa construction. Lors de l'opération d'import, chaque fichier ou chaque répertoire est passé tour à tour à tous les greffons jusqu'à ce qu'un greffon soit trouvé qui puisse traiter l'objet -- c'est pourquoi les premiers greffons listés ont la priorité sur des greffons apparaissant plus tard dans la liste. Si aucun greffon ne peut traiter le fichier, un avertissement est affiché (sur la sortie d'erreur standard) et le traitement passe au fichier suivant (c'est pourquoi l'option block_exp peut être utile -- pour éviter ces messages d'erreur dans le cas de fichiers qui sont peut-être présents mais n'ont pas besoin d'être traités). Lors de la construction, on utilise la même procédure, mais c'est le répertoire archives qui est traité en lieu et place du répertoire import.</Text>
    19992008<Text id="490">Les greffons standard de Greenstone sont listés table <CrossRef target="Table" ref="greenstone_plugins"/>. Il est nécessaire d'utiliser un processus récursif pour traverser des hiérarchies de répertoires. Bien que les programmes d'import et de construction n'effectuent pas de récursion explicite, certains greffons provoquent une récursion indirecte en passant des noms de fichiers ou de répertoires dans le pipe-line des greffons. Par exemple, la maniÚre habituelle d'opérer récursivement à travers une hiérarchie de répertoire est de spécifier RecPlug, qui travaille exactement ainsi. S'il est présent, il devrait être en derniÚre position dans le pipe-line. Seuls les deux premiers greffons de la table <CrossRef target="Table" ref="greenstone_plugins"/> provoquent une récursion indirecte.</Text>
    2000 <Text id="491">Certains greffons sont écrits pour des collections spécifiques, avec un format de document que l'on ne trouve nulle part ailleurs, tel que le texte électronique utilisé dans la collection Gutenberg<FootnoteRef id="2"/>. Ces greffons spécifiques à une collection se trouvent dans le répertoire perllib/plugins de la collection. On peut utiliser des greffons spécifiques à une collection pour remplacer des greffons généraux portant le même nom, qui ne seront alors pas appelés.</Text>
     2009<Text id="491">Certains greffons sont écrits pour des collections spécifiques, avec un format de document que l'on ne trouve nulle part ailleurs, tel que le texte électronique utilisé dans la collection Gutenberg. Ces greffons spécifiques à une collection se trouvent dans le répertoire perllib/plugins de la collection. On peut utiliser des greffons spécifiques à une collection pour remplacer des greffons généraux portant le même nom, qui ne seront alors pas appelés.</Text>
    20012010<Text id="492">Certains greffons de traitement de documents utilisent des programmes externes qui analysent des formats de fichiers propriétaires spécifiques -- tel que par exemple Microsoft Word -- et les transforment en texte brut ou en HTML. Un greffon général appelé ConvertToPlug invoque le programme de conversion approprié et en passe le résultat aux greffons TEXTPlug ou HTMLPlug. Nous décrirons cette opération plus en détail sous peu.</Text>
    20022011<Text id="493">Certains greffons disposent d'options individuelles, qui les contrÎlent de maniÚre plus fine que ce que permettent les options générales. C'est la table <CrossRef target="Table" ref="plugin-specific_options"/> qui décrit ces options individuelles.</Text>
     
    22542263<CodeLine>&lt;/DirectoryMetadata&gt;</CodeLine>
    22552264</Figure>
    2256 <Text id="550">Le fichier d'exemple contient deux structures de méta-données. Dans chacune, l'élément filename décrit les fichiers auxquels les méta-données s'appliquent, sous la forme d'une expression rationnelle. &lt;FileName&gt;nugget.*&lt;/FileName&gt; indique ainsi que le premier enregistrement de méta-données s'applique à tous les fichiers dont le nom commence par «nugget»<FootnoteRef id="3"/>. Pour ces fichiers, la méta-donnée Title vaudra «Phare de Nugget Point».</Text>
     2265<Text id="550">Le fichier d'exemple contient deux structures de méta-données. Dans chacune, l'élément filename décrit les fichiers auxquels les méta-données s'appliquent, sous la forme d'une expression rationnelle. &lt;FileName&gt;nugget.*&lt;/FileName&gt; indique ainsi que le premier enregistrement de méta-données s'applique à tous les fichiers dont le nom commence par «nugget»<FootnoteRef id="2"/>. Pour ces fichiers, la méta-donnée Title vaudra «Phare de Nugget Point».</Text>
    22572266<Text id="551">Les éléments de méta-données sont traités dans l'ordre dans lequel ils apparaissent. La deuxiÚme structure de la figure 10 positionne la méta-donnée Title pour le fichier nugget-point-1.jpg à la valeur «Phare de Nugget Point, Catlins», en écrasant la spécification précédente. Elle ajoute également un champ Subject dans les méta-données.</Text>
    22582267<Text id="552">Parfois, les méta-données sont multi-valuées et les nouvelles valeurs devraient s'accumuler au lieu d'écraser les précédentes. L'attribut mode=accumulate a cet effet. Il est appliqué à la méta-donnée Place (lieu) dans la premiÚre spécification de la figure 10, cette méta-donnée sera donc multi-valuée. Pour revenir à une méta-donnée simple, écrivez<i>&lt;Metadata name="Place" mode="override"&gt;Nouvelle-Zélande&lt;/Metadata&gt;</i>En fait, on peut négliger de préciser cette spécification de mode puisque tout élément écrase le précédent par défaut, sauf indication contraire. Pour accumuler les méta-données dans un champ particulier, il faut préciser mode=accumulate à chaque occurrence.</Text>
     
    23152324<File width="394" height="143" url="images/Dev_Fig_12.png"/>
    23162325</Figure>
    2317 <Text id="569">Un classificateur plus simple, appelé List, et illustré dans la figure <CrossRef target="Figure" ref="list_classifier"/>, crée une liste triée d'une méta-donnée spécifiée et l'affiche sans créer de tranches alphabétiques. Un exemple est la méta-donnée how to de la collection «Demo», qui est produite par la ligne classify List -metadata Howto dans le fichier de configuration de la collection<FootnoteRef id="4"/>. Un autre classificateur de liste générique est DateList, illustré dans la figure <CrossRef target="Figure" ref="datelist_classifier"/>, qui engendre une liste de sélection d'intervalles de dates (le classificateur DateList est également utilisé dans la collection «Archives» de Greenstone).</Text>
     2326<Text id="569">Un classificateur plus simple, appelé List, et illustré dans la figure <CrossRef target="Figure" ref="list_classifier"/>, crée une liste triée d'une méta-donnée spécifiée et l'affiche sans créer de tranches alphabétiques. Un exemple est la méta-donnée how to de la collection «Demo», qui est produite par la ligne classify List -metadata Howto dans le fichier de configuration de la collection<FootnoteRef id="3"/>. Un autre classificateur de liste générique est DateList, illustré dans la figure <CrossRef target="Figure" ref="datelist_classifier"/>, qui engendre une liste de sélection d'intervalles de dates (le classificateur DateList est également utilisé dans la collection «Archives» de Greenstone).</Text>
    23182327<Figure id="datelist_classifier">
    23192328<Title>
     
    26962705<Text id="664">Le mot-clef format précÚde un mot-clef en deux parties, dont une seule est obligatoire. La premiÚre partie identifie la liste où s'applique le format. La liste générée par une recherche s'appelle Search (rechercher), tandis que les listes générées par des classificateurs sont appelées CL1, CL2, CL3,... pour respectivement le premier, le deuxiÚme, le troisiÚme... classificateur spécifié dans le fichier collect.cfg. La deuxiÚme partie du mot-clef est la portion de la liste à laquelle appliquer la mise en forme -- soit HList (pour une liste horizontale, telle que le sélecteur dans un noeud AZList), VList (pour une liste verticale, telle que la liste des tous les titres sous un noeud de type AZList), ou DateList. Par exemple:</Text>
    26972706<Indented>
    2698 <Text id="665">format CL4VList ... s'applique à tous les VList de CL4</Text>
     2707<Text id="665"><i>format CL4VList</i> ... s'applique à tous les <i>VList</i> de CL4</Text>
    26992708</Indented>
    27002709<Indented>
    2701 <Text id="666">format CL2HList ... s'applique à tous les HList de CL2</Text>
     2710<Text id="666"><i>format CL2HList</i> ... s'applique à tous les <i>HList</i> de CL2</Text>
    27022711</Indented>
    27032712<Indented>
    2704 <Text id="667">format CL1DateList ... s'applique à tous les DateList de CL1</Text>
     2713<Text id="667"><i>format CL1DateList</i> ... s'applique à tous les <i>DateList</i> de CL1</Text>
    27052714</Indented>
    27062715<Indented>
    2707 <Text id="668">format SearchVList ... s'applique à la liste de Résultats de la recherche</Text>
     2716<Text id="668"><i>format SearchVList</i> ... s'applique à la liste de Résultats de la recherche</Text>
    27082717</Indented>
    27092718<Indented>
    2710 <Text id="669">format CL3 ... s'applique à tous les noeuds de CL3, sauf indication contraire</Text>
     2719<Text id="669"><i>format CL3</i> ... s'applique à tous les noeuds de CL3, sauf indication contraire</Text>
    27112720</Indented>
    27122721<Indented>
    2713 <Text id="670">format VList ... s'applique à tous les VList de tous les classificateurs, sauf indication contraire</Text>
     2722<Text id="670"><i>format VList</i> ... s'applique à tous les <i>VList</i> de tous les classificateurs, sauf indication contraire</Text>
    27142723</Indented>
    27152724<Text id="671">Les<i>"..."</i>de ces exemples représentent des spécifications de formatage HTML qui contrÎlent l'information et sa représentation, apparaissant sur des pages web représentant le classificateur. Comme pour les spécifications HTML, toute méta-donnée peut apparaître entre crochets: sa valeur est interpolée à l'endroit indiqué. Tout élément de la table <CrossRef target="Table" ref="the_format_options"/> peut également apparaître dans des chaînes de formatage. La syntaxe des chaînes prévoit également une instruction conditionnelle, qui est illustrée plus bas.</Text>
     
    28652874<Content>
    28662875<Text id="717">Les macros sont puissantes, et peuvent sembler un peu obscures. Mais avec une bonne connaissance de HTML et un peu de pratique elles deviennent une maniÚre rapide et facile de personnaliser votre site Greenstone.</Text>
    2867 <Text id="718">Supposons par exemple que vous souhaitiez créer une page statique qui ressemble à votre site Greenstone actuel. Vous pouvez créer un nouveau paquetage, que vous appellerez static par exemple, dans un nouveau fichier, et y redéfinir la macro _content_. Ajoutez ce nom de fichier dans GSDLHOME/etc/main.cfg, que Greenstone charge à chaque fois qu'il est invoqué. Vous accéderez à la nouvelle page en utilisant votre URL habituelle pour Greenstone et en lui ajoutant les arguments ?a=p&amp;p=static (on obtiendra par exemple l'URL complÚte suivante:http://serveur/cgi-bin/library?a=p&amp;p=static).</Text>
     2876<Text id="718">Supposons par exemple que vous souhaitiez créer une page statique qui ressemble à votre site Greenstone actuel. Vous pouvez créer un nouveau paquetage, que vous appellerez static par exemple, dans un nouveau fichier, et y redéfinir la macro _content_. Ajoutez ce nom de fichier dans GSDLHOME/etc/main.cfg, que Greenstone charge à chaque fois qu'il est invoqué. Vous accéderez à la nouvelle page en utilisant votre URL habituelle pour Greenstone et en lui ajoutant les arguments ?a=p&amp;p=static (on obtiendra par exemple l'URL complÚte suivante: http://serveur/cgi-bin/library?a=p&amp;p=static).</Text>
    28682877<Text id="719">Pour modifier l'apparence et l'ergonomie de Greenstone vous pouvez éditer les paquetages base et style. Pour modifier la page d'accueil de Greenstone, éditez le paquetage home (ceci est décrit dans le Guide d'installation de la bibliothÚque numérique Greenstone). Pour modifier la page de requêtes, éditez le fichier query.dm.</Text>
    28692878<Text id="720">Expérimentez sans crainte avec les macros. Les modifications apparaissent instantanément, puisque les macros sont interprétées lors de l'affichage des pages. Le langage de macros est un outil puissant que vous pouvez utiliser pour vous approprier vraiment votre site Greenstone.</Text>
     
    30673076<Text id="775">SystÚme d'exécution de Greenstone</Text>
    30683077</Title>
    3069 <File width="534" height="345" url="images/Dev_Fig_24.png"/>
     3078<File width="534" height="345" url="images/Dev_Fig_24_resized.png"/>
    30703079</Figure>
    30713080<Text id="776">La figure <CrossRef target="Figure" ref="greenstone_runtime_system"/> illustre les portions principales du systÚme d'exécution de Greenstone. Au sommet, le réceptionniste initialise d'abord ses composants, puis analyse les arguments CGI pour savoir quelle action appeler. Lors de l'exécution de l'action (ce qui comprend d'autres traitements des arguments CGI), le logiciel utilise le protocole pour accéder au contenu de la collection. La réponse est utilisée pour générer une page web, avec l'aide du composant de mise en forme et du langage de macros.</Text>
     
    42124221</Bullet>
    42134222</BulletList>
    4214 <Text id="1019">Au début de la définition de classe, argsinfo est le champ de données protégé (utilisé dans l'extrait de code représenté dans la figure <CrossRef target="Figure" ref="using_the_cgiargsinfoclass_from_pageactioncpp"/>) qui stoke les informations d'argument CGI spécifiées dans une fonction constructeur d'action héritée. L'autre champ de données, gsdlhome, enregistre GSDLHOME pour pouvoir y accéder plus facilement<FootnoteRef id="5"/>. L'objet inclut également les fonctions configure() et init() à des fins d'initialisation.</Text>
     4223<Text id="1019">Au début de la définition de classe, argsinfo est le champ de données protégé (utilisé dans l'extrait de code représenté dans la figure <CrossRef target="Figure" ref="using_the_cgiargsinfoclass_from_pageactioncpp"/>) qui stoke les informations d'argument CGI spécifiées dans une fonction constructeur d'action héritée. L'autre champ de données, gsdlhome, enregistre GSDLHOME pour pouvoir y accéder plus facilement<FootnoteRef id="4"/>. L'objet inclut également les fonctions configure() et init() à des fins d'initialisation.</Text>
    42154224</Content>
    42164225</Subsection>
     
    51745183</Figure>
    51755184<Text id="1226">En STL, on fait des tableaux associatifs en utilisant l'objet map (carte, ou correspondance). La figure <CrossRef target="Figure" ref="using_associative_arrays_in_stl"/> présente un exemple quelque peu artificiel qui stocke l'âge de trois personnes (Alice, Pierre, et Marie) dans un tableau associatif indicé par leurs prénoms (lignes 19-22). Le problÚme est d'écrire une fonction qui calcule l'âge total de toutes les personnes présentes, sans savoir combien elles sont ni qui elles sont. Bien sûr, on pourrait résoudre ce problÚme avec un classique tableau d'entiers indicés numériquement. L'exemple est contraint d'illustrer les fonctionnalités de l'objet map et de mettre en valeur les similarités de traitement avec l'objet list équipé d'un iterator.</Text>
    5176 <Text id="1227">Tout comme list, map est une classe de contenance. Cependant, lorsque l'on déclare une variable de ce type, il faut spécifier deux<FootnoteRef id="6"/>choses: le type d'index, et le type d'élément. Comme on peut le voir ligne 19, on obtient un tableau associatif qui stocke des entiers indicés par des chaînes en écrivant char* (c'est la maniÚre de déclarer une chaîne en C++) en tant que type d'indiçage suivi de int en tant que type d'élément.</Text>
     5185<Text id="1227">Tout comme list, map est une classe de contenance. Cependant, lorsque l'on déclare une variable de ce type, il faut spécifier deux<FootnoteRef id="5"/>choses: le type d'index, et le type d'élément. Comme on peut le voir ligne 19, on obtient un tableau associatif qui stocke des entiers indicés par des chaînes en écrivant char* (c'est la maniÚre de déclarer une chaîne en C++) en tant que type d'indiçage suivi de int en tant que type d'élément.</Text>
    51775186<Text id="1228">Il existe plusieurs maniÚres de stocker des éléments dans le tableau associatif. Dans l'exemple, on utilise lignes 20-22 l'indice de tableau [ ], qui est surchargé, pour initialiser le tableau avec les âges des trois personnes. La ressemblance entre total_int_table -- qui effectue le calcul principal dans le programme -- et total_int_list de la figure <CrossRef target="Figure" ref="programming_a_list_of_integers"/> est frappante. Ces deux objets sont en fait presque identiques, et ce n'est pas une coïncidence. STL utilise lourdement l'héritage de sorte que des objets différents utilisent encore les mêmes opérations fondamentales. C'est particuliÚrement le cas des itérateurs (iterator). Les petites différences entre les deux fonctions sont que l'itérateur est maintenant tiré de map&lt;char*, int&gt;, et que l'accÚs à ses éléments se fait avec curr-&gt;second() -- en effet la déréférenciation de la variable (*curr) est définie comme devant renvoyer un objet de type pair. Ceci enregistre à la fois le nom d'index (first, ou «premier») et la valeur de l'élément (second, ou «deuxiÚme»), mais seul la deuxiÚme nous intéresse. À part cela, le code est identique. La seule différence restante -- le changement de l'unique argument de la fonction d'un pointeur vers une référence -- est superficielle.</Text>
    51785187<Text id="1229">Greenstone utilise largement deux autres types STL: vector (vecteur), et set (ensemble). Le premier facilite les tableaux dynamiques, et le second supporte les opérations ensemblistes mathématiques telles que l'union, l'intersection, et la différence ensembliste.</Text>
     
    52085217</Footnote>
    52095218<Footnote id="2">
    5210 <Text id="1247">... Gutenberg N.D.T.: projet de numérisation de la littérature classique en langue anglaise libre de droits, disponible sur le web.</Text>
     5219<Text id="1247">...nugget» Attention: dans Greenstone, les expressions rationnelles sont interprétées dans le langage Perl, et les conventions diffÚrent subtilement d'autres conventions. Par exemple, «*» correspond à zéro ou plusieurs occurrences du caractÚre qui précÚde, et «.» remplace n'importe quel caractÚre -- donc «nugget.*» correspond à toute chaîne commençant par «nugget», que ce préfixe soit suivi d'un point ou non. Pour imposer un point à cette position il faudrait échapper le point, et écrire «nugget..*» à la place.</Text>
    52115220</Footnote>
    52125221<Footnote id="3">
    5213 <Text id="1248">...nugget» Attention: dans Greenstone, les expressions rationnelles sont interprétées dans le langage Perl, et les conventions diffÚrent subtilement d'autres conventions. Par exemple, «*» correspond à zéro ou plusieurs occurrences du caractÚre qui précÚde, et «.» remplace n'importe quel caractÚre -- donc «nugget.*» correspond à toute chaîne commençant par «nugget», que ce préfixe soit suivi d'un point ou non. Pour imposer un point à cette position il faudrait échapper le point, et écrire «nugget..*» à la place.</Text>
     5222<Text id="1248">... collection Remarquez que les versions les plus récentes de la collection «Demo» utilisent un classificateur Hierarchy pour représenter les méta-données how to (comment faire). Dans de tels cas de figure, elles apparaîtront un peu différemment que dans la figure <CrossRef target="Figure" ref="list_classifier"/>.</Text>
    52145223</Footnote>
    52155224<Footnote id="4">
    5216 <Text id="1249">... collection Remarquez que les versions les plus récentes de la collection «Demo» utilisent un classificateur Hierarchy pour représenter les méta-données how to (comment faire). Dans de tels cas de figure, elles apparaîtront un peu différemment que dans la figure <CrossRef target="Figure" ref="list_classifier"/>.</Text>
     5225<Text id="1249">... facilement La valeur gsdlhome provient du fichier gsdlsite.cfg situé dans le même répertoire que l'exécutable CGI library, alors que GSDLHOME est positionné en exécutant le script setup qui accÚde à un fichier différent; il est donc techniquement possible que les deux valeurs soient différentes. C'est possible, mais pas désirable, et le texte ci-dessus est écrit dans l'hypothÚse où ces deux valeurs sont égales.</Text>
    52175226</Footnote>
    52185227<Footnote id="5">
    5219 <Text id="1250">... facilement La valeur gsdlhome provient du fichier gsdlsite.cfg situé dans le même répertoire que l'exécutable CGI library, alors que GSDLHOME est positionné en exécutant le script setup qui accÚde à un fichier différent; il est donc techniquement possible que les deux valeurs soient différentes. C'est possible, mais pas désirable, et le texte ci-dessus est écrit dans l'hypothÚse où ces deux valeurs sont égales.</Text>
     5228<Text id="1250">Technically there are four types, but the last two are optional. Since we are only giving a basic introduction to this STL class, details about these last two types are omitted.</Text>
    52205229</Footnote>
    52215230</FootnoteList>
Note: See TracChangeset for help on using the changeset viewer.