Search - Définir sa contrib - Dossier XSL

Afin de personnaliser vos fichiers XSL servant à l'affichage des notices, ou ajouter de nouveaux formats de métadonnées, il est recommandé de regarder les formats fournis avec l'application.

Il est possible de modifier les XSL fournies en les surchargeant dans ce dossier. Les XSL par défaut sont stockées dans le dossier [ORI_HOME]/src/ori-oai-search-svn/src/main/webapp/WEB-INF/xsl.
Ce dossier se découpe comme suit :

  • dc.xsl : XSL servant à afficher une notice au format Dublin Core
  • lom.xsl : XSL servant à afficher une notice au format LOM
  • tef.xsl : XSL servant à afficher une notice au format TEF
  • dcfr.xsl : XSL servant à afficher les publications
  • head : dossier contenant les XSL (une par format de métadonnées) servant à générer les en-têtes HTML lors de l'affichage de la notice
  • title : dossier contenant les XSL (une par format de métadonnées) servant à générer les titres lors de l'affichage de la notice
  • templates : templates XSL génériques appelés dans les différentes XSL

Transformation des fiches dans ORI-OAI-indexing

La "traduction" des fiches en fonction des langues au niveau du module ORI-OAI-indexing nécessite une petite explication. En effet, lors de la transformation des fiches dans les différentes langues au niveau du module ORI-OAI-indexing, la fiche XML est modifiée pour voir apparaître toutes les informations de "traduction" des champs en fonction d'un vocabulaire.

Prenons par exemple la métadonnées lom:general/lom:keyword du format LOM. Nativement, cette métadonnée ressemble à ceci :

<keyword>
    <string language="fre">climat</string>
</keyword>

Une fois "transformée", et les liens faits avec le vocabulaire "keywords_fr", cette métadonnée ressemble à ceci :

<keyword>
    <string language="fre" 
                 orioai-vocabularyId="keywords_fr"
                 orioai-termId="climat"
                 orioai-label="Climat"
                 orioai-termFullLabel="C&amp;#160;&amp;#160;&amp;#187;&amp;#160;&amp;#160;Climat"
                 orioai-termFullLabelClean="C; Climat"
    >climat</string>
</keyword>

où:
orioai-vocabularyId

l'identifiant du vocabulaire utilisé pour la traduction

orioai-termId

l'identifiant de la catégorie du vocabulaire qui correspond à la valeur retrouvée dans la fiche de métadonnée

orioai-label

le libellé traduit correspondant à la valeur initiale et trouvée dans le vocabulaire en fonction de la langue de l'utilisateur

orioai-termFullLabel

le libellé traduit correspondant au chemin complet vers la valeur trouvée dans le vocabulaire en fonction de la langue de l'utilisateur (encodage HTML)

orioai-termFullLabelClean

le libellé traduit correspondant au chemin complet vers la valeur trouvée dans le vocabulaire en fonction de la langue de l'utilisateur

Rebond vers une recherche thématique

La construction des liens vers des recherches thématiques nécessite aussi une petite explication. En effet, une fois la transformation des fiches faites dans les différentes langues au niveau du module ORI-OAI-indexing, il est possible de définir des rebonds vers une recherche thématique à partir de la valeur retrouvée dans un vocabulaire. Une fois le rebond calculé, la fiche XML est modifiée pour voir apparaître tous les paramètres nécessaires à la construction du lien.

Pour définir ces rebonds, il faut par exemple créer le bloc suivant dans le fichier config.xml :

<metadata>
    //lom:general/lom:keyword/lom:string
    <thematic_link key="lom_keywords" thematicMenuKey="lom" thematicSearchKey="keywords" showAbsoluteLink="false"/>
</metadata>

Dans ce cas, un lien sera fait vers la recherche thématique du menu lom et sous-menu keywords (uniquement dans le cas où la transformation de la fiche et le menu lom/*keywords s'appuient sur le même vocabulaire !

Dans notre exemple précédent, le XML avant transformation XSLT deviendrait alors:

<keyword>
    <string language="fre" 
                 orioai-vocabularyId="keywords_fr"
                 orioai-termId="climat"
                 orioai-label="Climat"
                 orioai-termFullLabel="C&amp;#160;&amp;#160;&amp;#187;&amp;#160;&amp;#160;Climat"
                 orioai-termFullLabelClean="C; Climat"

                 orioai-link-key="lom_keywords"
                 orioai-menuKey="lom"
                 orioai-submenuKey="keywords"
    >climat</string>
</keyword>

où:
orioai-link-key

la clef définie dans la configuration de la métadonnée dans le format

orioai-menuKey

valeur de thematicMenuKey de la configuration

orioai-submenuKey

valeur de thematicSearchKey

Enfin, l'utilisation du template

<xsl:call-template name="print_template">

dans la XSL automatise la génération du lien.

Un exemple de lien généré est alors le suivant:

<a href="http://[HOST_SEARCH]:[PORT_SEARCH]/[CONTEXT_SEARCH]/thematic-search.html?menuKey={@orioai-menuKey}&amp;submenuKey={@orioai-submenuKey}&amp;id={@orioai-id}"><xsl:value-of select="@orioai-label"/></a>

Définitions de nouveaux libellés à appeler dans la XSL

Dans le cas où il est nécessaire de définir de nouveaux messages, la première étape est de créer les messages dans le dossier i18n. Au sein des fichiers custom_fr.properties et custom_en.properties, ajouter par exemple la clef suivante :

xsl.ma_clef_de_message=Mon nouveau message

Ensuite, il est nécessaire de faire transiter ce message jusqu'à la XSL. Pour cela, il faudra surcharger le fichier notice-content-i18n-custom.jsp depuis [ORI_HOME]/src/ori-oai-search-svn/src/main/webapp/WEB-INF/jsp/notice vers le dossier jsp de la contribution.
Dans ce fichier, il faut alors définir le passage de paramètres au transformateur XSLT :

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

Enfin, dans la XSL concernée, il faut définir ce message comme un paramètre d'entrée :

<xsl:param name="xsl.ma_clef_de_message"/>
  • No labels