Bug 11310: update the XSLT for the Bootstrap theme
authorGalen Charlton <gmc@esilibrary.com>
Mon, 6 Jan 2014 16:54:19 +0000 (16:54 +0000)
committerGalen Charlton <gmc@esilibrary.com>
Tue, 18 Feb 2014 20:36:42 +0000 (20:36 +0000)
When the Bootstrap theme was started, the XSLT directory
was copied over from the prog theme.  However, it was not
kept up to date with respect to changes to prog's XSLT.

This patch rectifies the problem by copying over the
current state of prog/en/xslt to bootstrap/en/xslt.  As
a consequence, the following bugs or enhancements should
now be reflected in the Bootstrap theme:

* 6886
* 10905
* 10465
* 10564
* 10793
* 10218
* 6594
* 9820
* 10745
* 6553
* 10218
* 10284

To test:

[1] Apply the patch and ensure that OPACXSLTDetailsDisplay
    and OPACXSLTResultsDisplay are set to 'default' and that
    OPAC theme is set to 'bootstrap'.
[2] Ensure that OPAC results and bib details look OK.
[3] To be really thorough, run through the test plans for the
    other bugs referenced by this patch.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>
Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl
koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl
koha-tmpl/opac-tmpl/bootstrap/en/xslt/NORMARCslim2OPACDetail.xsl
koha-tmpl/opac-tmpl/bootstrap/en/xslt/NORMARCslim2OPACResults.xsl
koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACDetail.xsl
koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACResults.xsl
koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslimUtils.xsl

index 11c72be..1b6ea2c 100644 (file)
@@ -8,6 +8,7 @@
   exclude-result-prefixes="marc items">
     <xsl:import href="MARC21slimUtils.xsl"/>
     <xsl:output method = "html" indent="yes" omit-xml-declaration = "yes" encoding="UTF-8"/>
+
     <xsl:template match="/">
             <xsl:apply-templates/>
     </xsl:template>
             </xsl:choose>
         </xsl:variable>
 
+        <!-- Schema.org type -->
+        <xsl:variable name="schemaOrgType">
+            <xsl:choose>
+                <xsl:when test="$materialTypeLabel='Book'">Book</xsl:when>
+                <xsl:when test="$materialTypeLabel='Map'">Map</xsl:when>
+                <xsl:when test="$materialTypeLabel='Music'">MusicAlbum</xsl:when>
+                <xsl:otherwise>CreativeWork</xsl:otherwise>
+            </xsl:choose>
+        </xsl:variable>
+
+        <!-- Wrapper div for our schema.org object -->
+        <xsl:element name="div">
+            <xsl:attribute name="class">record</xsl:attribute>
+            <xsl:attribute name="vocab">http://schema.org/</xsl:attribute>
+            <xsl:attribute name="typeof"><xsl:value-of select='$schemaOrgType' /> Product</xsl:attribute>
+            <xsl:attribute name="resource">#record</xsl:attribute>
+
         <!-- Title Statement -->
         <!-- Alternate Graphic Representation (MARC 880) -->
         <xsl:if test="$display880">
-            <h1 class="title">
+            <h1 class="title" property="alternativeHeadline">
                 <xsl:call-template name="m880Select">
                     <xsl:with-param name="basetags">245</xsl:with-param>
                     <xsl:with-param name="codes">abhfgknps</xsl:with-param>
         </xsl:if>
 
         <xsl:if test="marc:datafield[@tag=245]">
-        <h1 class="title">
+        <h1 class="title" property="name">
             <xsl:for-each select="marc:datafield[@tag=245]">
                     <xsl:call-template name="subfieldSelect">
                         <xsl:with-param name="codes">a</xsl:with-param>
         </xsl:if>
         <xsl:choose>
             <xsl:when test="marc:datafield[@tag=100] or marc:datafield[@tag=110] or marc:datafield[@tag=111] or marc:datafield[@tag=700] or marc:datafield[@tag=710] or marc:datafield[@tag=711]">
