05 - Recherche et affichage dans ori-oai-search

L'ajout de la métadonnée concernée dans le module ori-oai-search concerne plusieurs étapes :

Recherche avancée

Nous pouvons voir dans le fichier [ORI_HOME]/src/ori-oai-search-svn/conf/search/default_exemple-complet/config.xml le bloc suivant :

<!-- LOM -->
<search_menu key="lom">

    <!-- Recherche avancée -->
    <advanced_search key="advanced" file="lom_advanced.xml">
      ...
     </advanced_search>

</search_menu>

Ceci nous indique que la définition du formulaire de recherche avancée de l'onglet « Pédagogie » (LOM) se trouve dans le fichier [ORI_HOME]/src/ori-oai-search-svn/conf/search/default_exemple-complet/advanced/lom_advanced.xml. En effet, tous les fichiers de configuration de recherche avancée de type advanced_search d'une contribution "C" se trouvent dans le dossier [ORI_HOME]/src/ori-oai-search-svn/conf/search/C/advanced.

Ouvrez en mode édition ce fichier. On peut y voir que tous les champs de recherche <field> sont regroupés dans différents groupes <group>. Ces groupes sont distingués par différentes zones dans l'interface de recherche.

Le champ de recherche que nous voulons ajouter correspond à un critère pédagogique. Il faut donc ajouter un bloc <field> dans le groupe « peda » :

<field id="peda_semanticDensity" format="text" vocabularyId="common_lom_educ_semantic_density">
     <metadata>//lom:educational/lom:semanticDensity/lom:value</metadata>
</field>
  • id est l'identifiant de ce champ de recherche
  • vocabularyId permet de dire sur quel vocabulaire se base la construction de la liste déroulante dans l'interface de recherche
  • metadata correspond ici au xpath de la métadonnée concernée. A noter qu'il peut y avoir plusieurs balises metadata afin qu'un champ de recherche corresponde à plusieurs métadonnées.

Une fois cette configuration ajoutée, il faut définir le libellé du champ de recherche. Tous les libellés présents par défaut se trouvent dans les fichiers [ORI_HOME]/src/ori-oai-search-svn/conf/search/default_exemple-complet/i18n/forms_XX.properties où XX correspond aux différents codes de langues supportés dans votre application. Pour modifier ou ajouter des libellés, il est conseillé d'éditer les fichiers [ORI_HOME]/src/ori-oai-search-svn/conf/search/default_exemple-complet/i18n/custom_XX.properties

Comme nous nous intéressons ici à la recherche avancée ayant comme clef « advanced » qui elle-même se trouve dans un menu de recherche plus global « lom », il faut ajouter les entrées suivantes dans les fichiers de définition des libellés :

menu.form.label.lom.advanced.peda_semanticDensity=Densit\u00E9 s\u00E9mantique
menu.form.comment.lom.advanced.peda_semanticDensity=m\u00E9tadonn\u00E9e ajout\u00E9e en formation

Affichage dans les résultats de recherche

On ajoutera dans cet exemple l'affichage de ce résultat uniquement depuis la Recherche avancée du menu de recherche Multi-formats. La même procédure devra être appliquée pour afficher cette métadonnée dans tous les autres modes de recherches.

Dans le fichier [ORI_HOME]/src/ori-oai-search-svn/conf/search/default_exemple-complet/config.xml, il faut ajouter le bloc suivant :

<search_menu key="all">

  <!-- Recherche avancée -->
 <advanced_search key="advanced" file="all_advanced.xml">

   <result_fields>
                 ...
     <result_field key="semanticDensity" format="vocabulary:common_lom_educ_semantic_density" highlight="false">
       <metadata>//lom:educational/lom:semanticDensity/lom:value</metadata>
     </result_field>

   </result_fields>
         ...
  </advanced_search>

</search_menu>

Il faut alors indiquer le libellé de ce champ dans l'interface des résultats dans les fichiers [ORI_HOME]/src/ori-oai-search-svn/conf/search/default_exemple-complet/i18n/custom_XX.properties. Pour information, les libellés définis par défaut pour les champs de résultat se trouvent dans [ORI_HOME]/src/ori-oai-search-svn/conf/search/default_exemple-complet/i18n/menus_XX.properties Comme nous avons ajouté la métadonnée semanticDensity dans les résultats de la recherche avancée advanced du menu de recherche all, il faut ajouter l'élément suivant :

menu.result.all.advanced.semanticDensity=Densit\u00E9 s\u00E9mantique

Affichage dans la notice

