With those stylesheets result and detail pages render better UNIMARC biblio record than normal views. But works still have to be done in order to reach UNIMARC-ISBD compliant display. --- .../prog/en/xslt/UNIMARCslim2OPACDetail.xsl | 618 ++++++++++++++++++++ .../prog/en/xslt/UNIMARCslim2OPACResults.xsl | 182 ++++++ .../opac-tmpl/prog/en/xslt/UNIMARCslimUtils.xsl | 139 +++++ 3 files changed, 939 insertions(+), 0 deletions(-) create mode 100644 koha-tmpl/opac-tmpl/prog/en/xslt/UNIMARCslim2OPACDetail.xsl create mode 100644 koha-tmpl/opac-tmpl/prog/en/xslt/UNIMARCslim2OPACResults.xsl create mode 100644 koha-tmpl/opac-tmpl/prog/en/xslt/UNIMARCslimUtils.xsl
diff --git a/koha-tmpl/opac-tmpl/prog/en/xslt/UNIMARCslim2OPACDetail.xsl b/koha-tmpl/opac-tmpl/prog/en/xslt/UNIMARCslim2OPACDetail.xsl new file mode 100644 index 0000000..988ebdc --- /dev/null +++ b/koha-tmpl/opac-tmpl/prog/en/xslt/UNIMARCslim2OPACDetail.xsl @@ -0,0 +1,618 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- $Id: MARC21slim2DC.xsl,v 1.1 2003/01/06 08:20:27 adam Exp $ --> +<xsl:stylesheet version="1.0" + xmlns:marc="http://www.loc.gov/MARC21/slim" + xmlns:items="http://www.koha.org/items" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + exclude-result-prefixes="marc items"> + +<xsl:import href="UNIMARCslimUtils.xsl"/> +<xsl:output method = "xml" indent="yes" omit-xml-declaration = "yes" /> +<xsl:template match="/"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="marc:record"> + <xsl:variable name="leader" select="marc:leader"/> + <xsl:variable name="leader6" select="substring($leader,7,1)"/> + <xsl:variable name="leader7" select="substring($leader,8,1)"/> + <xsl:variable name="biblionumber" select="marc:datafie...@tag=090]/marc:subfie...@code='a']"/> + + + <xsl:if test="marc:datafie...@tag=200]"> + <xsl:for-each select="marc:datafie...@tag=200]"> + <h1> + <xsl:value-of select="marc:subfie...@code='a']"/> + <xsl:if test="marc:subfie...@code='e']"> + <xsl:text> : </xsl:text> + <xsl:value-of select="marc:subfie...@code='e']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='b']"> + <xsl:text> [</xsl:text> + <xsl:value-of select="marc:subfie...@code='b']"/> + <xsl:text>]</xsl:text> + </xsl:if> + <xsl:if test="marc:subfie...@code='f']"> + <xsl:text> / </xsl:text> + <xsl:value-of select="marc:subfie...@code='f']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='g']"> + <xsl:text> ; </xsl:text> + <xsl:value-of select="marc:subfie...@code='g']"/> + </xsl:if> + </h1> + </xsl:for-each> + </xsl:if> + + <div id="views"> + <span class="view"> + <span id="Normalview">Normal View</span> + </span> + <span class="view"> + <a id="MARCviewPop" href="/cgi-bin/koha/opac-showmarc.pl?id={marc:datafie...@tag=090]/marc:subfie...@code='a']}" title="MARC" rel="gb_page_center[600,500]">MARC View</a> + </span> + <span class="view"> + <a id="MARCview" href="/cgi-bin/koha/opac-MARCdetail.pl?biblionumber={marc:datafie...@tag=090]/marc:subfie...@code='a']}" title="MARC">Expanded MARC View</a> + </span> + <span class="view"> + <a id="ISBDview" href="/cgi-bin/koha/opac-ISBDdetail.pl?biblionumber={marc:datafie...@tag=090]/marc:subfie...@code='a']}">Card View (ISBD)</a> + </span> + </div> + + <xsl:call-template name="tag_4xx" /> + + <xsl:if test="marc:datafie...@tag=700]"> + <xsl:for-each select="marc:datafie...@tag=700]"> + <span class="results_summary"> + <span class="label">Auteur principal: </span> + <a> + <xsl:choose> + <xsl:when test="marc:subfie...@code=9]"> + <xsl:attribute name="href"> + /cgi-bin/koha/opac-search.pl?q=an:<xsl:value-of select="marc:subfie...@code=9]"/> + </xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=au:<xsl:value-of select="marc:subfie...@code='a']"/><xsl:text> </xsl:text><xsl:value-of select="marc:subfie...@code='b']"/></xsl:attribute> + </xsl:otherwise> + </xsl:choose> + <xsl:if test="marc:subfie...@code='a']"> + <xsl:value-of select="marc:subfie...@code='a']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='b']">, + <xsl:value-of select="marc:subfie...@code='b']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='f']"> + (<xsl:value-of select="marc:subfie...@code='f']"/>) + </xsl:if> + </a> + </span> + </xsl:for-each> + </xsl:if> + + <xsl:if test="marc:datafie...@tag=710]"> + <xsl:for-each select="marc:datafie...@tag=710]"> + <span class="results_summary"> + <span class="label">Collectivité principale: </span> + <a> + <xsl:choose> + <xsl:when test="marc:subfie...@code=9]"> + <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=an:<xsl:value-of select="marc:subfie...@code=9]"/></xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=au:<xsl:value-of select="marc:subfie...@code='a']"/><xsl:text> </xsl:text><xsl:value-of select="marc:subfie...@code='b']"/></xsl:attribute> + </xsl:otherwise> + </xsl:choose> + <xsl:if test="marc:subfie...@code='a']"> + <xsl:value-of select="marc:subfie...@code='a']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='b']">, + <xsl:value-of select="marc:subfie...@code='b']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='d']">, + <xsl:value-of select="marc:subfie...@code='d']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='e']">, + <xsl:value-of select="marc:subfie...@code='e']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='f']"> + (<xsl:value-of select="marc:subfie...@code='f']"/>) + </xsl:if> + </a> + </span> + </xsl:for-each> + </xsl:if> + + <xsl:if test="marc:datafie...@tag=701]"> + <span class="results_summary"> + <span class="label">Co-auteur: </span> + <xsl:for-each select="marc:datafie...@tag=701]"> + <a> + <xsl:choose> + <xsl:when test="marc:subfie...@code=9]"> + <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=an:<xsl:value-of select="marc:subfie...@code=9]"/></xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=au:<xsl:value-of select="marc:subfie...@code='a']"/><xsl:text> </xsl:text><xsl:value-of select="marc:subfie...@code='b']"/></xsl:attribute> + </xsl:otherwise> + </xsl:choose> + <xsl:if test="marc:subfie...@code='a']"> + <xsl:value-of select="marc:subfie...@code='a']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='b']">, + <xsl:value-of select="marc:subfie...@code='b']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='f']"> + (<xsl:value-of select="marc:subfie...@code='f']"/>) + </xsl:if> + </a> + <xsl:value-of select="marc:subfie...@code='4']"/> + <xsl:choose><xsl:when test="position()=last()"><xsl:text></xsl:text></xsl:when><xsl:otherwise><xsl:text> ; </xsl:text></xsl:otherwise></xsl:choose> + </xsl:for-each> + </span> + </xsl:if> + + <xsl:if test="marc:datafie...@tag=702]"> + <span class="results_summary"> + <span class="label">Auteur: </span> + <xsl:for-each select="marc:datafie...@tag=702]"> + <a> + <xsl:choose> + <xsl:when test="marc:subfie...@code=9]"> + <xsl:attribute name="href"> + /cgi-bin/koha/opac-search.pl?q=an:<xsl:value-of select="marc:subfie...@code=9]"/> + </xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="href"> + /cgi-bin/koha/opac-search.pl?q=au:<xsl:value-of select="marc:subfie...@code='a']"/><xsl:text> + </xsl:text><xsl:value-of select="marc:subfie...@code='b']"/></xsl:attribute> + </xsl:otherwise> + </xsl:choose> + <xsl:if test="marc:subfie...@code='a']"> + <xsl:value-of select="marc:subfie...@code='a']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='b']">, + <xsl:value-of select="marc:subfie...@code='b']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='f']"> + (<xsl:value-of select="marc:subfie...@code='f']"/>) + </xsl:if> + </a>. + <xsl:value-of select="marc:subfie...@code='4']"/> + <xsl:choose> + <xsl:when test="position()=last()"> + <xsl:text>.</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text> ; </xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </span> + </xsl:if> + + <xsl:if test="marc:datafie...@tag=711]"> + <span class="results_summary"> + <span class="label">Collectivité co-auteur: </span> + <xsl:for-each select="marc:datafie...@tag=711]"> + <a> + <xsl:choose> + <xsl:when test="marc:subfie...@code=9]"> + <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=an:<xsl:value-of select="marc:subfie...@code=9]"/></xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=au:<xsl:value-of select="marc:subfie...@code='a']"/><xsl:text> </xsl:text><xsl:value-of select="marc:subfie...@code='b']"/></xsl:attribute> + </xsl:otherwise> + </xsl:choose> + <xsl:if test="marc:subfie...@code='a']"> + <xsl:value-of select="marc:subfie...@code='a']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='b']">, + <xsl:value-of select="marc:subfie...@code='b']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='d']">, + <xsl:value-of select="marc:subfie...@code='d']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='e']">, + <xsl:value-of select="marc:subfie...@code='e']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='f']"> + (<xsl:value-of select="marc:subfie...@code='f']"/>) + </xsl:if> + </a> + <xsl:value-of select="marc:subfie...@code='4']"/> + <xsl:choose><xsl:when test="position()=last()"><xsl:text></xsl:text></xsl:when><xsl:otherwise><xsl:text> ; </xsl:text></xsl:otherwise></xsl:choose> + </xsl:for-each> + </span> + </xsl:if> + + <xsl:if test="marc:datafie...@tag=101]"> + <span class="results_summary"> + <span class="label">Langue: </span> + <xsl:for-each select="marc:datafie...@tag=101]"> + <xsl:for-each select="marc:subfield"> + <xsl:choose> + <xsl:when test="@code='b'">de la trad. intermédiaire, </xsl:when> + <xsl:when test="@code='c'">de l'œuvre originale, </xsl:when> + <xsl:when test="@code='d'">du résumé, </xsl:when> + <xsl:when test="@code='e'">de la table des matières, </xsl:when> + <xsl:when test="@code='f'">de la page de titre, </xsl:when> + <xsl:when test="@code='g'">du titre propre, </xsl:when> + <xsl:when test="@code='h'">d'un livret, </xsl:when> + <xsl:when test="@code='i'">des textes d'accompagnement, </xsl:when> + <xsl:when test="@code='j'">des sous-titres, </xsl:when> + </xsl:choose> + <xsl:value-of select="text()"/> + <xsl:choose> + <xsl:when test="position()=last()"> + <xsl:text>.</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text> ; </xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </xsl:for-each> + </span> + </xsl:if> + + <xsl:if test="marc:datafie...@tag=102]"> + <span class="results_summary"> + <span class="label">Pays: </span> + <xsl:for-each select="marc:datafie...@tag=102]"> + <xsl:for-each select="marc:subfield"> + <xsl:value-of select="text()"/> + <xsl:choose> + <xsl:when test="position()=last()"> + <xsl:text>.</xsl:text> + </xsl:when> + <xsl:otherwise><xsl:text>, </xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </xsl:for-each> + </span> + </xsl:if> + + <xsl:call-template name="tag_210" /> + + <xsl:call-template name="tag_215" /> + + <xsl:if test="marc:datafie...@tag=010]/marc:subfie...@code='a']"> + <span class="results_summary"><span class="label">ISBN: </span> + <!-- unAPI <abbr/> tag --> + <xsl:for-each select="marc:datafie...@tag=010]"> + <xsl:variable name="isbn" select="marc:subfie...@code='a']"/> + <abbr class="unapi-id" title="koha:isbn:{$isbn}"> + <xsl:value-of select="marc:subfie...@code='a']"/> + </abbr> + <xsl:choose> + <xsl:when test="position()=last()"> + <xsl:text>.</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text> ; </xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </span> + </xsl:if> + + <xsl:if test="marc:datafie...@tag=011]"> + <span class="results_summary"> + <span class="label">ISSN: </span> + <xsl:for-each select="marc:datafie...@tag=011]"> + <xsl:value-of select="marc:subfie...@code='a']"/> + <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose> + </xsl:for-each> + </span> + </xsl:if> + + <xsl:if test="marc:datafie...@tag=676]"> + <span class="results_summary"> + <span class="label">Dewey: </span> + <xsl:for-each select="marc:datafie...@tag=676]"> + <xsl:value-of select="marc:subfie...@code='a']"/> + <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose> + </xsl:for-each> + </span> + </xsl:if> + + <xsl:if test="marc:datafie...@tag=330]"> + <span class="results_summary"> + <span class="label">Résumé: </span> + <xsl:for-each select="marc:datafie...@tag=330]"> + <xsl:value-of select="marc:subfie...@code='a']"/> + <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose> + </xsl:for-each> + </span> + </xsl:if> + + <xsl:if test="marc:datafie...@tag=317]"> + <span class="results_summary"> + <span class="label">Note sur la provenance: </span> + <xsl:for-each select="marc:datafie...@tag=317]"> + <xsl:value-of select="marc:subfie...@code='a']"/> + </xsl:for-each> + </span> + </xsl:if> + + <xsl:if test="marc:datafie...@tag=320]"> + <span class="results_summary"> + <span class="label">Bibliographie: </span> + <xsl:for-each select="marc:datafie...@tag=320]"> + <xsl:value-of select="marc:subfie...@code='a']"/> + <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose> + </xsl:for-each> + </span> + </xsl:if> + + <xsl:if test="marc:datafie...@tag=328]"> + <span class="results_summary"> + <span class="label">Thèse: </span> + <xsl:for-each select="marc:datafie...@tag=328]"> + <xsl:value-of select="marc:subfie...@code='a']"/> + <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose> + </xsl:for-each> + </span> + </xsl:if> + + <xsl:if test="marc:datafie...@tag=333]"> + <span class="results_summary"> + <span class="label">Public: </span> + <xsl:for-each select="marc:datafie...@tag=333]"> + <xsl:value-of select="marc:subfie...@code='a']"/> + <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose> + </xsl:for-each> + </span> + </xsl:if> + + <xsl:if test="marc:datafie...@tag=600 or @tag=606]"> + <span class="results_summary"><span class="label">Sujets: </span> + <xsl:for-each select="marc:datafie...@tag=606]"> + <a> + <xsl:choose> + <xsl:when test="marc:subfie...@code=9]"> + <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=an:<xsl:value-of select="marc:subfie...@code=9]"/></xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=su:<xsl:value-of select="marc:subfie...@code='a']"/></xsl:attribute> + </xsl:otherwise> + </xsl:choose> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">abcdjpvxyz</xsl:with-param> + <xsl:with-param name="subdivCodes">jpxyz</xsl:with-param> + <xsl:with-param name="subdivDelimiter">-- </xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </a> + <xsl:choose> + <xsl:when test="position()=last()"></xsl:when> + <xsl:otherwise> | </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </span> + </xsl:if> + + <xsl:if test="marc:datafie...@tag=856]"> + <span class="results_summary"> + <span class="label">Online Resources: </span> + <xsl:for-each select="marc:datafie...@tag=856]"> + <a> + <xsl:attribute name="href"> + <xsl:value-of select="marc:subfie...@code='u']"/> + </xsl:attribute> + <xsl:choose> + <xsl:when test="marc:subfie...@code='y' or @code='3' or @code='z']"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">y3z</xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:when test="not(marc:subfie...@code='y']) and not(marc:subfie...@code='3']) and not(marc:subfie...@code='z'])"> + Click here to access online + </xsl:when> + </xsl:choose> + </a> + <xsl:choose> + <xsl:when test="position()=last()"></xsl:when> + <xsl:otherwise> | </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </span> + </xsl:if> + + <!-- 780 --> + <xsl:if test="marc:datafie...@tag=780]"> + <xsl:for-each select="marc:datafie...@tag=780]"> + <span class="results_summary"><span class="label"> + <xsl:choose> + <xsl:when test="@ind2=0"> + Continues: + </xsl:when> + <xsl:when test="@ind2=1"> + Continues in part: + </xsl:when> + <xsl:when test="@ind2=2"> + Supersedes: + </xsl:when> + <xsl:when test="@ind2=3"> + Supersedes in part: + </xsl:when> + <xsl:when test="@ind2=4"> + Formed by the union: ... and: ... + </xsl:when> + <xsl:when test="@ind2=5"> + Absorbed: + </xsl:when> + <xsl:when test="@ind2=6"> + Absorbed in part: + </xsl:when> + <xsl:when test="@ind2=7"> + Separated from: + </xsl:when> + </xsl:choose> + </span> + <xsl:variable name="f780"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">at</xsl:with-param> + </xsl:call-template> + </xsl:variable> + <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=<xsl:value-of select="translate($f780, '()', '')"/></xsl:attribute> + <xsl:value-of select="translate($f780, '()', '')"/> + </a> + </span> + + <xsl:choose> + <xsl:when test="@ind1=0"> + <span class="results_summary"><xsl:value-of select="marc:subfie...@code='n']"/></span> + </xsl:when> + </xsl:choose> + + </xsl:for-each> + </xsl:if> + + <!-- 785 --> + <xsl:if test="marc:datafie...@tag=785]"> + <xsl:for-each select="marc:datafie...@tag=785]"> + <span class="results_summary"><span class="label"> + <xsl:choose> + <xsl:when test="@ind2=0"> + Continued by: + </xsl:when> + <xsl:when test="@ind2=1"> + Continued in part by: + </xsl:when> + <xsl:when test="@ind2=2"> + Superseded by: + </xsl:when> + <xsl:when test="@ind2=3"> + Superseded in part by: + </xsl:when> + <xsl:when test="@ind2=4"> + Absorbed by: + </xsl:when> + <xsl:when test="@ind2=5"> + Absorbed in part by: + </xsl:when> + <xsl:when test="@ind2=6"> + Split into .. and ...: + </xsl:when> + <xsl:when test="@ind2=7"> + Merged with ... to form ... + </xsl:when> + <xsl:when test="@ind2=8"> + Changed back to: + </xsl:when> + + </xsl:choose> + </span> + <xsl:variable name="f785"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">at</xsl:with-param> + </xsl:call-template> + </xsl:variable> + + <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=<xsl:value-of select="translate($f785, '()', '')"/></xsl:attribute> + <xsl:value-of select="translate($f785, '()', '')"/> + </a> + + </span> + </xsl:for-each> + </xsl:if> + + </xsl:template> + + <xsl:template name="nameABCDQ"> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">aq</xsl:with-param> + </xsl:call-template> + </xsl:with-param> + <xsl:with-param name="punctuation"> + <xsl:text>:,;/ </xsl:text> + </xsl:with-param> + </xsl:call-template> + <xsl:call-template name="termsOfAddress"/> + </xsl:template> + + <xsl:template name="nameABCDN"> + <xsl:for-each select="marc:subfie...@code='a']"> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString" select="."/> + </xsl:call-template> + </xsl:for-each> + <xsl:for-each select="marc:subfie...@code='b']"> + <xsl:value-of select="."/> + </xsl:for-each> + <xsl:if test="marc:subfie...@code='c'] or marc:subfie...@code='d'] or marc:subfie...@code='n']"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">cdn</xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="nameACDEQ"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">acdeq</xsl:with-param> + </xsl:call-template> + </xsl:template> + <xsl:template name="termsOfAddress"> + <xsl:if test="marc:subfie...@code='b' or @code='c']"> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">bc</xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="part"> + <xsl:variable name="partNumber"> + <xsl:call-template name="specialSubfieldSelect"> + <xsl:with-param name="axis">n</xsl:with-param> + <xsl:with-param name="anyCodes">n</xsl:with-param> + <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="partName"> + <xsl:call-template name="specialSubfieldSelect"> + <xsl:with-param name="axis">p</xsl:with-param> + <xsl:with-param name="anyCodes">p</xsl:with-param> + <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param> + </xsl:call-template> + </xsl:variable> + <xsl:if test="string-length(normalize-space($partNumber))"> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString" select="$partNumber"/> + </xsl:call-template> + </xsl:if> + <xsl:if test="string-length(normalize-space($partName))"> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString" select="$partName"/> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="specialSubfieldSelect"> + <xsl:param name="anyCodes"/> + <xsl:param name="axis"/> + <xsl:param name="beforeCodes"/> + <xsl:param name="afterCodes"/> + <xsl:variable name="str"> + <xsl:for-each select="marc:subfield"> + <xsl:if test="contains($anyCodes, @code) or (contains($beforeCodes,@code) and following-sibling::marc:subfie...@code=$axis]) or (contains($afterCodes,@code) and preceding-sibling::marc:subfie...@code=$axis])"> + <xsl:value-of select="text()"/> + <xsl:text> </xsl:text> + </xsl:if> + </xsl:for-each> + </xsl:variable> + <xsl:value-of select="substring($str,1,string-length($str)-1)"/> + </xsl:template> +</xsl:stylesheet> diff --git a/koha-tmpl/opac-tmpl/prog/en/xslt/UNIMARCslim2OPACResults.xsl b/koha-tmpl/opac-tmpl/prog/en/xslt/UNIMARCslim2OPACResults.xsl new file mode 100644 index 0000000..ea104f6 --- /dev/null +++ b/koha-tmpl/opac-tmpl/prog/en/xslt/UNIMARCslim2OPACResults.xsl @@ -0,0 +1,182 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- $Id: MARC21slim2DC.xsl,v 1.1 2003/01/06 08:20:27 adam Exp $ --> +<xsl:stylesheet version="1.0" + xmlns:marc="http://www.loc.gov/MARC21/slim" + xmlns:items="http://www.koha.org/items" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + exclude-result-prefixes="marc items"> + +<xsl:import href="UNIMARCslimUtils.xsl"/> +<xsl:output method = "xml" indent="yes" omit-xml-declaration = "yes" /> +<xsl:key name="item-by-status" match="items:item" use="items:status"/> +<xsl:key name="item-by-status-and-branch" match="items:item" use="concat(items:status, ' ', items:homebranch)"/> + +<xsl:template match="/"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="marc:record"> + <xsl:variable name="leader" select="marc:leader"/> + <xsl:variable name="leader6" select="substring($leader,7,1)"/> + <xsl:variable name="leader7" select="substring($leader,8,1)"/> + <xsl:variable name="biblionumber" select="marc:datafie...@tag=090]/marc:subfie...@code='a']"/> + <xsl:variable name="isbn" select="marc:datafie...@tag=010]/marc:subfie...@code='a']"/> + + <xsl:if test="marc:datafie...@tag=200]"> + <xsl:for-each select="marc:datafie...@tag=200]"> + <a><xsl:attribute name="href">/cgi-bin/koha/opac-detail.pl?biblionumber=<xsl:value-of select="$biblionumber"/></xsl:attribute> + <xsl:value-of select="marc:subfie...@code='a']"/> + </a> + <xsl:if test="marc:subfie...@code='e']"> + <xsl:text> : </xsl:text> + <xsl:value-of select="marc:subfie...@code='e']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='b']"> + <xsl:text> [</xsl:text> + <xsl:value-of select="marc:subfie...@code='b']"/> + <xsl:text>]</xsl:text> + </xsl:if> + <xsl:if test="marc:subfie...@code='f']"> + <xsl:text> / </xsl:text> + <xsl:value-of select="marc:subfie...@code='f']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='g']"> + <xsl:text> ; </xsl:text> + <xsl:value-of select="marc:subfie...@code='g']"/> + </xsl:if> + </xsl:for-each> + </xsl:if> + + <xsl:call-template name="tag_4xx" /> + + <xsl:call-template name="tag_210" /> + + <xsl:call-template name="tag_215" /> + + <span class="results_summary"> + <span class="label">Disponibilité: </span> + <xsl:choose> + <xsl:when test="marc:datafie...@tag=856]"> + <xsl:for-each select="marc:datafie...@tag=856]"> + <xsl:choose> + <xsl:when test="@ind2=0"> + <a> + <xsl:attribute name="href"> + <xsl:value-of select="marc:subfie...@code='u']"/> + </xsl:attribute> + <xsl:choose> + <xsl:when test="marc:subfie...@code='y' or @code='3' or @code='z']"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">y3z</xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:when test="not(marc:subfie...@code='y']) and not(marc:subfie...@code='3']) and not(marc:subfie...@code='z'])"> + Click here to access online + </xsl:when> + </xsl:choose> + </a> + <xsl:choose> + <xsl:when test="position()=last()"></xsl:when> + <xsl:otherwise> | </xsl:otherwise> + </xsl:choose> + </xsl:when> + </xsl:choose> + </xsl:for-each> + </xsl:when> + <xsl:when test="count(key('item-by-status', 'available'))=0 and count(key('item-by-status', 'reference'))=0"> + Pas de copie disponible + </xsl:when> + <xsl:when test="count(key('item-by-status', 'available'))>0"> + <span class="available"> + <b><xsl:text>pour le prêt: </xsl:text></b> + <xsl:variable name="available_items" select="key('item-by-status', 'available')"/> + <xsl:for-each select="$available_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]"> + <xsl:value-of select="items:homebranch"/> + <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber">[<xsl:value-of select="items:itemcallnumber"/>] + </xsl:if> + <xsl:text> (</xsl:text> + <xsl:value-of select="count(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch)))"/> + <xsl:text>)</xsl:text> + <xsl:choose> + <xsl:when test="position()=last()"> + <xsl:text>. </xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>, </xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </span> + </xsl:when> + </xsl:choose> + <xsl:choose> + <xsl:when test="count(key('item-by-status', 'reference'))>0"> + <span class="available"> + <b><xsl:text>Copies available for reference: </xsl:text></b> + <xsl:variable name="reference_items" + select="key('item-by-status', 'reference')"/> + <xsl:for-each select="$reference_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]"> + <xsl:value-of select="items:homebranch"/> + <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber">[<xsl:value-of select="items:itemcallnumber"/>]</xsl:if> + <xsl:text> (</xsl:text> + <xsl:value-of select="count(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch)))"/> + <xsl:text>)</xsl:text> + <xsl:choose> + <xsl:when test="position()=last()"> + <xsl:text>. </xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>, </xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </span> + </xsl:when> + </xsl:choose> + <xsl:if test="count(key('item-by-status', 'Checked out'))>0"> + <span class="unavailable"> + <xsl:text>Checked out (</xsl:text> + <xsl:value-of select="count(key('item-by-status', 'Checked out'))"/> + <xsl:text>). </xsl:text> + </span> + </xsl:if> + <xsl:if test="count(key('item-by-status', 'Withdrawn'))>0"> + <span class="unavailable"> + <xsl:text>Withdrawn (</xsl:text> + <xsl:value-of select="count(key('item-by-status', 'Withdrawn'))"/> + <xsl:text>). </xsl:text> + </span> + </xsl:if> + <xsl:if test="count(key('item-by-status', 'Lost'))>0"> + <span class="unavailable"> + <xsl:text>Lost (</xsl:text> + <xsl:value-of select="count(key('item-by-status', 'Lost'))"/> + <xsl:text>). </xsl:text> + </span> + </xsl:if> + <xsl:if test="count(key('item-by-status', 'Damaged'))>0"> + <span class="unavailable"> + <xsl:text>Damaged (</xsl:text> + <xsl:value-of select="count(key('item-by-status', 'Damaged'))"/> + <xsl:text>). </xsl:text> + </span> + </xsl:if> + <xsl:if test="count(key('item-by-status', 'On Orangemanr'))>0"> + <span class="unavailable"> + <xsl:text>On order (</xsl:text> + <xsl:value-of select="count(key('item-by-status', 'On order'))"/> + <xsl:text>). </xsl:text> + </span> + </xsl:if> + <xsl:if test="count(key('item-by-status', 'In transit'))>0"> + <span class="unavailable"> + <xsl:text>In transit (</xsl:text> + <xsl:value-of select="count(key('item-by-status', 'In transit'))"/> + <xsl:text>). </xsl:text> + </span> + </xsl:if> + </span> + +</xsl:template> + +</xsl:stylesheet> diff --git a/koha-tmpl/opac-tmpl/prog/en/xslt/UNIMARCslimUtils.xsl b/koha-tmpl/opac-tmpl/prog/en/xslt/UNIMARCslimUtils.xsl new file mode 100644 index 0000000..296b21c --- /dev/null +++ b/koha-tmpl/opac-tmpl/prog/en/xslt/UNIMARCslimUtils.xsl @@ -0,0 +1,139 @@ +<?xml version='1.0'?> +<xsl:stylesheet version="1.0" xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + + <xsl:template name="datafield"> + <xsl:param name="tag"/> + <xsl:param name="ind1"><xsl:text> </xsl:text></xsl:param> + <xsl:param name="ind2"><xsl:text> </xsl:text></xsl:param> + <xsl:param name="subfields"/> + <xsl:element name="datafield"> + <xsl:attribute name="tag"> + <xsl:value-of select="$tag"/> + </xsl:attribute> + <xsl:attribute name="ind1"> + <xsl:value-of select="$ind1"/> + </xsl:attribute> + <xsl:attribute name="ind2"> + <xsl:value-of select="$ind2"/> + </xsl:attribute> + <xsl:copy-of select="$subfields"/> + </xsl:element> + </xsl:template> + + <xsl:template name="tag_210"> + <xsl:for-each select="marc:datafie...@tag=210]"> + <span class="results_summary"> + <span class="label">Édition: </span> + <xsl:value-of select="marc:subfie...@code='a']"/> + <xsl:if test="marc:subfie...@code='c']"> + <xsl:if test="marc:subfie...@code='a']"> : </xsl:if> + <xsl:value-of select="marc:subfie...@code='c']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='d']"> + <xsl:if test="marc:subfie...@code='a' or @code='c']">, </xsl:if> + <xsl:value-of select="marc:subfie...@code='d']"/> + </xsl:if> + <xsl:value-of select="marc:subfie...@code='e']"/> + <xsl:if test="marc:subfie...@code='g']"> + <xsl:if test="marc:subfie...@code='e']"> : </xsl:if> + <xsl:value-of select="marc:subfie...@code='g']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='h']"> + <xsl:if test="marc:subfie...@code='e' or @code='g']">, </xsl:if> + <xsl:value-of select="marc:subfie...@code='h']"/> + </xsl:if> + </span> + </xsl:for-each> + </xsl:template> + + <xsl:template name="tag_215"> + <xsl:for-each select="marc:datafie...@tag=215]"> + <span class="results_summary"> + <span class="label">Description: </span> + <xsl:if test="marc:subfie...@code='a']"> + <xsl:value-of select="marc:subfie...@code='a']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='c']"> : + <xsl:value-of select="marc:subfie...@code='c']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='d']"> ; + <xsl:value-of select="marc:subfie...@code='d']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='e']"> + + <xsl:value-of select="marc:subfie...@code='e']"/> + </xsl:if> + </span> + </xsl:for-each> + </xsl:template> + + + <xsl:template name="tag_4xx"> + <xsl:for-each select="marc:datafie...@tag=464 or @tag=461]"> + <span class="results_summary"> + <span class="label">Extrait de: </span> + <xsl:if test="marc:subfie...@code='t']"> + <xsl:value-of select="marc:subfie...@code='t']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='e']"> : + <xsl:value-of select="marc:subfie...@code='e']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='f']"> / + <xsl:value-of select="marc:subfie...@code='f']"/> + </xsl:if> + <xsl:if test="marc:subfie...@code='v']">, + <xsl:value-of select="marc:subfie...@code='v']"/> + </xsl:if> + </span> + </xsl:for-each> + </xsl:template> + + <xsl:template name="subfieldSelect"> + <xsl:param name="codes"/> + <xsl:param name="delimeter"><xsl:text> </xsl:text></xsl:param> + <xsl:param name="subdivCodes"/> + <xsl:param name="subdivDelimiter"/> + <xsl:variable name="str"> + <xsl:for-each select="marc:subfield"> + <xsl:if test="contains($codes, @code)"> + <xsl:if test="contains($subdivCodes, @code)"> + <xsl:value-of select="$subdivDelimiter"/> + </xsl:if> + <xsl:value-of select="text()"/><xsl:value-of select="$delimeter"/> + </xsl:if> + </xsl:for-each> + </xsl:variable> + <xsl:value-of select="substring($str,1,string-length($str)-string-length($delimeter))"/> + </xsl:template> + + <xsl:template name="buildSpaces"> + <xsl:param name="spaces"/> + <xsl:param name="char"><xsl:text> </xsl:text></xsl:param> + <xsl:if test="$spaces>0"> + <xsl:value-of select="$char"/> + <xsl:call-template name="buildSpaces"> + <xsl:with-param name="spaces" select="$spaces - 1"/> + <xsl:with-param name="char" select="$char"/> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="chopPunctuation"> + <xsl:param name="chopString"/> + <xsl:variable name="length" select="string-length($chopString)"/> + <xsl:choose> + <xsl:when test="$length=0"/> + <xsl:when test="contains('.:,;/ ', substring($chopString,$length,1))"> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="not($chopString)"/> + <xsl:otherwise><xsl:value-of select="$chopString"/></xsl:otherwise> + </xsl:choose> +<xsl:text> </xsl:text> + </xsl:template> +</xsl:stylesheet><!-- Stylus Studio meta-information - (c)1998-2002 eXcelon Corp. +<metaInformation> +<scenarios/><MapperInfo srcSchemaPath="" srcSchemaRoot="" srcSchemaPathIsRelative="yes" srcSchemaInterpretAsXML="no" destSchemaPath="" destSchemaRoot="" destSchemaPathIsRelative="yes" destSchemaInterpretAsXML="no"/> +</metaInformation> +--> -- 1.5.6.5 _______________________________________________ Koha-patches mailing list Koha-patches@lists.koha.org http://lists.koha.org/mailman/listinfo/koha-patches