-                <h5 class="author">by
+                <h5 class="author" property="author">by
                     <xsl:call-template name="showAuthor">
                         <xsl:with-param name="authorfield" select="marc:datafield[@tag=100 or @tag=110 or @tag=111 or @tag=700 or @tag=710 or @tag=711]"/>
                         <xsl:with-param name="UseAuthoritiesForTracings" select="$UseAuthoritiesForTracings"/>
         <xsl:if test="marc:datafield[@tag=260]">
         <span class="results_summary publisher"><span class="label">Publisher: </span>
             <xsl:for-each select="marc:datafield[@tag=260]">
+                <span property="publisher" typeof="Organization">
                 <xsl:if test="marc:subfield[@code='a']">
+                    <span property="location">
                     <xsl:call-template name="subfieldSelect">
                         <xsl:with-param name="codes">a</xsl:with-param>
                     </xsl:call-template>
+                    </span>
                 </xsl:if>
                 <xsl:text> </xsl:text>
                 <xsl:if test="marc:subfield[@code='b']">
-                <a href="/cgi-bin/koha/opac-search.pl?q=pb:{marc:subfield[@code='b']}">
+                <span property="name"><a href="/cgi-bin/koha/opac-search.pl?q=pb:{marc:subfield[@code='b']}">
                     <xsl:call-template name="subfieldSelect">
                         <xsl:with-param name="codes">b</xsl:with-param>
                     </xsl:call-template>
-               </a>
-               </xsl:if>
-               <xsl:text> </xsl:text>
-                <xsl:call-template name="chopPunctuation">
-                  <xsl:with-param name="chopString">
-                    <xsl:call-template name="subfieldSelect">
-                        <xsl:with-param name="codes">cg</xsl:with-param>
-                    </xsl:call-template>
-                   </xsl:with-param>
-               </xsl:call-template>
-                    <xsl:choose><xsl:when test="position()=last()"><xsl:text></xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
+                </a></span>
+                </xsl:if>
+                </span>
+                <xsl:text> </xsl:text>
+                <xsl:if test="marc:subfield[@code='c' or @code='g']">
+                <span property="datePublished">
+                    <xsl:call-template name="chopPunctuation">
+                      <xsl:with-param name="chopString">
+                        <xsl:call-template name="subfieldSelect">
+                            <xsl:with-param name="codes">cg</xsl:with-param>
+                        </xsl:call-template>
+                       </xsl:with-param>
+                   </xsl:call-template>
+                </span>
+                </xsl:if>
+                <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:datafield[@tag=250]">
         <span class="results_summary edition"><span class="label">Edition: </span>
             <xsl:for-each select="marc:datafield[@tag=250]">
+                <span property="bookEdition">
                 <xsl:call-template name="chopPunctuation">
                   <xsl:with-param name="chopString">
                     <xsl:call-template name="subfieldSelect">
                     </xsl:call-template>
                    </xsl:with-param>
                </xsl:call-template>
+                </span>
                     <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 test="marc:datafield[@tag=300]">
         <span class="results_summary description"><span class="label">Description: </span>
             <xsl:for-each select="marc:datafield[@tag=300]">
+                <span property="description">
                 <xsl:call-template name="chopPunctuation">
                   <xsl:with-param name="chopString">
                     <xsl:call-template name="subfieldSelect">
                     </xsl:call-template>
                    </xsl:with-param>
                </xsl:call-template>
+                </span>
                     <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 test="marc:datafield[@tag=020]">
         <span class="results_summary isbn"><span class="label">ISBN: </span>
         <xsl:for-each select="marc:datafield[@tag=020]">
+        <span property="isbn">
         <xsl:variable name="isbn" select="marc:subfield[@code='a']"/>
                 <xsl:value-of select="marc:subfield[@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>
+        </span>
         </xsl:for-each>
         </span>
         </xsl:if>
         <xsl:if test="marc:datafield[@tag=246]">
         <span class="results_summary other_title"><span class="label">Other title: </span>
             <xsl:for-each select="marc:datafield[@tag=246]">
+                <span property="alternativeHeadline">
                 <xsl:call-template name="chopPunctuation">
                   <xsl:with-param name="chopString">
                     <xsl:call-template name="subfieldSelect">
                     </xsl:call-template>
                    </xsl:with-param>
                </xsl:call-template>
+                </span>
                     <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 test="marc:datafield[@tag=242]">
         <span class="results_summary translated_title"><span class="label">Title translated: </span>
             <xsl:for-each select="marc:datafield[@tag=242]">