L'affichage et le rendu des fiches de métadonnées s'effectuent par une transformation XSLT commandée depuis la JSP [ORI_HOME]/src/ori-oai-search-svn/webapp/WEB-INF/stylesheets/notice/notice.jsp. Cette JSP fait le lien entre la fiche de métadonnée au format XML et une feuille de transformation XSL. Aussi, les fichiers de message multilingues étant gérés uniquement au niveau des JSP, notice.jsp fournit en paramètre à la XSL tous les libellés à afficher dans le rendu. La transformation XSLT nécessite une XSL spécifique à chaque format de métadonnée. Cette XSL est spécifiée pour chaque format dans l'attribut xsl de la balise config/notice_formats/format du fichier de configuration config.xml.

Dans le cas du LOM pour notre cas, nous avons la configuration suivante :

<notice_formats>
       <format formatMetadataValue="..." prefix="lom" xsl="lom.xsl" headXsl="lom.xsl">
             ...
       </format>
<notice_formats>

Cela signifie que nous utilisons la XSL lom.xsl qui se trouve dans le dossier [ORI_HOME]/src/ori-oai-search-svn/webapp/WEB-INF/xsl.

Dans notre exemple, nous n'allons pas modifier la XSL fournie dans les sources, mais surcharger celle-ci en la recopiant dans notre contribution. Copiez donc le fichier [ORI_HOME]/src/ori-oai-search-svn/webapp/WEB-INF/xsl/lom.xsl vers [ORI_HOME]/src/ori-oai-search-svn/conf/search/default_exemple-complet/xsl/lom.xsl

Editez le fichier que vous venez de coller.

La première étape consiste à ajouter en paramètre d'entrée du fichier l'appel à un paramètre fourni par la JSP au moment de la transformation XSLT. Ce paramètre correspond au libellé de la métadonnée qui sera affiché dans l'interface. A la suite des autres paramètres, ajoutez :

<xsl:param name="xsl.lom.semanticDensity"/>

Il faut maintenant faire appel à ce libellé et afficher la valeur de la métadonnée. Ajoutez le bloc suivant juste après le bloc similaire qui concerne la variable peda_interactivityLevel :

<!-- Densite semantique -->
<xsl:call-template name="print_template">
	<xsl:with-param name="element" select="//lom:educational/lom:semanticDensity/lom:value"/>
	<xsl:with-param name="label" select="$xsl.lom.semanticDensity"/>
</xsl:call-template>

et modifier le saut de ligne suivant:

<!-- Saut de ligne -->
<xsl:call-template name="print_br">
	<xsl:with-param name="previous1" select="count(//lom:educational/lom:interactivityType/lom:value) > 0"/>
	<xsl:with-param name="previous2" select="count(//lom:educational/lom:interactivityLevel/lom:value) > 0"/>
	<xsl:with-param name="previous3" select="count(//lom:educational/lom:semanticDensity/lom:value) > 0"/>
</xsl:call-template>

Enregistrez ce fichier. Il faut alors indiquer le libellé de ce champ dans la notice dans les fichiers [ORI_HOME]/src/ori-oai-search-svn/conf/search/default_exemple-complet/i18n/custom_XX.properties :

xsl.lom.semanticDensity=Densit\u00E9 s\u00E9 mantique

Il faut maintenant surcharger le fichier notice.jsp.

Copiez-coller le fichier [ORI_HOME]/src/ori-oai-search-svn/webapp/WEB-INF/stylesheets/notice/notice.jsp vers [ORI_HOME]/src/ori-oai-search-svn/conf/search/default_exemple-complet/stylesheets/notice/notice.jsp.

Ensuite, éditez ce fichier afin de donner le paramètre lié aux libellés à la XSL comme ceci à la suite des autres paramètres:

<x:param name="xsl.lom.semanticDensity">
     <fmt:message key="xsl.lom.semanticDensity"/>
</x:param>

Enregistrez ce fichier. A cette étape, la valeur qui sera affichée dans la notice correspond à la valeur réelle du champ dans la fiche de métadonnées LOM. Afin de « traduire » cette valeur dans un terme compréhensible par tous, il faut paramétrer une traduction de cette valeur au moment de l'affichage de la notice en utilisant le vocabulaire défini au préalable common_lom_educ_semantic_density. Pour cela, il faut éditer le fichier config.xml et intervenir dans le bloc config/notice_formats/format et ajouter une balise metadata comme suit :

<notice_formats>
       <format formatMetadataValue="..." prefix="lom" xsl="lom1.xsl" headXsl="lom.xsl">
             ...
             <metadata format="vocabulary:common_lom_educ_semantic_density">
                  //lom:educational/lom:semanticDensity/lom:value
             </metadata>
       </format>
<notice_formats>

Enregistrez ce fichier.

Mise à jour des modifications

Arrêtez le serveur tomcat :

[ORI_HOME]/tomcat-search/bin/shutdown.sh

Redéployez l'application :

cd [ORI_HOME]/src/ori-oai-quick-install-svn
ant all-search

Relancez le serveur tomcat :

[ORI_HOME]/tomcat-search/bin/startup.sh

Et accédez aux interfaces de recherche pour visualiser les modifications.

  • No labels