Bugzilla – Attachment 35613 Details for
Bug 13382
RDA: 700/710/711 display in XSLT
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 13382: RDA 700s
Bug-13382-RDA-700s.patch (text/plain), 23.62 KB, created by
Nicole C. Engard
on 2015-01-29 20:26:39 UTC
(
hide
)
Description:
Bug 13382: RDA 700s
Filename:
MIME Type:
Creator:
Nicole C. Engard
Created:
2015-01-29 20:26:39 UTC
Size:
23.62 KB
patch
obsolete
>From 72739cff3a9ccb06044e07a501e287496dc9c236 Mon Sep 17 00:00:00 2001 >From: Winona Salesky <wsalesky@gmail.com> >Date: Thu, 29 Jan 2015 14:24:39 -0600 >Subject: [PATCH] Bug 13382: RDA 700s > >This patch updates the visibility of the 7xx fields in the >XSLT display in the staff and OPAC. > >To test: > >* Search the opac for a title with 7xx fields >* Click the title >* Make sure the fields display properly >* Repeat for a few more titles >* Repeat in the Staff Client >--- > .../prog/en/xslt/MARC21slim2intranetDetail.xsl | 198 ++++++++++++++++++-- > .../bootstrap/en/xslt/MARC21slim2OPACDetail.xsl | 110 +++++++++--- > 2 files changed, 263 insertions(+), 45 deletions(-) > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl >index f96c0eb..b0d3995 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl >+++ b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl >@@ -3,6 +3,7 @@ > <!DOCTYPE stylesheet [<!ENTITY nbsp " " >]> > > <!-- $Id: MARC21slim2DC.xsl,v 1.1 2003/01/06 08:20:27 adam Exp $ --> >+<!-- Edited: Bug 13382 [ENH] XSLT enhancements sponsored by bywater solutions 2015/01/19 WS wsalesky@gmail.com --> > <xsl:stylesheet version="1.0" > xmlns:marc="http://www.loc.gov/MARC21/slim" > xmlns:items="http://www.koha-community.org/items" >@@ -140,9 +141,17 @@ > </xsl:if> > > <!-- Author Statement --> >- <xsl:call-template name="showAuthor"><xsl:with-param name="authorfield" select="marc:datafield[@tag=100 or @tag=110 or @tag=111]"/><xsl:with-param name="UseAuthoritiesForTracings" select="$UseAuthoritiesForTracings"/></xsl:call-template> >- <xsl:call-template name="showAuthor"><xsl:with-param name="authorfield" select="marc:datafield[@tag=700 or @tag=710 or @tag=711]"/><xsl:with-param name="UseAuthoritiesForTracings" select="$UseAuthoritiesForTracings"/></xsl:call-template> >- >+ <!-- #13382 suppress 700$i and 7xx/@ind2=2 --> >+ <xsl:call-template name="showAuthor"> >+ <xsl:with-param name="authorfield" select="marc:datafield[@tag=100 or @tag=110 or @tag=111]"/> >+ <xsl:with-param name="UseAuthoritiesForTracings" select="$UseAuthoritiesForTracings"/> >+ </xsl:call-template> >+ <xsl:call-template name="showAuthor"> >+ <!-- #13382 suppress 700$i and 7xx/@ind2=2 --> >+ <xsl:with-param name="authorfield" select="marc:datafield[@tag=700 or @tag=710 or @tag=711][not(@ind2=2)][not(marc:subfield[@code='i'][parent::marc:datafield[@tag='700']])]"/> >+ <xsl:with-param name="UseAuthoritiesForTracings" select="$UseAuthoritiesForTracings"/> >+ </xsl:call-template> >+ > <xsl:if test="$DisplayIconsXSLT!='0' and $materialTypeCode!=''"> > <span class="results_summary type"><span class="label">Material type: </span> > <xsl:element name="img"><xsl:attribute name="src">/intranet-tmpl/prog/img/famfamfam/<xsl:value-of select="$materialTypeCode"/>.png</xsl:attribute><xsl:attribute name="alt"></xsl:attribute></xsl:element> >@@ -524,7 +533,115 @@ > </xsl:for-each> > </span> > </xsl:if> >- >+ >+ <!-- #13382 Added Related works 700$i --> >+ <xsl:if test="marc:datafield[@tag=700][marc:subfield[@code='i']]"> >+ <span class="results_summary related_works"><span class="label">Related Works: </span> >+ <xsl:for-each select="marc:datafield[@tag=700][marc:subfield[@code='i']]"> >+ <xsl:variable name="str"> >+ <xsl:call-template name="subfieldSelect"> >+ <xsl:with-param name="codes">abcdfghiklmorstux</xsl:with-param> >+ </xsl:call-template> >+ </xsl:variable> >+ <xsl:call-template name="chopPunctuation"> >+ <xsl:with-param name="chopString"> >+ <xsl:value-of select="substring($str,1,string-length($str)-1)"/> >+ </xsl:with-param> >+ </xsl:call-template> >+ <!-- add relator code too between brackets--> >+ <xsl:if test="marc:subfield[@code='4' or @code='e']"> >+ <span class="relatorcode"> >+ <xsl:text> [</xsl:text> >+ <xsl:choose> >+ <xsl:when test="marc:subfield[@code='e']"> >+ <xsl:call-template name="chopPunctuation"> >+ <xsl:with-param name="chopString"> >+ <xsl:call-template name="subfieldSelect"> >+ <xsl:with-param name="codes">e</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:when> >+ <xsl:otherwise> >+ <xsl:call-template name="chopPunctuation"> >+ <xsl:with-param name="chopString"> >+ <xsl:call-template name="subfieldSelect"> >+ <xsl:with-param name="codes">4</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:otherwise> >+ </xsl:choose> >+ <xsl:text>]</xsl:text> >+ </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> >+ >+ <!-- #13382 Added Contained Works 7xx@ind2=2 --> >+ <xsl:if test="marc:datafield[@tag=700][@ind2=2] or marc:datafield[@tag=710][@ind2=2] or marc:datafield[@tag=711][@ind2=2]"> >+ <span class="results_summary contained_works"><span class="label">Contained Works: </span> >+ <xsl:for-each select="marc:datafield[@tag=700][@ind2=2][not(marc:subfield[@code='i'])] | marc:datafield[@tag=710][@ind2=2][not(marc:subfield[@code='i'])] | marc:datafield[@tag=711][@ind2=2][not(marc:subfield[@code='i'])]"> >+ <xsl:variable name="str"> >+ <xsl:call-template name="subfieldSelect"> >+ <xsl:with-param name="codes">abcdfghiklmorstux</xsl:with-param> >+ </xsl:call-template> >+ </xsl:variable> >+ <xsl:call-template name="chopPunctuation"> >+ <xsl:with-param name="chopString"> >+ <xsl:value-of select="substring($str,1,string-length($str)-1)"/> >+ </xsl:with-param> >+ </xsl:call-template> >+ <!-- add relator code too between brackets--> >+ <xsl:if test="marc:subfield[@code='4' or @code='e']"> >+ <span class="relatorcode"> >+ <xsl:text> [</xsl:text> >+ <xsl:choose> >+ <xsl:when test="marc:subfield[@code='e']"> >+ <xsl:call-template name="chopPunctuation"> >+ <xsl:with-param name="chopString"> >+ <xsl:call-template name="subfieldSelect"> >+ <xsl:with-param name="codes">e</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:when> >+ <xsl:otherwise> >+ <xsl:call-template name="chopPunctuation"> >+ <xsl:with-param name="chopString"> >+ <xsl:call-template name="subfieldSelect"> >+ <xsl:with-param name="codes">4</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:otherwise> >+ </xsl:choose> >+ <xsl:text>]</xsl:text> >+ </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[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']"> >@@ -949,7 +1066,8 @@ > <xsl:choose> > <xsl:when test="position()>1"/> > <xsl:when test="@tag<700">Author(s): </xsl:when> >- <xsl:otherwise>Additional author(s): </xsl:otherwise> >+ <!--#13382 Changed Additional author to contributor --> >+ <xsl:otherwise>Contributor(s): </xsl:otherwise> > </xsl:choose> > <a> > <xsl:choose> >@@ -961,24 +1079,66 @@ > </xsl:otherwise> > </xsl:choose> > <xsl:choose> >- <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:when test="@tag=100"><xsl:call-template name="nameABCQ"/></xsl:when> >+ <xsl:when test="@tag=110"><xsl:call-template name="nameABCDN"/></xsl:when> >+ <xsl:when test="@tag=111"><xsl:call-template name="nameACDEQ"/></xsl:when> >+ <!-- #13382 excludes 700$i and ind2=2, displayed as Related Works --> >+ <!--#13382 Added all relevant subfields 4, e, are handled separately --> >+ <xsl:when test="@tag=700 or @tag=710 or @tag=711"> >+ <xsl:variable name="str"> >+ <xsl:call-template name="subfieldSelect"> >+ <xsl:with-param name="codes">abcdfghiklmnoprstux</xsl:with-param> >+ </xsl:call-template> >+ </xsl:variable> >+ <xsl:call-template name="chopPunctuation"> >+ <xsl:with-param name="chopString"> >+ <xsl:value-of select="$str"/> >+ </xsl:with-param> >+ <xsl:with-param name="punctuation"> >+ <xsl:text>:,;/. </xsl:text> >+ </xsl:with-param> >+ </xsl:call-template> >+ </xsl:when> > </xsl:choose> > <!-- add relator code too between brackets--> >- <xsl:if test="marc:subfield[@code='4' or @code='e']"> >- <span class="relatorcode"> >- <xsl:text> [</xsl:text> >- <xsl:choose> >- <xsl:when test="marc:subfield[@code=4]"><xsl:value-of select="marc:subfield[@code=4]"/></xsl:when> >- <xsl:otherwise><xsl:value-of select="marc:subfield[@code='e']"/></xsl:otherwise> >- </xsl:choose> >- <xsl:text>]</xsl:text> >- </span> >- </xsl:if> >+ <xsl:if test="marc:subfield[@code='4' or @code='e']"> >+ <xsl:if test="not(@tag=111 or @tag=711)"> >+ <span class="relatorcode"> >+ <xsl:text> [</xsl:text> >+ <!-- #13382 If both $e and $4 are present only display $e --> >+ <xsl:choose> >+ <xsl:when test="marc:subfield[@code='e']"> >+ <xsl:call-template name="chopPunctuation"> >+ <xsl:with-param name="chopString"> >+ <xsl:call-template name="subfieldSelect"> >+ <xsl:with-param name="codes">e</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:when> >+ <xsl:otherwise> >+ <xsl:call-template name="chopPunctuation"> >+ <xsl:with-param name="chopString"> >+ <xsl:call-template name="subfieldSelect"> >+ <xsl:with-param name="codes">4</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:otherwise> >+ </xsl:choose> >+ <xsl:text>]</xsl:text> >+ </span> >+ </xsl:if> >+ </xsl:if> > </a> > <xsl:choose> >- <xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise> >+ <xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text> | </xsl:text></xsl:otherwise> > </xsl:choose> > </xsl:for-each> > </h5> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl >index af9ac00..04eda03 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl >@@ -1,5 +1,6 @@ > <?xml version="1.0" encoding="UTF-8"?> > <!-- $Id: MARC21slim2DC.xsl,v 1.1 2003/01/06 08:20:27 adam Exp $ --> >+<!-- Edited: Bug 13382 [ENH] XSLT enhancements sponsored by bywater solutions 2015/01/19 WS wsalesky@gmail.com --> > <!DOCTYPE stylesheet [<!ENTITY nbsp " " >]> > <xsl:stylesheet version="1.0" > xmlns:marc="http://www.loc.gov/MARC21/slim" >@@ -158,18 +159,21 @@ > </xsl:call-template> > </h5> > </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 >- <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:with-param name="materialTypeLabel" select="$materialTypeLabel"/> >- <xsl:with-param name="theme" select="$theme"/> >- </xsl:call-template> >- </h5> >- </xsl:when> >- </xsl:choose> >+ >+ <!--#13382 Added Author Statement to seperate Authors and Contributors --> >+ <xsl:call-template name="showAuthor"> >+ <xsl:with-param name="authorfield" select="marc:datafield[@tag=100 or @tag=110 or @tag=111]"/> >+ <xsl:with-param name="UseAuthoritiesForTracings" select="$UseAuthoritiesForTracings"/> >+ <xsl:with-param name="materialTypeLabel" select="$materialTypeLabel"/> >+ <xsl:with-param name="theme" select="$theme"/> >+ </xsl:call-template> >+ <xsl:call-template name="showAuthor"> >+ <!-- #13382 suppress 700$i and 7xx/@ind2=2 --> >+ <xsl:with-param name="authorfield" select="marc:datafield[@tag=700 or @tag=710 or @tag=711][not(@ind2=2)][not(marc:subfield[@code='i'][parent::marc:datafield[@tag='700']])]"/> >+ <xsl:with-param name="UseAuthoritiesForTracings" select="$UseAuthoritiesForTracings"/> >+ <xsl:with-param name="materialTypeLabel" select="$materialTypeLabel"/> >+ <xsl:with-param name="theme" select="$theme"/> >+ </xsl:call-template> > > <xsl:if test="$DisplayOPACiconsXSLT!='0'"> > <xsl:if test="$materialTypeCode!=''"> >@@ -1025,8 +1029,16 @@ > <xsl:param name="UseAuthoritiesForTracings" /> > <xsl:param name="materialTypeLabel" /> > <xsl:param name="theme" /> >+ <xsl:if test="count($authorfield)>0"> >+ <!--#13382 Changed Additional author to contributor --> >+ <h5> > <xsl:for-each select="$authorfield"> >- <xsl:choose><xsl:when test="position()!=1"><xsl:text>; </xsl:text></xsl:when></xsl:choose> >+ <xsl:choose> >+ <xsl:when test="position()>1"/> >+ <xsl:when test="@tag<700">by </xsl:when> >+ <!--#13382 Changed Additional author to contributor --> >+ <xsl:otherwise>Contributor(s): </xsl:otherwise> >+ </xsl:choose> > <xsl:choose> > <xsl:when test="not(@tag=111 or @tag=711)" /> > <xsl:when test="marc:subfield[@code='n']"> >@@ -1067,21 +1079,62 @@ > </xsl:choose> > <span property="name"> > <xsl:choose> >- <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:when test="@tag=100"><xsl:call-template name="nameABCQ"/></xsl:when> >+ <xsl:when test="@tag=110"><xsl:call-template name="nameABCDN"/></xsl:when> >+ <xsl:when test="@tag=111"><xsl:call-template name="nameACDEQ"/></xsl:when> >+ <!-- #13382 excludes 700$i and ind2=2, displayed as Related Works --> >+ <!--#13382 Added all relevant subfields 4, e, are handled separately --> >+ <xsl:when test="@tag=700 or @tag=710 or @tag=711"> >+ <xsl:variable name="str"> >+ <xsl:call-template name="subfieldSelect"> >+ <xsl:with-param name="codes">abcdfghiklmnoprstux</xsl:with-param> >+ </xsl:call-template> >+ </xsl:variable> >+ <xsl:call-template name="chopPunctuation"> >+ <xsl:with-param name="chopString"> >+ <xsl:value-of select="$str"/> >+ </xsl:with-param> >+ <xsl:with-param name="punctuation"> >+ <xsl:text>:,;/. </xsl:text> >+ </xsl:with-param> >+ </xsl:call-template> >+ </xsl:when> > </xsl:choose> > </span></span></span> >- <!-- add relator code too between brackets--> >+ <!-- #13382 If both $e and $4 are present only display $e --> > <xsl:if test="marc:subfield[@code='4' or @code='e']"> >- <span class="relatorcode"> >- <xsl:text> [</xsl:text> >- <xsl:choose> >- <xsl:when test="marc:subfield[@code=4]"><xsl:value-of select="marc:subfield[@code=4]"/></xsl:when> >- <xsl:otherwise><xsl:value-of select="marc:subfield[@code='e']"/></xsl:otherwise> >- </xsl:choose> >- <xsl:text>]</xsl:text> >- </span> >+ <xsl:if test="not(@tag=111 or @tag=711)"> >+ <span class="relatorcode"> >+ <xsl:text> [</xsl:text> >+ <xsl:choose> >+ <xsl:when test="marc:subfield[@code='e']"> >+ <xsl:call-template name="chopPunctuation"> >+ <xsl:with-param name="chopString"> >+ <xsl:call-template name="subfieldSelect"> >+ <xsl:with-param name="codes">e</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:when> >+ <xsl:otherwise> >+ <xsl:call-template name="chopPunctuation"> >+ <xsl:with-param name="chopString"> >+ <xsl:call-template name="subfieldSelect"> >+ <xsl:with-param name="codes">4</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:otherwise> >+ </xsl:choose> >+ <xsl:text>]</xsl:text> >+ </span> >+ </xsl:if> > </xsl:if> > </a> > <xsl:if test="marc:subfield[@code=9]"> >@@ -1095,8 +1148,13 @@ > </xsl:element> > </a> > </xsl:if> >+ <!--#13382 Changed separator to | --> >+ <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:text>.</xsl:text> >+ </h5> >+ </xsl:if> > </xsl:template> > > <xsl:template name="nameABCQ"> >-- >1.7.2.3
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 13382
:
35613
|
35647
|
35759
|
36515
|
36786
|
37073
|
37245
|
37448
|
37591
|
38299
|
38501
|
39843