Bug 21644: better UNIMARC XSLT display of 210 in intranet

In intranet default UNIMARC XSLT display of 210 is tricky.
It tests each subfield with a complex conditional prefix.
In OPAC default UNIMARC XSLT display 210 is simply displayed with a loop on all subfields.

I propose to use the same code as OPAC in intranet.
It allows to display $f and removes strange middle-score character.

Test plan:
1) Doni't apply patch
2) Use an UNIMARC database
3) Use default XSLT in all displays
4) Configure a framework to allow 210 subfields from 'a' to 'h'
5) Edit a record with this framework
6) In each 210 subfield enter its letter : $a a, $b b ...
7) Save record
8) Look at record in OPAC, you see : "Publication: a, b : c, d, e, f : g, h"
9) Look at record in intranet
10) You see : ""Publication: a, b : c, d - e : g, h
11) Apply patch
12) Look at record in intranet
13) You see : "Publication: a, b : c, d, e, f : g, h"

Signed-off-by: Andreas Roussos <arouss1980@gmail.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
This patch makes intranet consistent with staff again on this area.
Note that we loose some punctuation like "- e".

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
This commit is contained in:
Fridolin Somers 2018-10-24 14:23:02 +02:00 committed by Nick Clemens
parent 38481c253d
commit 7b16603b31
1 changed files with 16 additions and 25 deletions

View File

@ -34,31 +34,22 @@
<xsl:for-each select="marc:datafield[@tag=210]">
<span>
<xsl:call-template name="addClassRtl" />
<xsl:value-of select="marc:subfield[@code='a']"/>
<xsl:if test="marc:subfield[@code='b']">
<xsl:if test="marc:subfield[@code='a']">, </xsl:if>
<xsl:value-of select="marc:subfield[@code='b']"/>
</xsl:if>
<xsl:if test="marc:subfield[@code='a' or @code='b']">
<xsl:if test="marc:subfield[@code='a']"> : </xsl:if>
<xsl:value-of select="marc:subfield[@code='c']"/>
</xsl:if>
<xsl:if test="marc:subfield[@code='d']">
<xsl:if test="marc:subfield[@code='a' or @code='c']">, </xsl:if>
<xsl:value-of select="marc:subfield[@code='d']"/>
</xsl:if>
<xsl:if test="marc:subfield[@code='e']">
<xsl:if test="marc:subfield[@code='a' or @code='c' or @code='d']"> — </xsl:if>
<xsl:value-of select="marc:subfield[@code='e']"/>
</xsl:if>
<xsl:if test="marc:subfield[@code='g']">
<xsl:if test="marc:subfield[@code='e']"> : </xsl:if>
<xsl:value-of select="marc:subfield[@code='g']"/>
</xsl:if>
<xsl:if test="marc:subfield[@code='h']">
<xsl:if test="marc:subfield[@code='e' or @code='g']">, </xsl:if>
<xsl:value-of select="marc:subfield[@code='h']"/>
</xsl:if>
<xsl:for-each select="marc:subfield">
<xsl:choose>
<xsl:when test="@code='c' or @code='g'">
<xsl:if test="position()>1">
<xsl:text> : </xsl:text>
</xsl:if>
<xsl:value-of select="."/>
</xsl:when>
<xsl:otherwise>
<xsl:if test="position()>1">
<xsl:text>, </xsl:text>
</xsl:if>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:if test="not (position() = last())">
<xsl:text> • </xsl:text>
</xsl:if>