+                <span property="alternativeHeadline">
                 <xsl:call-template name="chopPunctuation">
                   <xsl:with-param name="chopString">
                     <xsl:call-template name="subfieldSelect">
                     </xsl:call-template>
                    </xsl:with-param>
                </xsl:call-template>
+                </span>
                     <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>
 
         <!-- Uniform Title  Statement: Alternate Graphic Representation (MARC 880) -->
         <xsl:if test="$display880">
+            <span property="alternativeHeadline">
             <xsl:call-template name="m880Select">
                 <xsl:with-param name="basetags">130,240</xsl:with-param>
                 <xsl:with-param name="codes">adfklmor</xsl:with-param>
                 <xsl:with-param name="class">results_summary uniform_title</xsl:with-param>
                 <xsl:with-param name="label">Uniform titles: </xsl:with-param>
             </xsl:call-template>
+            </span>
         </xsl:if>
 
         <xsl:if test="marc:datafield[@tag=130]|marc:datafield[@tag=240]|marc:datafield[@tag=730][@ind2!=2]">
         <span class="results_summary uniform_titles"><span class="label">Uniform titles: </span>
         <xsl:for-each select="marc:datafield[@tag=130]|marc:datafield[@tag=240]|marc:datafield[@tag=730][@ind2!=2]">
+            <span property="alternativeHeadline">
             <xsl:variable name="str">
                 <xsl:for-each select="marc:subfield">
                     <xsl:if test="(contains('adfklmor',@code) and (not(../marc:subfield[@code='n' or @code='p']) or (following-sibling::marc:subfield[@code='n' or @code='p'])))">
 
                 </xsl:with-param>
             </xsl:call-template>
+            </span>
             <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 test="marc:datafield[substring(@tag, 1, 1) = '6']">
             <span class="results_summary subjects"><span class="label">Subject(s): </span>
             <xsl:for-each select="marc:datafield[substring(@tag, 1, 1) = '6']">
+            <span property="keywords">
             <a>
             <xsl:choose>
             <xsl:when test="marc:subfield[@code=9] and $UseAuthoritiesForTracings='1'">
                 </xsl:with-param>
             </xsl:call-template>
             </a>
+            </span>
             <xsl:if test="marc:subfield[@code=9]">
                 <a class='authlink'>
                     <xsl:attribute name="href">/cgi-bin/koha/opac-authoritiesdetail.pl?authid=<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
         <span class="results_summary online_resources"><span class="label">Online resources: </span>
         <xsl:for-each select="marc:datafield[@tag=856]">
             <xsl:variable name="SubqText"><xsl:value-of select="marc:subfield[@code='q']"/></xsl:variable>
-           <a>
+           <a property="url">
            <xsl:choose>
              <xsl:when test="$OPACTrackClicks='track'">
                <xsl:attribute name="href">/cgi-bin/koha/tracklinks.pl?uri=<xsl:value-of select="marc:subfield[@code='u']"/>;biblionumber=<xsl:value-of select="$biblionumber"/></xsl:attribute>
             </xsl:otherwise>
             </xsl:choose>
         </xsl:if>
-        <div class='contentblock'>
+        <div class='contentblock' property='description'>
         <xsl:choose>
         <xsl:when test="@ind2=0">
             <xsl:call-template name="subfieldSelectSpan">
             <span class="label">Separated from:</span>
         </xsl:when>
         </xsl:choose>
+        <xsl:text> </xsl:text>
                 <xsl:variable name="f780">
                     <xsl:call-template name="subfieldSelect">
                         <xsl:with-param name="codes">a_t</xsl:with-param>
                     </a>
                 </xsl:when>
                 <xsl:otherwise>
-                    <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=<xsl:value-of select="translate($f780, '()', '')"/></xsl:attribute>
+                    <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=ti,phr:<xsl:value-of select="translate($f780, '()', '')"/></xsl:attribute>
                         <xsl:value-of select="translate($f780, '()', '')"/>
                     </a>
                 </xsl:otherwise>
         <xsl:when test="@ind2=8">
             <span class="label">Changed back to:</span>
         </xsl:when>
-
         </xsl:choose>
