+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet version="1.0" xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="marc">
- <xsl:include href="MARC21slimUtils.xsl"/>
- <xsl:output method="text"/>
-
- <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:text> TY - </xsl:text>
-
- <xsl:variable name="field008" select="marc:controlfield[@tag=008]"/>
-
- <xsl:choose>
- <xsl:when test="$leader6='a' or $leader6='t'">
- <xsl:choose>
- <xsl:when test="$leader6='a' and $leader7='b' or $leader7='i' or $leader7='s'">
- <!-- Continuing Resource -->
- <xsl:variable name="field008-21" select="substring($field008,22,1)"/>
- <xsl:choose>
- <xsl:when test="$field008-21='p'">JOUR</xsl:when>
- <xsl:when test="$field008-21='n'">NEWS</xsl:when>
- <xsl:when test="$field008-21='m'">SER</xsl:when>
-
- <!-- Default to Journal -->
- <xsl:otherwise>JOUR</xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <!-- If not a CR, then a book (or book-type) item -->
- <xsl:variable name="field008-24-27" select="substring($field008,25,4)"/>
- <xsl:variable name="field008-29" select="substring($field008,30,1)"/>
-
- <xsl:choose>
- <xsl:when test="$leader6='a' and $leader7='m'">BOOK</xsl:when>
- <xsl:when test="$leader6='a' and $leader7='a'">CHAP</xsl:when>
- <xsl:when test="$field008-29='1'">CONF</xsl:when>
- <xsl:when test="$field008-24-27='m'">THES</xsl:when>
- <xsl:when test="$field008-24-27='a'">ABST</xsl:when>
- <xsl:when test="$field008-24-27='j'">PAT</xsl:when>
- <xsl:when test="$field008-24-27='v'">CASE</xsl:when>
- <xsl:when test="$field008-24-27='l'">STAT</xsl:when>
- <xsl:when test="$field008-24-27='t'">RPRT</xsl:when>
- <xsl:when test="$field008-24-27='c'">CTLG</xsl:when>
-
- <!-- Default to BOOK -->
- <xsl:otherwise>BOOK</xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
-
- <xsl:when test="$leader6='e' or $leader6='f'">MAP</xsl:when>
- <xsl:when test="$leader6='i' or $leader6='j'">SOUND</xsl:when>
- <xsl:when test="$leader6='c' or $leader6='d'">MUSIC</xsl:when>
-
- <xsl:when test="$leader6='g'">
- <xsl:variable name="field008-33" select="substring($field008,34,1)"/>
- <xsl:choose>
- <xsl:when test="$field008-33='m' or $field008-33='f'">MPCT</xsl:when>
- <xsl:when test="$field008-33='v'">VIDEO</xsl:when>
- <xsl:when test="$field008-33='s'">SLIDE</xsl:when>
-
- <!-- Default to Motion Picture -->
- <xsl:otherwise>MPCT</xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="$leader6='k' or $leader6='r'">
- <xsl:variable name="field008-33" select="substring($field008,34,1)"/>
- <xsl:choose>
- <xsl:when test="$field008-33='a' or $field008-33='c' or $field008-33='i' or $field008-33='k'">ART</xsl:when>
-
- <!-- Default to Generic -->
- <xsl:otherwise>GEN</xsl:otherwise>
- </xsl:choose>
- </xsl:when>
-
- <xsl:when test="$leader6='m'">
- <xsl:variable name="field008-26" select="substring($field008,27,1)"/>
- <xsl:choose>
- <xsl:when test="$field008-26='b'">COMP</xsl:when>
- <xsl:when test="$field008-26='e'">ELEC</xsl:when>
- <xsl:when test="$field008-26='a' or $field008-26='c' or $field008-26='d'">DATA</xsl:when>
-
- <!-- Default to Computer File -->
- <xsl:otherwise>COMP</xsl:otherwise>
- </xsl:choose>
- </xsl:when>
-
- <xsl:otherwise>GEN</xsl:otherwise>
-
- </xsl:choose> <!-- End TY -->
-
-
- <xsl:for-each select="marc:datafield[@tag=100]|marc:datafield[@tag=110]|marc:datafield[@tag=111]">
- <xsl:text> A1 - </xsl:text>
- <xsl:for-each select="marc:subfield[@code='a']">
- <xsl:call-template name="chopPunctuation">
- <xsl:with-param name="punctuation">
- <xsl:text>,; </xsl:text>
- </xsl:with-param>
- <xsl:with-param name="chopString">
- <xsl:value-of select="."/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:for-each>
- <xsl:if test="@tag = '110'">
- <xsl:for-each select="marc:subfield[@code='b']">
- <xsl:value-of select="."/>
- </xsl:for-each>
- </xsl:if>
- <xsl:if test="@tag = '111'">
- <xsl:for-each select="marc:subfield[@code='q']">
- <xsl:value-of select="."/>
- </xsl:for-each>
- <xsl:for-each select="marc:subfield[@code='e']">
- <xsl:value-of select="."/>
- </xsl:for-each>
- </xsl:if>
- </xsl:for-each>
-
- <xsl:for-each select="marc:datafield[@tag=245]">
- <xsl:text> T1 - </xsl:text>
- <xsl:for-each select="marc:subfield[@code='a']">
- <xsl:call-template name="chopPunctuation">
- <xsl:with-param name="punctuation">
- <xsl:text>:/ </xsl:text>
- </xsl:with-param>
- <xsl:with-param name="chopString">
- <xsl:value-of select="."/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:for-each>
- <xsl:for-each select="marc:subfield[@code='b']">
- <xsl:text>: </xsl:text>
- <xsl:call-template name="chopPunctuation">
- <xsl:with-param name="punctuation">
- <xsl:text>/ </xsl:text>
- </xsl:with-param>
- <xsl:with-param name="chopString">
- <xsl:value-of select="."/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:for-each>
- </xsl:for-each>
-
- <xsl:variable name="respStmt" select="marc:datafield[@tag=245]/marc:subfield[@code='c']"/>
-
- <xsl:for-each select="marc:datafield[@tag=700]">
- <xsl:for-each select="marc:subfield[@code='a']">
- <xsl:variable name="addedAuthor" select="."/>
- <xsl:choose>
- <xsl:when test="contains($respStmt, substring-before($addedAuthor, ', '))">
- <xsl:text> A1 - </xsl:text>
- <xsl:call-template name="chopPunctuation">
- <xsl:with-param name="punctuation">
- <xsl:text>,; </xsl:text>
- </xsl:with-param>
- <xsl:with-param name="chopString">
- <xsl:value-of select="$addedAuthor"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text> A2 - </xsl:text>
- <xsl:call-template name="chopPunctuation">
- <xsl:with-param name="punctuation">
- <xsl:text>,; </xsl:text>
- </xsl:with-param>
- <xsl:with-param name="chopString">
- <xsl:value-of select="$addedAuthor"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </xsl:for-each>
-
- <xsl:for-each select="marc:datafield[@tag=710]">
- <xsl:text> A2 - </xsl:text>
- <xsl:for-each select="marc:subfield[@code='a']|marc:subfield[@code='b']">
- <xsl:value-of select="."/>
- </xsl:for-each>
- </xsl:for-each>
-
- <xsl:for-each select="marc:datafield[@tag=490]|marc:datafield[@tag=711]">
- <xsl:for-each select="marc:subfield[@code='a']">
- <xsl:text> T3 - </xsl:text>
- <xsl:value-of select="."/>
- </xsl:for-each>
- <xsl:if test="@tag = '711'">
- <xsl:for-each select="marc:subfield[@code='q']">
- <xsl:value-of select="."/>
- </xsl:for-each>
- <xsl:for-each select="marc:subfield[@code='e']">
- <xsl:value-of select="."/>
- </xsl:for-each>
- </xsl:if>
- </xsl:for-each>
-
- <xsl:for-each select="marc:datafield[@tag=210]">
- <xsl:text> JO - </xsl:text>
- <xsl:for-each select="marc:subfield[@code='a']">
- <xsl:value-of select="."/>
- </xsl:for-each>
- </xsl:for-each>
-
- <xsl:for-each select="marc:datafield[@tag=222]">
- <xsl:text> JF - </xsl:text>
- <xsl:for-each select="marc:subfield[@code='a']">
- <xsl:value-of select="."/>
- </xsl:for-each>
- </xsl:for-each>
-
- <xsl:for-each select="marc:datafield[@tag=260]">
- <xsl:for-each select="marc:subfield[@code='a']">
- <xsl:text> CY - </xsl:text>
- <xsl:call-template name="chopPunctuation">
- <xsl:with-param name="punctuation">
- <xsl:text> :</xsl:text>
- </xsl:with-param>
- <xsl:with-param name="chopString">
- <xsl:value-of select="."/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:for-each>
- <xsl:for-each select="marc:subfield[@code='b']">
- <xsl:text> PB - </xsl:text>
- <xsl:call-template name="chopPunctuation">
- <xsl:with-param name="punctuation">
- <xsl:text> ,</xsl:text>
- </xsl:with-param>
- <xsl:with-param name="chopString">
- <xsl:value-of select="."/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:for-each>
- <xsl:for-each select="marc:subfield[@code='c']">
- <xsl:text> PY - </xsl:text>
- <xsl:call-template name="chopPunctuation">
- <xsl:with-param name="punctuation">
- <xsl:text> .</xsl:text>
- </xsl:with-param>
- <xsl:with-param name="chopString">
- <xsl:value-of select="."/>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:text>///</xsl:text>
- </xsl:for-each>
- </xsl:for-each>
-
- <xsl:for-each select="marc:datafield[@tag=520]">
- <xsl:for-each select="marc:subfield[@code='a']">
- <xsl:text> N2 - </xsl:text>
- <xsl:value-of select="."/>
- </xsl:for-each>
- </xsl:for-each>
-
- <xsl:for-each select="marc:datafield[@tag=650]|marc:datafield[@tag=651]">
- <xsl:for-each select="marc:subfield">
- <xsl:text> KW - </xsl:text>
- <xsl:value-of select="."/>
- </xsl:for-each>
- </xsl:for-each>
-
- <xsl:for-each select="marc:datafield[@tag=856]">
- <xsl:for-each select="marc:subfield[@code='u']">
- <xsl:text> UR - </xsl:text>
- <xsl:value-of select="."/>
- </xsl:for-each>
- </xsl:for-each>
-
- <xsl:for-each select="marc:datafield[@tag=020]|marc:datafield[@tag=022]">
- <xsl:text> SN - </xsl:text>
- <xsl:for-each select="marc:subfield[@code='a']">
- <xsl:value-of select="."/>
- </xsl:for-each>
- </xsl:for-each>
-
- <xsl:text> ER - </xsl:text>
- </xsl:template>
-</xsl:stylesheet>
-