XSLT : zones 6XX

Zone 606

L'objectif est d'afficher dans la notice détaillée l'indexation des zones 6XX, en précisant le type d'indexation (rameau ou fmesh) et en proposant une recherche pour chacune des indexations dans les autorités. Il s'agit également de proposer un rebond pour chaque autorité rameau ou fmesh ainsi que sur l'ensemble des mots matière de chaque zone 6XX (dans cet exemple, la 606).

La difficulté rencontrée réside dans le $3 correspondant au n° de notice d'autorité puisque dans les données au format MARCXML, rien ne précise que le $3 est rattaché à une sous-zone en particulier, si ce n'est qu'il apparaît avant le sous-champ concerné ($a, $x, $y, $z, etc.). Pour une zone 6XX, on peut donc avoir plusieurs $3.

Exemple : <datafield tag="606" ind1="" ind2=""><subfield code="3">1715</subfield><subfield code="a">Thérapeutique</subfield><subfield code="3">2361</subfield><subfield code="x">Guides, manuels, etc.</subfield></datafield>

Je sais qu'il y a moyen de récupérer le $3, puisque certaines bibliothèques (BULAC) y sont parvenues mais je n'ai pas trouvé la solution en XSLT ( si vous avez la solution, je suis preneur!).

Par conséquent, je propose un rebond non pas à partir du n° d'autorité mais des valeurs de l'indexation en question. Voici un exemple pour la zone 606 (nom commun) où je ne prends en considération que les $a, $x, $y, $z, $j et $2.
<xsl:choose> <xsl:when test="marc:datafield[@tag=606]"> <span class="results_summary"> <span class="label_zone">Sujet - Nom commun : </span> <xsl:for-each select="marc:datafield[@tag=606]"> <xsl:element name="a"> <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?idx=su&amp;q=<xsl:value-of select="marc:subfield[@code='a']"/></xsl:attribute><xsl:value-of select="marc:subfield[@code='a']"/></xsl:element><xsl:text> </xsl:text><xsl:if test="marc:subfield[@code='2']"><xsl:text>[</xsl:text><xsl:value-of select="marc:subfield[@code='2']"/><xsl:text>]</xsl:text></xsl:if><xsl:element name="a"><xsl:attribute name="href">/cgi-bin/koha/opac-authorities-home.pl?op=do_search&amp;type=opac&amp;authtypecode=SNC&amp;operatorc=contains&amp;and_ora=and&amp;orderby=HeadingDsc&amp;valuec=<xsl:value-of select="marc:subfield[@code='a']"/></xsl:attribute><xsl:element name="img"><xsl:attribute name="src">http://votre.serveur/opac-tmpl/prog/images/file-help-icon.png</xsl:attribute><xsl:attribute name="title">Rechercher dans les sujets:<xsl:value-of select="marc:subfield[@code='a']"/></xsl:attribute></xsl:element></xsl:element> <!-- traitement du $x --><xsl:if test="marc:subfield[@code='x']!=''"><xsl:element name="a"><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?idx=su&amp;q=<xsl:value-of select="marc:subfield[@code='x']"/></xsl:attribute><xsl:if test="marc:subfield[@code='x']"><xsl:value-of select="marc:subfield[@code='x']"/></xsl:if></xsl:element><xsl:text> </xsl:text><xsl:if test="marc:subfield[@code='x']!='' and marc:subfield[@code='2']!=''"><xsl:text>[</xsl:text><xsl:value-of select="marc:subfield[@code='2']"/><xsl:text>]</xsl:text></xsl:if><xsl:if test="marc:subfield[@code='x'] !=''"><xsl:element name="a"><xsl:attribute name="href">/cgi-bin/koha/opac-authorities-home.pl?op=do_search&amp;type=opac&amp;authtypecode=SNC&amp;operatorc=contains&amp;and_ora=and&amp;orderby=HeadingDsc&amp;valuec=<xsl:value-of select="marc:subfield[@code='x']"/></xsl:attribute><xsl:element name="img"><xsl:attribute name="src">http://votre.serveur/opac-tmpl/prog/images/file-help-icon.png</xsl:attribute><xsl:attribute name="title">Rechercher dans les sujets:<xsl:value-of select="marc:subfield[@code='x']"/></xsl:attribute></xsl:element></xsl:element></xsl:if></xsl:if><!-- traitement du $y --><xsl:if test="marc:subfield[@code='y']!=''"><xsl:element name="a"><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?idx=su&amp;q=<xsl:value-of select="marc:subfield[@code='y']"/></xsl:attribute><xsl:if test="marc:subfield[@code='y']"><xsl:value-of select="marc:subfield[@code='y']"/></xsl:if></xsl:element><xsl:text> </xsl:text><xsl:if test="marc:subfield[@code='y']!='' and marc:subfield[@code='2']!=''"><xsl:text>[</xsl:text><xsl:value-of select="marc:subfield[@code='2']"/><xsl:text>]</xsl:text></xsl:if><xsl:if test="marc:subfield[@code='y'] !=''"><xsl:element name="a"><xsl:attribute name="href">/cgi-bin/koha/opac-authorities-home.pl?op=do_search&amp;type=opac&amp;authtypecode=SNC&amp;operatorc=contains&amp;and_ora=and&amp;orderby=HeadingDsc&amp;valuec=<xsl:value-of select="marc:subfield[@code='y']"/></xsl:attribute><xsl:element name="img"><xsl:attribute name="src">http://votre-serveur/opac-tmpl/prog/images/file-help-icon.png</xsl:attribute><xsl:attribute name="title">Rechercher dans les sujets:<xsl:value-of select="marc:subfield[@code='y']"/></xsl:attribute></xsl:element></xsl:element></xsl:if></xsl:if><!-- traitement du $z --><xsl:if test="marc:subfield[@code='z']!=''"><xsl:element name="a"><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?idx=su&amp;q=<xsl:value-of select="marc:subfield[@code='z']"/></xsl:attribute><xsl:if test="marc:subfield[@code='z']"><xsl:value-of select="marc:subfield[@code='z']"/></xsl:if></xsl:element><xsl:text> </xsl:text><xsl:if test="marc:subfield[@code='z']!='' and marc:subfield[@code='2']!=''"><xsl:text>[</xsl:text><xsl:value-of select="marc:subfield[@code='2']"/><xsl:text>]</xsl:text></xsl:if><xsl:if test="marc:subfield[@code='z'] !=''"><xsl:element name="a"><xsl:attribute name="href">/cgi-bin/koha/opac-authorities-home.pl?op=do_search&amp;type=opac&amp;authtypecode=SNC&amp;operatorc=contains&amp;and_ora=and&amp;orderby=HeadingDsc&amp;valuec=<xsl:value-of select="marc:subfield[@code='z']"/></xsl:attribute><xsl:element name="img"><xsl:attribute name="src">http://votre.serveur/opac-tmpl/prog/images/file-help-icon.png</xsl:attribute><xsl:attribute name="title">Rechercher dans les sujets:<xsl:value-of select="marc:subfield[@code='z']"/></xsl:attribute></xsl:element></xsl:element></xsl:if></xsl:if><!-- traitement du $j --><xsl:if test="marc:subfield[@code='j']!=''"><xsl:element name="a"><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?idx=su&amp;q=<xsl:value-of select="marc:subfield[@code='j']"/></xsl:attribute><xsl:if test="marc:subfield[@code='j']"><xsl:value-of select="marc:subfield[@code='j']"/></xsl:if></xsl:element><xsl:text> </xsl:text><xsl:if test="marc:subfield[@code='j']!='' and marc:subfield[@code='2']!=''"><xsl:text>[</xsl:text><xsl:value-of select="marc:subfield[@code='2']"/><xsl:text>]</xsl:text></xsl:if><xsl:if test="marc:subfield[@code='j'] !=''"><xsl:element name="a"><xsl:attribute name="href">/cgi-bin/koha/opac-authorities-home.pl?op=do_search&amp;type=opac&amp;authtypecode=SNC&amp;operatorc=contains&amp;and_ora=and&amp;orderby=HeadingDsc&amp;valuec=<xsl:value-of select="marc:subfield[@code='j']"/></xsl:attribute><xsl:element name="img"><xsl:attribute name="src">http://votre.serveur/opac-tmpl/prog/images/file-help-icon.png</xsl:attribute><xsl:attribute name="title">Rechercher dans les sujets:<xsl:value-of select="marc:subfield[@code='j']"/></xsl:attribute></xsl:element></xsl:element></xsl:if></xsl:if>  <!-- recherche sur tous les mots --> <xsl:element name="a"><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?idx=su&amp;q=<xsl:value-of select="marc:subfield[@code='a']"/><xsl:if test="marc:subfield[@code='x'] !=''"><xsl:text>+</xsl:text></xsl:if> <xsl:if test="marc:subfield[@code='x']!=''"><xsl:value-of select="marc:subfield[@code='x']"/></xsl:if><xsl:if test="marc:subfield[@code='y'] !=''"><xsl:text>+</xsl:text></xsl:if> <xsl:if test="marc:subfield[@code='y']!=''"><xsl:value-of select="marc:subfield[@code='y']"/></xsl:if><xsl:if test="marc:subfield[@code='z'] !=''"><xsl:text>+</xsl:text></xsl:if> <xsl:if test="marc:subfield[@code='z']!=''"><xsl:value-of select="marc:subfield[@code='z']"/></xsl:if><xsl:if test="marc:subfield[@code='j'] !=''"><xsl:text>+</xsl:text></xsl:if> <xsl:if test="marc:subfield[@code='j']!=''"><xsl:value-of select="marc:subfield[@code='j']"/></xsl:if></xsl:attribute> <xsl:element name="img"><xsl:attribute name="src">http://votre-serveur/opac-tmpl/prog/images/Zoom-icon.png</xsl:attribute><xsl:attribute name="title">Lancer une recherche sur tous les mots sujet</xsl:attribute></xsl:element> </xsl:element> <xsl:text> | </xsl:text> </xsl:for-each> </span></xsl:when></xsl:choose>