+        <xsl:text> </xsl:text>
                    <xsl:variable name="f785">
                     <xsl:call-template name="subfieldSelect">
                         <xsl:with-param name="codes">a_t</xsl:with-param>
                     </a>
                 </xsl:when>
                 <xsl:otherwise>
-                    <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=<xsl:value-of select="translate($f785, '()', '')"/></xsl:attribute>
+                    <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=ti,phr:<xsl:value-of select="translate($f785, '()', '')"/></xsl:attribute>
                         <xsl:value-of select="translate($f785, '()', '')"/>
                     </a>
                 </xsl:otherwise>
         </xsl:for-each>
         </xsl:if>
 
+    </xsl:element>
     </xsl:template>
 
     <xsl:template name="showAuthor">
             <a>
                 <xsl:choose>
                     <xsl:when test="marc:subfield[@code=9] and $UseAuthoritiesForTracings='1'">
-                        <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=an:<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
+                        <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=an:"<xsl:value-of select="marc:subfield[@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:subfield[@code='a']"/></xsl:attribute>
+                        <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=au:"<xsl:value-of select="marc:subfield[@code='a']"/>"</xsl:attribute>
                     </xsl:otherwise>
                 </xsl:choose>
                 <xsl:choose>
-                    <xsl:when test="@tag=100 or @tag=700"><xsl:call-template name="nameABCDQ"/></xsl:when>
+                    <xsl:when test="@tag=100 or @tag=700"><xsl:call-template name="nameABCQ"/></xsl:when>
                     <xsl:when test="@tag=110 or @tag=710"><xsl:call-template name="nameABCDN"/></xsl:when>
                     <xsl:when test="@tag=111 or @tag=711"><xsl:call-template name="nameACDEQ"/></xsl:when>
                 </xsl:choose>
         <xsl:text>.</xsl:text>
     </xsl:template>
 
-    <xsl:template name="nameABCDQ">
+    <xsl:template name="nameABCQ">
             <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:with-param name="codes">abcq</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:with-param name="codes">acdeq</xsl:with-param>
             </xsl:call-template>
     </xsl:template>
-    <xsl:template name="termsOfAddress">
-        <xsl:if test="marc:subfield[@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">
index 4890682..a4981c6 100644 (file)
         <xsl:for-each select="marc:datafield[(@tag=100 or @tag=700) and @ind1!='z']">
             <xsl:choose>
             <xsl:when test="position()=last()">
-                <xsl:call-template name="nameABCDQ"/>.
+                <xsl:call-template name="nameABCQ"/>.
             </xsl:when>
             <xsl:otherwise>
-                <xsl:call-template name="nameABCDQ"/>;
+                <xsl:call-template name="nameABCQ"/>;
             </xsl:otherwise>
             </xsl:choose>
         </xsl:for-each>
     </p>
 
     <xsl:if test="marc:datafield[@tag=250]">
-       <span class="results_summary">
+    <span class="results_summary edition">
     <span class="label">Edition: </span>
             <xsl:for-each select="marc:datafield[@tag=250]">
                     <xsl:call-template name="subfieldSelect">
     <xsl:if test="marc:datafield[@tag=773]">
         <xsl:for-each select="marc:datafield[@tag=773]">
             <xsl:if test="marc:subfield[@code='t']">
-    <span class="results_summary">
+    <span class="results_summary source">
     <span class="label">Source: </span>
             <xsl:value-of select="marc:subfield[@code='t']"/>
     </span>
     </xsl:if>
 
 <xsl:if test="$DisplayOPACiconsXSLT!='0'">
-    <span class="results_summary">
+    <span class="results_summary type">
     <xsl:if test="$typeOf008!=''">
         <span class="label">Type: </span>
             <xsl:choose>
       <xsl:call-template name="m880Select">
         <xsl:with-param name="basetags">260</xsl:with-param>
         <xsl:with-param name="codes">abcg</xsl:with-param>
-        <xsl:with-param name="class">results_summary</xsl:with-param>
+        <xsl:with-param name="class">results_summary publisher</xsl:with-param>
         <xsl:with-param name="label">Publisher: </xsl:with-param>
       </xsl:call-template>
     </xsl:if>
        <xsl:call-template name="m880Select">
          <xsl:with-param name="basetags">246</xsl:with-param>
          <xsl:with-param name="codes">ab</xsl:with-param>
-         <xsl:with-param name="class">results_summary</xsl:with-param>
-         <xsl:with-param name="label">Other Title: </xsl:with-param>
+         <xsl:with-param name="class">results_summary other_title</xsl:with-param>
+         <xsl:with-param name="label">Other title: </xsl:with-param>
        </xsl:call-template>
     </xsl:if>
 
     <xsl:if test="marc:datafield[@tag=246]">
-       <span class="results_summary">
+    <span class="results_summary other_title">
     <span class="label">Other title: </span>
             <xsl:for-each select="marc:datafield[@tag=246]">
                     <xsl:call-template name="subfieldSelect">
        </span>
     </xsl:if>
     <xsl:if test="marc:datafield[@tag=242]">
-       <span class="results_summary">
+    <span class="results_summary translated_title">
     <span class="label">Title translated: </span>
             <xsl:for-each select="marc:datafield[@tag=242]">
                     <xsl:call-template name="subfieldSelect">
        </span>
     </xsl:if>
     <xsl:if test="marc:datafield[@tag=856]">
-         <span class="results_summary">
+         <span class="results_summary online_resources">
                           <span class="label">Online Access: </span>
                             <xsl:for-each select="marc:datafield[@tag=856]">
                             <xsl:variable name="SubqText"><xsl:value-of select="marc:subfield[@code='q']"/></xsl:variable>
                </xsl:when>
                <xsl:otherwise>
                    <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:value-of select="items:homebranch"/>
                    <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber and $OPACItemLocation='callnum'"> [<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)))"/>
                         <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:if test="$singleBranchMode=0">
                                 <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:if>
+                            <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:template>
 
-    <xsl:template name="nameABCDQ">
+    <xsl:template name="nameABCQ">
             <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:with-param name="codes">abcq</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:call-template>
     </xsl:template>
 
-    <xsl:template name="termsOfAddress">
-        <xsl:if test="marc:subfield[@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="nameDate">
         <xsl:for-each select="marc:subfield[@code='d']">
             <xsl:call-template name="chopPunctuation">
index 16ce3e2..591dfb3 100644 (file)
         </span>
                 <xsl:variable name="f773">
                     <xsl:call-template name="chopPunctuation"><xsl:with-param name="chopString"><xsl:call-template name="subfieldSelect">
-                        <xsl:with-param name="codes">at</xsl:with-param>
+                        <xsl:with-param name="codes">a_t</xsl:with-param>
                     </xsl:call-template></xsl:with-param></xsl:call-template>
                 </xsl:variable>
             <xsl:choose>
index 30d6e18..5336af1 100644 (file)
         </span>
                 <xsl:variable name="f773">
                     <xsl:call-template name="chopPunctuation"><xsl:with-param name="chopString"><xsl:call-template name="subfieldSelect">
-                        <xsl:with-param name="codes">at</xsl:with-param>
+                        <xsl:with-param name="codes">a_t</xsl:with-param>
                     </xsl:call-template></xsl:with-param></xsl:call-template>
                 </xsl:variable>
             <xsl:choose>
                        <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="$singleBranchMode=0">
+                               <xsl:value-of select="items:homebranch"/>
+                           </xsl:if>
                                                   <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)))"/>
