[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() > $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() > $start and
position() < $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 > 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