[koha-Infos] Koha et les autorités RAMEAU

Frédéric Demians frederic at tamil.fr
Mar 14 Juin 10:52:41 CEST 2011


Bonjour,

Je voudrais fournir une information concernant cette question de la
prise en charge dans Koha des vedettes autorités RAMEAU construites.

Il apparait que la principale difficulté se présente à l'OPAC où les
subdivisions des autorités RAMEAU ne sont pas affichées distinctement et
ne permettent pas de lancer des requêtes sur les autorités spécifiques
ayant servies à construire la vedette.

Par exemple pour une vedette comme celle-ci :

600  1 _3027107957
        _9100
        _aRonsard
        _bPierre de
        _f1524-1585
        _3028626613
        _9200
        _xBibliographie descriptive
        _2rameau

Il serait intéressant d'afficher :

   Ronsard, Pierre, 1524-2585 -- Bibliographie descriptive

Avec un liens pour chaque subdivision : un premier lien pour
"Ronsard..." vers le numéro d'autorité Koha 100 et un second pour
"Bibliograp..." vers 200. Cela fonctionne ainsi dans le SUDOC.

Les feuilles de style XSL UNIMARC standards n'affichent qu'un unique
lien vers le premier numéro d'autorité (100).  C'est ce point précis qui
gêne certaines bibliothèques.

Il existe une solution, presque simple s'il ne s'agissait d'XSL. Il faut
modifier la feuille de style UNIMARCslimUtils.xsl. Il y a un "template"
tag_subject qui est utilisé pour afficher les zones 60x. La version
modifiée suivante affiche et lie correctement, au sens décrit ci-dessus,
les subdivisions. Les allergiques à l'XSL sont invités à s'éloigner et
les autres à essayer :

<xsl:template name="tag_subject">
<xsl:param name="tag" />
<xsl:param name="label" />
<xsl:if test="marc:datafield[@tag=$tag]">
<span class="results_summary">
<span class="label">
<xsl:value-of select="$label"/>
<xsl:text>: </xsl:text>
</span>
<span class="value">
<xsl:for-each select="marc:datafield[@tag=$tag]">
<xsl:choose>
<xsl:when test="marc:subfield[@code=9]">
<xsl:for-each select="marc:subfield">
<xsl:if test="@code='9'">
<xsl:variable name="start" select="position()"/>
<xsl:variable name="ends">
<xsl:for-each select="../marc:subfield[position() &gt; $start]">
<xsl:if test="@code=3 or @code=9 or @code=2">
<xsl:variable name="end" select="position() + $start"/>
<xsl:value-of select="$end"/>
<xsl:text>,</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="end">
<xsl:choose>
<xsl:when test="string-length($ends) > 0">
<xsl:value-of select="substring-before($ends,',')"/>
</xsl:when>
<xsl:otherwise>
<xsl:text>1000</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="display">
<xsl:for-each select="../marc:subfield[position() &gt; $start and 
position() &lt; $end]">
<xsl:value-of select="."/>
<xsl:if test="not(position()=last())">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<a>
<xsl:attribute name="href">
<xsl:text>/cgi-bin/koha/opac-search.pl?q=an:</xsl:text>
<xsl:value-of select="."/>
</xsl:attribute>
<xsl:value-of select="$display"/>
</a>
<xsl:variable name="ncommas"
                          select="string-length($ends) - 
string-length(translate($ends, ',', ''))" />
<xsl:if test="$ncommas &gt; 1">
<xsl:text> -- </xsl:text>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<a>
<xsl:attribute name="href">
<xsl:text>/cgi-bin/koha/opac-search.pl?q=su:</xsl:text>
<xsl:value-of select="marc:subfield[@code='a']"/>
</xsl:attribute>
<xsl:call-template name="chopPunctuation">
<xsl:with-param name="chopString">
<xsl:call-template name="subfieldSelect">
<xsl:with-param name="codes">abcdijkmnpvxyz</xsl:with-param>
<xsl:with-param name="subdivCodes">ijknpxyz</xsl:with-param>
<xsl:with-param name="subdivDelimiter">-- </xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</a>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="not(position()=last())">
<br/>
</xsl:if>
</xsl:for-each>
</span>
</span>
</xsl:if>
</xsl:template>

-- 
Frédéric DEMIANS
http://www.tamil.fr/u/fdemians.html



More information about the Infos mailing list