index e2ef08c..f7d1984 100644 (file)
   <xsl:call-template name="tag_title">
     <xsl:with-param name="tag">454</xsl:with-param>
     <xsl:with-param name="label">Translation of</xsl:with-param>
+    <xsl:with-param name="spanclass">original_title</xsl:with-param>
   </xsl:call-template>
 
   <xsl:call-template name="tag_title">
     <xsl:with-param name="tag">461</xsl:with-param>
     <xsl:with-param name="label">Set Level</xsl:with-param>
+    <xsl:with-param name="spanclass">set_level</xsl:with-param>
   </xsl:call-template>
 
   <xsl:call-template name="tag_title">
     <xsl:with-param name="tag">464</xsl:with-param>
     <xsl:with-param name="label">Piece-Analytic Level</xsl:with-param>
+    <xsl:with-param name="spanclass">piece_analytic_level</xsl:with-param>
   </xsl:call-template>
 
   <xsl:call-template name="tag_7xx">
     <xsl:with-param name="tag">700</xsl:with-param>
     <xsl:with-param name="label">Main Author</xsl:with-param>
+    <xsl:with-param name="spanclass">main_author</xsl:with-param>
   </xsl:call-template>
 
   <xsl:call-template name="tag_7xx">
     <xsl:with-param name="tag">710</xsl:with-param>
     <xsl:with-param name="label">Corporate Author (Main)</xsl:with-param>
+    <xsl:with-param name="spanclass">corporate_main_author</xsl:with-param>
   </xsl:call-template>
 
   <xsl:call-template name="tag_7xx">
     <xsl:with-param name="tag">701</xsl:with-param>
     <xsl:with-param name="label">Coauthor</xsl:with-param>
+    <xsl:with-param name="spanclass">coauthor</xsl:with-param>
   </xsl:call-template>
 
   <xsl:call-template name="tag_7xx">
     <xsl:with-param name="tag">702</xsl:with-param>
     <xsl:with-param name="label">Secondary Author</xsl:with-param>
+    <xsl:with-param name="spanclass">secondary_author</xsl:with-param>
   </xsl:call-template>
 
   <xsl:call-template name="tag_7xx">
     <xsl:with-param name="tag">711</xsl:with-param>
     <xsl:with-param name="label">Corporate Author (Coauthor)</xsl:with-param>
+    <xsl:with-param name="spanclass">corporate_coauthor</xsl:with-param>
   </xsl:call-template>
 
   <xsl:call-template name="tag_7xx">
     <xsl:with-param name="tag">712</xsl:with-param>
     <xsl:with-param name="label">Corporate Author (Secondary)</xsl:with-param>
+    <xsl:with-param name="spanclass">corporate_secondary_author</xsl:with-param>
   </xsl:call-template>
 
   <xsl:call-template name="tag_title">
     <xsl:with-param name="tag">500</xsl:with-param>
     <xsl:with-param name="label">Uniform Title</xsl:with-param>
+    <xsl:with-param name="spanclass">uniform_title</xsl:with-param>
   </xsl:call-template>
 
   <xsl:call-template name="tag_title">
     <xsl:with-param name="tag">503</xsl:with-param>
     <xsl:with-param name="label">Uniform Conventional Heading</xsl:with-param>
+    <xsl:with-param name="spanclass">uniform_conventional_heading</xsl:with-param>
   </xsl:call-template>
 
   <xsl:if test="marc:datafield[@tag=101]">
-    <span class="results_summary">
-      <span class="label">Language:</span>
+    <span class="results_summary language">
+      <span class="label">Language: </span>
       <xsl:for-each select="marc:datafield[@tag=101]">
         <xsl:for-each select="marc:subfield">
           <xsl:choose>
   </xsl:if>
 
   <xsl:if test="marc:datafield[@tag=102]">
-         <span class="results_summary">
+         <span class="results_summary country">
       <span class="label">Country: </span>
       <xsl:for-each select="marc:datafield[@tag=102]">
         <xsl:for-each select="marc:subfield">
   <xsl:call-template name="tag_comma">
     <xsl:with-param name="tag">205</xsl:with-param>
     <xsl:with-param name="label">Edition Statement</xsl:with-param>
+    <xsl:with-param name="spanclass">edition</xsl:with-param>
   </xsl:call-template>
 
   <xsl:call-template name="tag_210" />
   <xsl:call-template name="tag_215" />
 
   <xsl:if test="marc:datafield[@tag=010]/marc:subfield[@code='a']">
-    <span class="results_summary"><span class="label">ISBN: </span>
+    <span class="results_summary isbn"><span class="label">ISBN: </span>
     <xsl:for-each select="marc:datafield[@tag=010]">
       <xsl:variable name="isbn" select="marc:subfield[@code='a']"/>
       <xsl:value-of select="marc:subfield[@code='a']"/>
   </xsl:if>
 
   <xsl:if test="marc:datafield[@tag=011]">
-    <span class="results_summary">
+    <span class="results_summary issn">
       <span class="label">ISSN: </span>
       <xsl:for-each select="marc:datafield[@tag=011]">
         <xsl:value-of select="marc:subfield[@code='a']"/>
   <xsl:call-template name="tag_title">
     <xsl:with-param name="tag">225</xsl:with-param>
     <xsl:with-param name="label">Series</xsl:with-param>
+    <xsl:with-param name="spanclass">series</xsl:with-param>
   </xsl:call-template>
 
   <xsl:if test="marc:datafield[@tag=676]">
-    <span class="results_summary">
+    <span class="results_summary dewey">
     <span class="label">Dewey: </span>
       <xsl:for-each select="marc:datafield[@tag=676]">
         <xsl:value-of select="marc:subfield[@code='a']"/>
   </xsl:if>
 
   <xsl:if test="marc:datafield[@tag=686]">
-    <span class="results_summary">
+    <span class="results_summary classification">
     <span class="label">Classification: </span>
       <xsl:for-each select="marc:datafield[@tag=686]">
         <xsl:value-of select="marc:subfield[@code='a']"/>
   </xsl:if>
 
   <xsl:if test="marc:datafield[@tag=327]">
-    <span class="results_summary">
+    <span class="results_summary contents">
       <span class="label">Contents note: </span>
       <xsl:for-each select="marc:datafield[@tag=327]">
         <xsl:call-template name="chopPunctuation">
   </xsl:if>
 
   <xsl:if test="marc:datafield[@tag=330]">
-    <span class="results_summary">
+    <span class="results_summary abstract">
       <span class="label">Abstract: </span>
       <xsl:for-each select="marc:datafield[@tag=330]">
         <xsl:value-of select="marc:subfield[@code='a']"/>
   </xsl:if>
 
   <xsl:if test="marc:datafield[@tag=317]">
-    <span class="results_summary">
+    <span class="results_summary provenance">
       <span class="label">Provenance note: </span>
       <xsl:for-each select="marc:datafield[@tag=317]">
           <xsl:value-of select="marc:subfield[@code='a']"/>
   </xsl:if>
 
   <xsl:if test="marc:datafield[@tag=320]">
-    <span class="results_summary">
+    <span class="results_summary bibliography">
       <span class="label">Bibliography: </span>
       <xsl:for-each select="marc:datafield[@tag=320]">
         <xsl:value-of select="marc:subfield[@code='a']"/>
   </xsl:if>
 
   <xsl:if test="marc:datafield[@tag=328]">
-    <span class="results_summary">
+    <span class="results_summary thesis">
       <span class="label">Thesis: </span>
       <xsl:for-each select="marc:datafield[@tag=328]">
         <xsl:value-of select="marc:subfield[@code='a']"/>
   </xsl:if>
 
   <xsl:if test="marc:datafield[@tag=333]">
-    <span class="results_summary">
+    <span class="results_summary audience">
       <span class="label">Audience: </span>
       <xsl:for-each select="marc:datafield[@tag=333]">
         <xsl:value-of select="marc:subfield[@code='a']"/>
   </xsl:if>
 
   <xsl:if test="marc:datafield[@tag=955]">
-    <span class="results_summary">
+    <span class="results_summary sudoc_serial_history">
       <span class="label">SUDOC serial history: </span>
       <xsl:for-each select="marc:datafield[@tag=955]">
         <xsl:value-of select="marc:subfield[@code='9']"/>:
   </xsl:call-template>
 
   <xsl:if test="marc:datafield[@tag=856]">
-    <span class="results_summary">
+    <span class="results_summary online_resources">
       <span class="label">Online Resources:</span>
       <xsl:for-each select="marc:datafield[@tag=856]">
         <a>
index 378e96c..dd70bca 100644 (file)
@@ -28,6 +28,7 @@
 
   <xsl:variable name="hidelostitems" select="marc:sysprefs/marc:syspref[@name='hidelostitems']"/>
   <xsl:variable name="singleBranchMode" select="marc:sysprefs/marc:syspref[@name='singleBranchMode']"/>
+  <xsl:variable name="OPACURLOpenInNewWindow" select="marc:sysprefs/marc:syspref[@name='OPACURLOpenInNewWindow']"/>
 
   <xsl:if test="marc:datafield[@tag=200]">
     <xsl:for-each select="marc:datafield[@tag=200]">
   <xsl:call-template name="tag_title">
     <xsl:with-param name="tag">454</xsl:with-param>
     <xsl:with-param name="label">Translation of</xsl:with-param>
+    <xsl:with-param name="spanclass">original_title</xsl:with-param>
   </xsl:call-template>
 
   <xsl:call-template name="tag_title">
     <xsl:with-param name="tag">461</xsl:with-param>
     <xsl:with-param name="label">Set Level</xsl:with-param>
+    <xsl:with-param name="spanclass">set_level</xsl:with-param>
   </xsl:call-template>
 
   <xsl:call-template name="tag_title">
     <xsl:with-param name="tag">464</xsl:with-param>
     <xsl:with-param name="label">Piece-Analytic Level</xsl:with-param>
+    <xsl:with-param name="spanclass">piece_analytic_level</xsl:with-param>
   </xsl:call-template>
 
   <xsl:call-template name="tag_210" />
 
   <xsl:call-template name="tag_215" />
 
-  <span class="results_summary">
+  <span class="results_summary availability">
     <span class="label">Availability: </span>
     <xsl:choose>
       <xsl:when test="marc:datafield[@tag=856]">
                 <xsl:attribute name="href">
                   <xsl:value-of select="marc:subfield[@code='u']"/>
                 </xsl:attribute>
+                <xsl:if test="$OPACURLOpenInNewWindow='1'">
+                    <xsl:attribute name="target">_blank</xsl:attribute>
+                </xsl:if>
                 <xsl:choose>
                   <xsl:when test="marc:subfield[@code='y' or @code='3' or @code='z']">
                     <xsl:call-template name="subfieldSelect">
           <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="$singleBranchMode=0">
+                <xsl:value-of select="items:homebranch"/>
+            </xsl:if>
             <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)))"/>
index 657f314..fc4faa1 100644 (file)
@@ -83,8 +83,9 @@
   <xsl:template name="tag_title">
     <xsl:param name="tag" />
     <xsl:param name="label" />
+    <xsl:param name="spanclass" />
     <xsl:if test="marc:datafield[@tag=$tag]">
-      <span class="results_summary">
+      <span class="results_summary {$spanclass}">
         <span class="label">
         <xsl:value-of select="$label"/>: </span>
         <xsl:for-each select="marc:datafield[@tag=$tag]">
   <xsl:template name="tag_comma">
     <xsl:param name="tag" />
     <xsl:param name="label" />
+    <xsl:param name="spanclass" />
     <xsl:if test="marc:datafield[@tag=$tag]">
-      <span class="results_summary">
+      <span class="results_summary {$spanclass}">
         <span class="label">
         <xsl:value-of select="$label"/>: </span>
         <xsl:for-each select="marc:datafield[@tag=$tag]">
   </xsl:template>
 
   <xsl:template name="tag_210">
-    <span class="results_summary">
-      <span class="label">Publication:</span>
+    <span class="results_summary publication">
+      <span class="label">Publication: </span>
       <xsl:for-each select="marc:datafield[@tag=210]">
         <span>
           <xsl:call-template name="addClassRtl" />
 
   <xsl:template name="tag_215">
     <xsl:for-each select="marc:datafield[@tag=215]">
-         <span class="results_summary">
+         <span class="results_summary description">
         <span class="label">Description: </span>
         <xsl:if test="marc:subfield[@code='a']">
           <xsl:value-of select="marc:subfield[@code='a']"/>
   <xsl:template name="tag_subject">
     <xsl:param name="tag" />
     <xsl:param name="label" />
+    <xsl:param name="spanclass" />
     <xsl:if test="marc:datafield[@tag=$tag]">
-      <span class="results_summary">
+      <span class="results_summary subjects {$spanclass}">
         <span class="label">
           <xsl:value-of select="$label"/>
           <xsl:text>: </xsl:text>
   <xsl:template name="tag_7xx">
     <xsl:param name="tag" />
     <xsl:param name="label" />
+    <xsl:param name="spanclass" />
     <xsl:if test="marc:datafield[@tag=$tag]">
-      <span class="results_summary">
+      <span class="results_summary author {$spanclass}">
         <span class="label">
           <xsl:value-of select="$label" />
           <xsl:text>: </xsl:text>