<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" exclude-result-prefixes="marc" xmlns="http://www.loc.gov/MARC21/slim" xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> <collection xmlns="http://www.loc.gov/MARC21/slim" xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"> <xsl:for-each select="marc:collection"> <xsl:for-each select="marc:record"> <record type="Bibliographic"> <xsl:for-each select="marc:leader"> <leader> <!-- To calculate, but how? --> <xsl:variable name="recordLenght">00000</xsl:variable> <xsl:variable name="recordStatus"> <xsl:choose> <xsl:when test="substring(text(), 6, 1) = 'a'">c</xsl:when> <xsl:when test="substring(text(), 6, 1) = 'p'">c</xsl:when> <xsl:otherwise> <xsl:value-of select="substring(text(), 6, 1)"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="recordType"> <xsl:choose> <xsl:when test="substring(text(), 7, 1) = 'o'">m</xsl:when> <xsl:when test="substring(text(), 7, 1) = 'p'">m</xsl:when> <xsl:when test="substring(text(), 7, 1) = 't'">b</xsl:when> <xsl:otherwise> <xsl:value-of select="substring(text(), 7, 1)"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="bibLvl"> <xsl:choose> <xsl:when test="substring(text(), 8, 1) = 'b'">a</xsl:when> <xsl:when test="substring(text(), 8, 1) = 'd'">a</xsl:when> <xsl:otherwise> <xsl:value-of select="substring(text(), 8, 1)"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="controlType"> <xsl:value-of select="substring(text(), 9, 1)"/> </xsl:variable> <!-- To calculate, but how? --> <xsl:variable name="baod">02200</xsl:variable> <xsl:variable name="encLvl"> <xsl:choose> <xsl:when test="substring(text(), 18, 1) = '8'">2</xsl:when> <xsl:when test="substring(text(), 18, 1) = '5'">3</xsl:when> <xsl:when test="substring(text(), 18, 1) = '7'">3</xsl:when> <xsl:when test="substring(text(), 18, 1) = '2'">1</xsl:when> <xsl:when test="substring(text(), 18, 1) = '3'">1</xsl:when> <xsl:when test="substring(text(), 18, 1) = '4'">1</xsl:when> <xsl:otherwise> <xsl:value-of select="substring(text(), 18, 1)"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="dcf"> <xsl:choose> <xsl:when test="substring(text(), 19, 1) = ' '">n</xsl:when> <xsl:when test="substring(text(), 19, 1) = 'c'"> </xsl:when> <xsl:when test="substring(text(), 19, 1) = 'u'">i</xsl:when> <xsl:when test="substring(text(), 19, 1) = 'a'">n</xsl:when> <xsl:otherwise> <xsl:value-of select="' '"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:value-of select="concat($recordLenght, $recordStatus, $recordType, $bibLvl, ' ', $controlType, '22', $baod, $encLvl, $dcf, ' 450 ')" /> </leader> </xsl:for-each> <xsl:for-each select="marc:controlfield[@tag = '001']"> <controlfield tag="001"> <xsl:value-of select="text()"/> </controlfield> </xsl:for-each> <xsl:for-each select="marc:controlfield[@tag = '005']"> <controlfield tag="005"> <xsl:value-of select="text()"/> </controlfield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '020']"> <datafield tag="010"> <xsl:attribute name="ind1"> <xsl:value-of select="@ind1"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="@ind2"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <!-- this code code removes all non-numeric characters --> <xsl:value-of select="translate(text(),translate(text(),'0123456789-',''),'')"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'b']"> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'c']"> <subfield code="d"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="z"> <xsl:value-of select="translate(text(),translate(text(),'0123456789-',''),'')"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '022']"> <datafield tag="011"> <xsl:attribute name="ind1"> <xsl:value-of select="@ind1"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="@ind2"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <!--<xsl:for-each select="marc:subfield[@code='?']"><subfield code="b"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> <!--<xsl:for-each select="marc:subfield[@code='?']"><subfield code="d"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> <xsl:for-each select="marc:subfield[@code = 'y']"> <subfield code="z"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <!--<xsl:for-each select="marc:subfield[@code='z']"><subfield code="?"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> </datafield> </xsl:for-each> <!--<xsl:for-each select="marc:datafield[@tag='024']"> <datafield tag="012"> <xsl:attribute name="ind1"><xsl:value-of select="@ind1" /></xsl:attribute> <xsl:attribute name="ind2"><xsl:value-of select="@ind2" /></xsl:attribute> <xsl:for-each select="marc:subfield[@code='a']"><subfield code="?"><xsl:value-of select="text()" /></subfield></xsl:for-each> <xsl:for-each select="marc:subfield[@code='b']"><subfield code="?"><xsl:value-of select="text()" /></subfield></xsl:for-each> <xsl:for-each select="marc:subfield[@code='z']"><subfield code="?"><xsl:value-of select="text()" /></subfield></xsl:for-each> </datafield> </xsl:for-each>--> <xsl:for-each select="marc:datafield[@tag = '015']"> <datafield tag="020"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = '2']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> <subfield code="z"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '017']"> <datafield tag="021"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'b']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '086']"> <datafield tag="022"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = '2']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="z"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '035']"> <xsl:if test="marc:subfield[@code = 'a' or @code = '9' or @code = 'z']"> <datafield tag="035" ind1=" " ind2=" "> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = '9']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="z"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:if> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '030']"> <datafield tag="040"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="z"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '028']"> <datafield tag="071"> <xsl:attribute name="ind1"> <xsl:value-of select="@ind1"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:choose> <xsl:when test="@ind2 = 0">0</xsl:when> <xsl:otherwise>1</xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'b']"> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:controlfield[@tag = '008']"> <!-- FIXME: Dummy indicators --> <datafield tag="100"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <subfield code="a"> <xsl:variable name="deof"> <xsl:choose> <xsl:when test="substring(text(), 1, 2) < 70"> <xsl:value-of select="concat('20', substring(text(), 1, 6))"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="concat('19', substring(text(), 1, 6))"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="typeofDate"> <xsl:choose> <xsl:when test="substring(text(), 7, 1) = 'c'">a</xsl:when> <xsl:when test="substring(text(), 7, 1) = 'd'">b</xsl:when> <xsl:when test="substring(text(), 7, 1) = 'u'">c</xsl:when> <xsl:when test="substring(text(), 7, 1) = 's'">d</xsl:when> <xsl:when test="substring(text(), 7, 1) = 'r'">e</xsl:when> <xsl:when test="substring(text(), 7, 1) = 'q'">f</xsl:when> <xsl:when test="substring(text(), 7, 1) = 'm'">g</xsl:when> <xsl:when test="substring(text(), 7, 1) = 't'">h</xsl:when> <xsl:when test="substring(text(), 7, 1) = 'p'">i</xsl:when> <xsl:when test="substring(text(), 7, 1) = 'e'">j</xsl:when> <xsl:when test="substring(text(), 7, 1) = 'b'">u</xsl:when> <xsl:otherwise> <xsl:value-of select="' '"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="d1" select="substring(text(), 8, 4)"/> <xsl:variable name="d2" select="substring(text(), 12, 4)"/> <xsl:variable name="targetAudience"> <xsl:choose> <xsl:when test="substring(text(), 23, 1) = 'a'">b||</xsl:when> <xsl:when test="substring(text(), 23, 1) = 'b'">c||</xsl:when> <xsl:when test="substring(text(), 23, 1) = 'j'">a||</xsl:when> <xsl:when test="substring(text(), 23, 1) = 'c'">d||</xsl:when> <xsl:when test="substring(text(), 23, 1) = 'd'">e||</xsl:when> <xsl:when test="substring(text(), 23, 1) = 'e'">k||</xsl:when> <xsl:when test="substring(text(), 23, 1) = 'g'">m||</xsl:when> <xsl:when test="substring(text(), 23, 1) = '|'">|||</xsl:when> <xsl:when test="substring(text(), 23, 1) = ' '">u||</xsl:when> <xsl:otherwise>u||</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="governmentPublication"> <xsl:choose> <xsl:when test="substring(text(), 29, 1) = 'f'">a</xsl:when> <xsl:when test="substring(text(), 29, 1) = 's'">b</xsl:when> <xsl:when test="substring(text(), 29, 1) = 'l'">d</xsl:when> <xsl:when test="substring(text(), 29, 1) = 'c'">e</xsl:when> <xsl:when test="substring(text(), 29, 1) = 'i'">f</xsl:when> <xsl:when test="substring(text(), 29, 1) = 'z'">g</xsl:when> <xsl:when test="substring(text(), 29, 1) = 'o'">h</xsl:when> <xsl:when test="substring(text(), 29, 1) = 'u'">u</xsl:when> <xsl:when test="substring(text(), 29, 1) = ' '">y</xsl:when> <xsl:when test="substring(text(), 29, 1) = 'z'">z</xsl:when> <xsl:when test="substring(text(), 29, 1) = '|'">|</xsl:when> <xsl:otherwise>y</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="mrc"> <xsl:choose> <xsl:when test="substring(text(), 39, 1) = ' '">0</xsl:when> <xsl:otherwise>1</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="loc"> <xsl:choose> <xsl:when test="datafield[@tag = '040']/subfield[@code = 'b']"> <xsl:value-of select="marc:datafield[@tag = '040']/subfield[@code = 'b']" /> </xsl:when> <xsl:otherwise> <!-- Expected default for MARC21 --> <xsl:value-of select="'eng'"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="tc"> <xsl:choose> <xsl:when test="substring(text(), 39, 1) = 'o'" >b</xsl:when> <xsl:otherwise>y</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="coding"> <xsl:choose> <xsl:when test="substring(../marc:leader, 10, 1) = 'a'">50 </xsl:when> <!-- what if MARC-8 encoding, and not UTF8? --> <xsl:otherwise> <xsl:value-of select="' '"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="acs"> <xsl:value-of select="' '"/> </xsl:variable> <xsl:variable name="scriptofTitle"> <xsl:value-of select="' '"/> </xsl:variable> <xsl:value-of select="concat($deof, $typeofDate, $d1, $d2, $targetAudience, $governmentPublication, $mrc, $loc, $tc, $coding, $acs, $scriptofTitle)" /> </subfield> </datafield> <datafield tag="105"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <subfield code="a"> <xsl:variable name="ic"> <xsl:value-of select="substring(text(), 19, 4)"/> </xsl:variable> <xsl:variable name="focc"> <xsl:value-of select="translate (substring(text(), 25, 4), 'bciaderyspltnwfgv', 'abcdefghijnprnzzz')"/> </xsl:variable> <xsl:variable name="cc"> <xsl:value-of select="substring(text(), 30, 1)"/> </xsl:variable> <xsl:variable name="fi"> <xsl:value-of select="substring(text(), 31, 1)"/> </xsl:variable> <xsl:variable name="ii"> <xsl:value-of select="substring(text(), 32, 1)"/> </xsl:variable> <xsl:variable name="lc"> <xsl:choose> <xsl:when test="substring(text(), 34, 1) = '1'" >a</xsl:when> <xsl:otherwise>|</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="bc"> <xsl:choose> <xsl:when test="substring(text(), 35, 1) = ' '" >y</xsl:when> <xsl:otherwise> <xsl:value-of select="substring(text(), 35, 1)"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:value-of select="concat($ic, $focc, $cc, $fi, $ii, $lc, $bc)"/> </subfield> </datafield> <datafield tag="106"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <subfield code="a"> <xsl:choose> <xsl:when test="substring(text(), 24, 1) = ' '">y</xsl:when> <xsl:otherwise> <xsl:value-of select="substring(text(), 24, 1)"/> </xsl:otherwise> </xsl:choose> </subfield> </datafield> <xsl:choose> <xsl:when test="substring(../marc:leader, 8, 1) = 's'"> <datafield tag="110"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <subfield code="a"> <xsl:variable name="tos"> <xsl:choose> <xsl:when test="substring(text(), 22, 1) = 'p'" >a</xsl:when> <xsl:when test="substring(text(), 22, 1) = 'm'" >b</xsl:when> <xsl:when test="substring(text(), 22, 1) = 'n'" >c</xsl:when> <xsl:when test="substring(text(), 22, 1) = ' '" >z</xsl:when> <xsl:when test="substring(text(), 22, 1) = '|'" >|</xsl:when> <xsl:otherwise>z</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="foi"> <xsl:choose> <xsl:when test="substring(text(), 19, 1) = 'd'" >a</xsl:when> <xsl:when test="substring(text(), 19, 1) = 'c'" >b</xsl:when> <xsl:when test="substring(text(), 19, 1) = 'w'" >c</xsl:when> <xsl:when test="substring(text(), 19, 1) = 'e'" >d</xsl:when> <xsl:when test="substring(text(), 19, 1) = 's'" >e</xsl:when> <xsl:when test="substring(text(), 19, 1) = 'm'" >f</xsl:when> <xsl:when test="substring(text(), 19, 1) = 'b'" >g</xsl:when> <xsl:when test="substring(text(), 19, 1) = 'q'" >h</xsl:when> <xsl:when test="substring(text(), 19, 1) = 't'" >i</xsl:when> <xsl:when test="substring(text(), 19, 1) = 'f'" >j</xsl:when> <xsl:when test="substring(text(), 19, 1) = 'a'" >k</xsl:when> <xsl:when test="substring(text(), 19, 1) = 'g'" >l</xsl:when> <xsl:when test="substring(text(), 19, 1) = 'h'" >m</xsl:when> <xsl:when test="substring(text(), 19, 1) = 'i'" >n</xsl:when> <xsl:when test="substring(text(), 19, 1) = 'j'" >o</xsl:when> <xsl:when test="substring(text(), 19, 1) = 'u'" >u</xsl:when> <xsl:when test="substring(text(), 19, 1) = ' '" >y</xsl:when> <xsl:when test="substring(text(), 19, 1) = 'z'" >z</xsl:when> <xsl:when test="substring(text(), 19, 1) = '|'" >|</xsl:when> <xsl:when test="substring(text(), 19, 1) = 'n'" >|</xsl:when> <xsl:otherwise>y</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="r"> <xsl:choose> <xsl:when test="substring(text(), 20, 1) = 'r'" >a</xsl:when> <xsl:when test="substring(text(), 20, 1) = 'n'" >b</xsl:when> <xsl:when test="substring(text(), 20, 1) = 'u'" >u</xsl:when> <xsl:when test="substring(text(), 20, 1) = 'x'" >y</xsl:when> <xsl:when test="substring(text(), 20, 1) = '|'" >|</xsl:when> <xsl:when test="substring(text(), 20, 1) = ' '" >|</xsl:when> <xsl:otherwise>u</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="tomc"> <xsl:choose> <xsl:when test="substring(text(), 25, 1) = 'b'" >a</xsl:when> <xsl:when test="substring(text(), 25, 1) = 'c'" >b</xsl:when> <xsl:when test="substring(text(), 25, 1) = 'i'" >c</xsl:when> <xsl:when test="substring(text(), 25, 1) = 'a'" >d</xsl:when> <xsl:when test="substring(text(), 25, 1) = 'd'" >e</xsl:when> <xsl:when test="substring(text(), 25, 1) = 'e'" >f</xsl:when> <xsl:when test="substring(text(), 25, 1) = 'r'" >g</xsl:when> <xsl:when test="substring(text(), 25, 1) = 'y'" >h</xsl:when> <xsl:when test="substring(text(), 25, 1) = 's'" >i</xsl:when> <xsl:when test="substring(text(), 25, 1) = 'p'" >j</xsl:when> <xsl:when test="substring(text(), 25, 1) = 'o'" >k</xsl:when> <xsl:when test="substring(text(), 25, 1) = 'l'" >l</xsl:when> <xsl:when test="substring(text(), 25, 1) = 'w'" >m</xsl:when> <xsl:when test="substring(text(), 25, 1) = 'g'" >n</xsl:when> <xsl:when test="substring(text(), 25, 1) = 'v'" >o</xsl:when> <xsl:when test="substring(text(), 25, 1) = 'h'" >p</xsl:when> <xsl:when test="substring(text(), 25, 1) = 'n'" >r</xsl:when> <xsl:when test="substring(text(), 25, 1) = ' '" >z</xsl:when> <xsl:when test="substring(text(), 25, 1) = '|'" >|</xsl:when> <xsl:otherwise>z</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="nocc"> <xsl:value-of select="substring(text(), 26, 3)"/> </xsl:variable> <xsl:variable name="ci"> <xsl:value-of select="substring(text(), 30, 1)"/> </xsl:variable> <xsl:variable name="tpa">|</xsl:variable> <xsl:variable name="iac">|</xsl:variable> <xsl:variable name="cia">|</xsl:variable> <xsl:value-of select="concat($tos, $foi, $r, $tomc, $nocc, $ci, $tpa, $iac, $cia)" /> </subfield> </datafield> </xsl:when> </xsl:choose> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '041']"> <datafield tag="101"> <xsl:attribute name="ind1"> <xsl:value-of select="@ind1"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'b']"> <subfield code="d"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'd']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'e']"> <subfield code="h"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'f']"> <subfield code="e"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="i"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'h']"> <subfield code="c"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '044']"> <datafield tag="102"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <!--<xsl:for-each select="marc:subfield[@code='b']"><subfield code="?"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '245']"> <datafield tag="200"> <xsl:attribute name="ind1"> <xsl:value-of select="@ind1"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> <xsl:if test="contains(text(), ' = ')"> <subfield code="d"> <xsl:value-of select="concat('=', substring-after(text(), ' ='))" /> </subfield> </xsl:if> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'b']"> <subfield code="e"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'c']"> <xsl:choose> <xsl:when test="contains(text(), ' ; ')"> <subfield code="f"> <xsl:value-of select="substring-before(text(), ' ; ')"/> </subfield> <xsl:call-template name="tokenizeSubfield"> <xsl:with-param name="list" select="substring-after(text(), ' ; ')"/> <xsl:with-param name="delimiter" select="' ; '"/> <xsl:with-param name="code" select="'g'"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <subfield code="f"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:otherwise> </xsl:choose> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'n']"> <subfield code="h"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'p']"> <subfield code="i"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> <!-- FIXME --> <!-- <datafield tag="204"> <xsl:attribute name="ind1"><xsl:value-of select="' '" /></xsl:attribute> <xsl:attribute name="ind2"><xsl:value-of select="' '" /></xsl:attribute> <xsl:for-each select="marc:subfield[@code='h']"><subfield code="a"><xsl:value-of select="text()" /></subfield></xsl:for-each> </datafield> --> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '250']"> <datafield tag="205"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '254']"> <datafield tag="208"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '260']"> <datafield tag="210"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'b']"> <subfield code="c"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'c']"> <subfield code="d"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'e']"> <subfield code="e"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'f']"> <subfield code="g"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="h"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '263']"> <datafield tag="211"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '300']"> <datafield tag="215"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'b']"> <subfield code="c"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'c']"> <subfield code="d"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'e']"> <subfield code="e"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '490']"> <datafield tag="225"> <xsl:attribute name="ind1"> <xsl:value-of select="@ind1"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'v']"> <subfield code="v"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '256']"> <datafield tag="230"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '500']"> <xsl:if test="marc:subfield[contains('a', @code)]"> <datafield tag="300"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:if> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '525']"> <datafield tag="300"> <xsl:attribute name="ind1"> <xsl:value-of select="@ind1"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="@ind2"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '555']"> <datafield tag="300"> <xsl:attribute name="ind1"> <xsl:value-of select="@ind1"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="@ind2"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '504']"> <datafield tag="320" ind1=" " ind2=" "> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '505']"> <datafield tag="327"> <xsl:attribute name="ind1"> <xsl:value-of select="translate (@ind1, '0128', '102 ')" /> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:choose> <xsl:when test="@ind2 = 0">1</xsl:when> <xsl:otherwise> <xsl:value-of select="' '"/> </xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'r']"> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 't']"> <subfield code="c"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="p"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'u']"> <subfield code="u"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '502']"> <datafield tag="328"> <xsl:attribute name="ind1"> <xsl:value-of select="@ind1"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="@ind2"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'b']"> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'c']"> <subfield code="e"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'd']"> <subfield code="d"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="z"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '520']"> <datafield tag="330"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '524']"> <datafield tag="332"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '521']"> <datafield tag="333"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '500']"> <xsl:choose> <xsl:when test="contains(marc:subfield[@code = 'a'], 'file')"> <datafield tag="336"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:when> </xsl:choose> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '538']"> <datafield tag="337"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '037']"> <xsl:if test="marc:subfield[contains('abcf', @code)]"> <datafield tag="345"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'b']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'f']"> <subfield code="c"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'c']"> <subfield code="d"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:if> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '760']"> <datafield tag="410"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="translate(@ind1, '10', '01')"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'w']"> <subfield code="3"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 't']"> <subfield code="t"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="v"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '762']"> <datafield tag="411"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="translate(@ind1, '10', '01')"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'w']"> <subfield code="3"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 't']"> <subfield code="t"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="v"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '770']"> <datafield tag="421"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="translate(@ind1, '10', '01')"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'w']"> <subfield code="3"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 't']"> <subfield code="t"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="v"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '772']"> <datafield tag="422"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="translate(@ind1, '10', '01')"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'w']"> <subfield code="3"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 't']"> <subfield code="t"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="v"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '777']"> <datafield tag="423"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="translate(@ind1, '10', '01')"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'w']"> <subfield code="3"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 't']"> <subfield code="t"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="v"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '780']"> <datafield tag="430"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="translate(@ind1, '10', '01')"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'w']"> <subfield code="3"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 't']"> <subfield code="t"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="v"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '785']"> <datafield tag="440"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="translate(@ind1, '10', '01')"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'w']"> <subfield code="3"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 't']"> <subfield code="t"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="v"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '775']"> <datafield tag="451"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="translate(@ind1, '10', '01')"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'w']"> <subfield code="3"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 't']"> <subfield code="t"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="v"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '776']"> <xsl:if test="marc:subfield[contains('wtgxz', @code)]"> <datafield tag="452"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="translate(@ind1, '10', '01')"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'w']"> <subfield code="3"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 't']"> <subfield code="t"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="v"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:if> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '767']"> <datafield tag="453"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="translate(@ind1, '10', '01')"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'w']"> <subfield code="3"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 't']"> <subfield code="t"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="v"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '765']"> <datafield tag="454"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="translate(@ind1, '10', '01')"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'w']"> <subfield code="3"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 't']"> <subfield code="t"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="v"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '787']"> <datafield> <xsl:choose> <xsl:when test="contains(subfield[@code = 'i'], 'Reproduction of:')"> <xsl:attribute name="tag"> <xsl:value-of select="455" /> </xsl:attribute> </xsl:when> <xsl:when test="contains(subfield[@code = 'i'], 'Reproduced as:')"> <xsl:attribute name="tag"> <xsl:value-of select="456" /> </xsl:attribute> </xsl:when> <xsl:when test="contains(subfield[@code = 'i'], 'Item reviewed:')"> <xsl:attribute name="tag"> <xsl:value-of select="470" /> </xsl:attribute> </xsl:when> <xsl:otherwise> <xsl:attribute name="tag"> <xsl:value-of select="488" /> </xsl:attribute> </xsl:otherwise> </xsl:choose> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="translate(@ind1, '10', '01')"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'w']"> <subfield code="3"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 't']"> <subfield code="t"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="v"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '774']"> <datafield> <xsl:choose> <xsl:when test="subfield[@code = 'i']"> <xsl:attribute name="tag"> <xsl:value-of select="462" /> </xsl:attribute> </xsl:when> <xsl:otherwise> <xsl:attribute name="tag"> <xsl:value-of select="461" /> </xsl:attribute> </xsl:otherwise> </xsl:choose> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="translate(@ind1, '10', '01')"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'w']"> <subfield code="3"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 't']"> <subfield code="t"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="v"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '773']"> <datafield tag="463"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="translate(@ind1, '10', '01')"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'w']"> <subfield code="3"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 't']"> <subfield code="t"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="v"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '774']"> <datafield tag="464"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="translate(@ind1, '10', '01')"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'w']"> <subfield code="3"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 't']"> <subfield code="t"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="v"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '130']"> <xsl:if test="marc:subfield[contains('adfghklmnoprs0', @code)]"> <datafield tag="500"> <xsl:attribute name="ind1"> <xsl:value-of select="@ind1"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="1"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'd']"> <subfield code="n"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'f']"> <subfield code="k"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="n"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'h']"> <subfield code="b"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'k']"> <subfield code="l"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'l']"> <subfield code="m"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'm']"> <subfield code="r"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'n']"> <subfield code="h"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'o']"> <subfield code="w"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'p']"> <subfield code="i"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'r']"> <subfield code="u"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 's']"> <subfield code="q"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = '0']"> <subfield code="3"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:if> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '240']"> <datafield tag="500"> <xsl:attribute name="ind1"> <xsl:value-of select="@ind1"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="0"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'd']"> <subfield code="n"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'f']"> <subfield code="k"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="n"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'k']"> <subfield code="j"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'l']"> <subfield code="m"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'm']"> <subfield code="r"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'n']"> <subfield code="h"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'o']"> <subfield code="w"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'p']"> <subfield code="i"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'r']"> <subfield code="u"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 's']"> <subfield code="q"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <!-- Tag 730 is not on UNIMARC to MARC 21 Conversion Specifications --> <xsl:for-each select="marc:datafield[@tag = '730']"> <datafield tag="500"> <xsl:attribute name="ind1"> <xsl:value-of select="@ind1"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="@ind2"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'd']"> <subfield code="n"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'f']"> <subfield code="k"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="n"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'k']"> <subfield code="j"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'l']"> <subfield code="m"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'm']"> <subfield code="r"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'n']"> <subfield code="h"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'o']"> <subfield code="w"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'p']"> <subfield code="i"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'r']"> <subfield code="u"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 's']"> <subfield code="q"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '243']"> <datafield tag="501"> <xsl:attribute name="ind1">1</xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'k']"> <subfield code="e"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'f']"> <subfield code="k"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'l']"> <subfield code="m"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '247']"> <datafield tag="520"> <xsl:attribute name="ind1"> <xsl:value-of select="@ind1"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'b']"> <subfield code="e"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'n']"> <subfield code="h"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'p']"> <subfield code="i"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="n"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'f']"> <subfield code="j"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '222']"> <datafield tag="530"> <xsl:attribute name="ind1">0</xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'b']"> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '210']"> <datafield tag="531"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'b']"> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '246']"> <datafield tag="532"> <xsl:attribute name="ind1"> <xsl:value-of select="@ind1"/> </xsl:attribute> <xsl:attribute name="ind2">0</xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '242']"> <datafield tag="541"> <xsl:attribute name="ind1"> <xsl:value-of select="@ind1"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'b']"> <subfield code="e"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'n']"> <subfield code="h"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'p']"> <subfield code="i"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'y']"> <subfield code="z"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '773']"> <datafield tag="545"> <xsl:attribute name="ind1"> <xsl:choose> <xsl:when test="@ind1 = 0">1</xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 't']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '600']"> <xsl:choose> <xsl:when test="@ind1 != 3" > <datafield tag="600"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:choose> <xsl:when test="@ind1 = 0">0</xsl:when> <xsl:otherwise>1</xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:call-template name="convertSubjectHeading"> <xsl:with-param name="ind" select="@ind2"/> </xsl:call-template> <xsl:for-each select="marc:subfield[@code = 'a']"> <xsl:choose> <xsl:when test="contains(text(), ', ')"> <subfield code="a"> <xsl:value-of select="substring-before(text(), ', ')"/> </subfield> <subfield code="b"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="substring-after(text(), ', ')"/> </xsl:call-template> </subfield> </xsl:when> <xsl:otherwise> <subfield code="a"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:otherwise> </xsl:choose> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'c']"> <subfield code="c"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'b']"> <subfield code="d"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'd']"> <subfield code="f"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 't']"> <subfield code="t"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'y']"> <subfield code="z"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = '2']"> <subfield code="2"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:when> <xsl:when test="@ind1 = 3" > <datafield tag="602" ind1=" " ind2=" "> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 't']"> <subfield code="t"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'y']"> <subfield code="z"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = '2']"> <subfield code="2"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:when> </xsl:choose> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '610']"> <datafield tag="601"> <xsl:attribute name="ind1"> <xsl:value-of select="0"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="@ind1"/> </xsl:attribute> <xsl:call-template name="convertSubjectHeading"> <xsl:with-param name="ind" select="@ind2"/> </xsl:call-template> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> <subfield code="c"> <xsl:value-of select="substring-before(substring-after(text(), '('), ')')" /> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'b']"> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'c']"> <subfield code="e"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'd']"> <subfield code="f"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'e']"> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <!--<xsl:for-each select="marc:subfield[@code='f']"><subfield code="?"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> <!--<xsl:for-each select="marc:subfield[@code='g']"><subfield code="?"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> <xsl:for-each select="marc:subfield[@code = 'k']"> <subfield code="j"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <!--<xsl:for-each select="marc:subfield[@code='l']"><subfield code="?"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> <!--<xsl:for-each select="marc:subfield[@code='m']"><subfield code="?"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> <xsl:for-each select="marc:subfield[@code = 'n']"> <subfield code="d"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <!--<xsl:for-each select="marc:subfield[@code='o']"><subfield code="?"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> <!--<xsl:for-each select="marc:subfield[@code='p']"><subfield code="?"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> <!--<xsl:for-each select="marc:subfield[@code='r']"><subfield code="?"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> <!--<xsl:for-each select="marc:subfield[@code='s']"><subfield code="?"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> <!--<xsl:for-each select="marc:subfield[@code='t']"><subfield code="?"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> <!--<xsl:for-each select="marc:subfield[@code='u']"><subfield code="?"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'y']"> <subfield code="z"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <!--<xsl:for-each select="marc:subfield[@code='?']"><subfield code="3"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '611']"> <datafield tag="601"> <xsl:attribute name="ind1"> <xsl:value-of select="1"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="@ind1"/> </xsl:attribute> <xsl:call-template name="convertSubjectHeading"> <xsl:with-param name="ind" select="@ind2"/> </xsl:call-template> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> <subfield code="c"> <xsl:value-of select="substring-before(substring-after(text(), '('), ')')" /> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'c']"> <subfield code="e"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'd']"> <subfield code="f"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'e']"> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <!--<xsl:for-each select="marc:subfield[@code='f']"><subfield code="?"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> <!--<xsl:for-each select="marc:subfield[@code='g']"><subfield code="?"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> <xsl:for-each select="marc:subfield[@code = 'k']"> <subfield code="j"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <!--<xsl:for-each select="marc:subfield[@code='l']"><subfield code="?"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> <xsl:for-each select="marc:subfield[@code = 'n']"> <subfield code="d"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <!--<xsl:for-each select="marc:subfield[@code='p']"><subfield code="?"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> <!--<xsl:for-each select="marc:subfield[@code='s']"><subfield code="?"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> <xsl:for-each select="marc:subfield[@code = 't']"> <subfield code="t"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <!--<xsl:for-each select="marc:subfield[@code='u']"><subfield code="?"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'y']"> <subfield code="z"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <!--<xsl:for-each select="marc:subfield[@code='?']"><subfield code="3"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '630']"> <datafield tag="605" ind1=" " ind2=" "> <xsl:call-template name="convertSubjectHeading"> <xsl:with-param name="ind" select="@ind2"/> </xsl:call-template> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'n']"> <subfield code="h"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'p']"> <subfield code="i"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'f']"> <subfield code="k"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'k']"> <subfield code="l"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'l']"> <subfield code="m"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'g']"> <subfield code="n"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 's']"> <subfield code="q"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'r']"> <subfield code="r"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'n']"> <subfield code="s"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'o']"> <subfield code="t"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'r']"> <subfield code="u"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'y']"> <subfield code="z"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = '2']"> <subfield code="2"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '650']"> <datafield tag="606" ind2=" "> <xsl:attribute name="ind1"> <xsl:value-of select="@ind1"/> </xsl:attribute> <xsl:call-template name="convertSubjectHeading"> <xsl:with-param name="ind" select="@ind2"/> </xsl:call-template> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'v']"> <subfield code="j"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'y']"> <subfield code="z"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = '2']"> <subfield code="2"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '651']"> <datafield tag="607" ind1=" " ind2=" "> <xsl:call-template name="convertSubjectHeading"> <xsl:with-param name="ind" select="@ind2"/> </xsl:call-template> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="substring-before(text(), ', ')"/> </subfield> <subfield code="b"> <xsl:value-of select="substring-after(text(), ', ')"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'x']"> <subfield code="x"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'z']"> <subfield code="y"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'y']"> <subfield code="z"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = '2']"> <subfield code="2"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '653']"> <datafield tag="610"> <xsl:attribute name="ind1"> <xsl:choose> <xsl:when test="@ind1 = ' '">0</xsl:when> <xsl:otherwise> <xsl:value-of select="@ind1"/> </xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '752']"> <datafield tag="620"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield"> <subfield code="@code"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '753']"> <datafield tag="626"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield"> <subfield code="@code"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '043']"> <xsl:for-each select="marc:subfield[@code = 'a']"> <datafield tag="660" ind1=" " ind2=" "> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </datafield> </xsl:for-each> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '045']"> <xsl:if test="marc:subfield[@code = 'a']"> <datafield tag="661"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:if> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '886']"> <datafield tag="670"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'b']"> <subfield code="c"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = '2']"> <subfield code="d"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '080']"> <datafield tag="675"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '082']"> <datafield tag="676"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = '2']"> <subfield code="v"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '050']"> <datafield tag="680"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'b']"> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '084']"> <datafield tag="686" ind1=" " ind2=" "> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'b']"> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = '2']"> <subfield code="2"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '100']"> <xsl:choose> <xsl:when test="@ind1 != 3" > <datafield tag="700" ind1=" "> <xsl:call-template name="convertPersonalNameSubfields"> <xsl:with-param name="field" select="."/> </xsl:call-template> </datafield> </xsl:when> </xsl:choose> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '700']"> <datafield tag="701" ind1=" "> <xsl:choose> <xsl:when test="@ind1 != 3" > <xsl:call-template name="convertPersonalNameSubfields"> <xsl:with-param name="field" select="."/> </xsl:call-template> </xsl:when> </xsl:choose> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '110']"> <datafield tag="710"> <xsl:attribute name="ind1">0</xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="@ind2"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'b']"> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'n']"> <subfield code="d"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'c']"> <subfield code="e"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'd']"> <subfield code="f"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'u']"> <subfield code="p"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = '4']"> <subfield code="4"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '111']"> <datafield tag="710"> <xsl:attribute name="ind1">1</xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="@ind2"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'e']"> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'n']"> <subfield code="d"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'c']"> <subfield code="e"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'd']"> <subfield code="f"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'u']"> <subfield code="p"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = '4']"> <subfield code="4"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '710']"> <datafield tag="711"> <xsl:attribute name="ind1">0</xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="@ind2"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'b']"> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'n']"> <subfield code="d"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'c']"> <subfield code="e"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'd']"> <subfield code="f"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'u']"> <subfield code="p"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = '4']"> <subfield code="4"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '711']"> <datafield tag="711"> <xsl:attribute name="ind1">1</xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="@ind2"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'e']"> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'n']"> <subfield code="d"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'c']"> <subfield code="e"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'd']"> <subfield code="f"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'u']"> <subfield code="p"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = '4']"> <subfield code="4"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '100']"> <xsl:choose> <xsl:when test="@ind1 = 3" > <datafield tag="720" ind1=" " ind2=" "> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'd']"> <subfield code="f"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = '4']"> <subfield code="4"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:when> </xsl:choose> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '700']"> <xsl:choose> <xsl:when test="@ind1 = 3" > <datafield tag="721" ind1=" " ind2=" "> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'd']"> <subfield code="f"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = '4']"> <subfield code="4"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:when> </xsl:choose> </xsl:for-each> <xsl:for-each select="marc:datafield[@tag = '040']"> <xsl:for-each select="marc:subfield[@code = 'a']"> <datafield tag="801" ind1=" " ind2="0"> <subfield code="a"> <xsl:call-template name="getCountryFromMarcOrgCode"> <xsl:with-param name="marcOrgCode" select="text()" /> </xsl:call-template> </subfield> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </datafield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'c']"> <datafield tag="801" ind1=" " ind2="1"> <subfield code="a"> <xsl:call-template name="getCountryFromMarcOrgCode"> <xsl:with-param name="marcOrgCode" select="text()" /> </xsl:call-template> </subfield> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </datafield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'd']"> <datafield tag="801" ind1=" " ind2="2"> <subfield code="a"> <xsl:call-template name="getCountryFromMarcOrgCode"> <xsl:with-param name="marcOrgCode" select="text()" /> </xsl:call-template> </subfield> <subfield code="b"> <xsl:value-of select="text()"/> </subfield> </datafield> </xsl:for-each> </xsl:for-each> <xsl:for-each select="marc:controlfield[@tag = '008']"> <xsl:choose> <xsl:when test="substring(../marc:leader, 8, 1) = 's'"> <datafield tag="802"> <xsl:attribute name="ind1"> <xsl:value-of select="' '"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="' '"/> </xsl:attribute> <subfield code="a"> <xsl:choose> <xsl:when test="substring(text(), 21, 1) = '0'" >00</xsl:when> <xsl:when test="substring(text(), 21, 1) = '1'" >01</xsl:when> <xsl:when test="substring(text(), 21, 1) = '4'" >04</xsl:when> <xsl:when test="substring(text(), 21, 1) = '#'" >uu</xsl:when> <xsl:when test="substring(text(), 21, 1) = 'z'" >zz</xsl:when> <xsl:otherwise>zz</xsl:otherwise> </xsl:choose> </subfield> </datafield> </xsl:when> </xsl:choose> </xsl:for-each> <xsl:call-template name="datafield856" /> <xsl:for-each select="marc:datafield[@tag = '590']"> <datafield tag="900"> <xsl:attribute name="ind1"> <xsl:value-of select="@ind1"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="@ind2"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <subfield code="a"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> <xsl:call-template name="selects"> <xsl:with-param name="i">900</xsl:with-param> <xsl:with-param name="count">1000</xsl:with-param> </xsl:call-template> </record> </xsl:for-each> </xsl:for-each> </collection> </xsl:template> <xsl:template name="convertPersonalNameSubfields"> <xsl:param name="field"></xsl:param> <xsl:attribute name="ind2"> <xsl:value-of select="@ind1"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code = 'a']"> <xsl:choose> <xsl:when test="contains(text(), ', ')"> <subfield code="a" xmlns="http://www.loc.gov/MARC21/slim"> <xsl:value-of select="substring-before(text(), ', ')"/> </subfield> <subfield code="b" xmlns="http://www.loc.gov/MARC21/slim"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="substring-after(text(), ', ')"/> </xsl:call-template> </subfield> </xsl:when> <xsl:otherwise> <subfield code="a" xmlns="http://www.loc.gov/MARC21/slim"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:otherwise> </xsl:choose> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'b']"> <subfield code="d" xmlns="http://www.loc.gov/MARC21/slim"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'c']"> <subfield code="c" xmlns="http://www.loc.gov/MARC21/slim"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'd']"> <subfield code="f" xmlns="http://www.loc.gov/MARC21/slim"> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="text()"/> </xsl:call-template> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'e']"> <subfield code="4" xmlns="http://www.loc.gov/MARC21/slim"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'q']"> <subfield code="g" xmlns="http://www.loc.gov/MARC21/slim"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <xsl:for-each select="marc:subfield[@code = 'u']"> <subfield code="p" xmlns="http://www.loc.gov/MARC21/slim"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> <!--<xsl:for-each select="marc:subfield[@code='?']"><subfield code="3"><xsl:value-of select="text()" /></subfield></xsl:for-each>--> <xsl:for-each select="marc:subfield[@code = '4']"> <subfield code="4" xmlns="http://www.loc.gov/MARC21/slim"> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </xsl:template> <xsl:template name="tokenizeSubfield"> <!--passed template parameter --> <xsl:param name="list"/> <xsl:param name="delimiter"/> <xsl:param name="code"/> <xsl:choose> <xsl:when test="contains($list, $delimiter) and substring-after($list,$delimiter) != ''"> <subfield xmlns="http://www.loc.gov/MARC21/slim"> <xsl:attribute name="code"> <xsl:value-of select="$code" /> </xsl:attribute> <!-- get everything in front of the first delimiter --> <xsl:value-of select="substring-before($list,$delimiter)"/> </subfield> <xsl:call-template name="tokenizeSubfield"> <!-- store anything left in another variable --> <xsl:with-param name="list" select="normalize-space(substring-after($list,$delimiter))"/> <xsl:with-param name="delimiter" select="$delimiter"/> <xsl:with-param name="code" select="$code"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:choose> <xsl:when test="$list = ''"/> <xsl:otherwise> <subfield xmlns="http://www.loc.gov/MARC21/slim"> <xsl:attribute name="code"> <xsl:value-of select="$code" /> </xsl:attribute> <xsl:call-template name="removeEndPuctuation"> <xsl:with-param name="text" select="$list"/> </xsl:call-template> </subfield> </xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="removeEndPuctuation"> <xsl:param name="text"/> <xsl:choose> <xsl:when test="string-length(translate(substring($text, string-length($text)), ' ,.:;/', '')) = 0"> <xsl:value-of select="normalize-space(substring($text, 1, string-length($text)-1))"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$text"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="convertSubjectHeading"> <xsl:param name="ind"/> <xsl:choose> <xsl:when test="$ind = 0"> <subfield code="2" xmlns="http://www.loc.gov/MARC21/slim"> <xsl:value-of select="'lc'"/> </subfield> </xsl:when> <xsl:when test="$ind = 1"> <subfield code="2" xmlns="http://www.loc.gov/MARC21/slim"> <xsl:value-of select="'lcch'"/> </subfield> </xsl:when> <xsl:when test="$ind = 2"> <subfield code="2" xmlns="http://www.loc.gov/MARC21/slim"> <xsl:value-of select="'mesh'"/> </subfield> </xsl:when> <xsl:when test="$ind = 3"> <subfield code="2" xmlns="http://www.loc.gov/MARC21/slim"> <xsl:value-of select="'nal'"/> </subfield> </xsl:when> <!-- What to do if thesaurus source is not specified (ind2 = 4)? --> <xsl:when test="$ind = 5"> <subfield code="2" xmlns="http://www.loc.gov/MARC21/slim"> <xsl:value-of select="'cae'"/> </subfield> </xsl:when> <xsl:when test="$ind = 6"> <subfield code="2" xmlns="http://www.loc.gov/MARC21/slim"> <xsl:value-of select="'caf'"/> </subfield> </xsl:when> </xsl:choose> </xsl:template> <xsl:template name="datafield856"> <xsl:for-each select="marc:datafield[@tag=856]"> <datafield tag="856" xmlns="http://www.loc.gov/MARC21/slim"> <xsl:attribute name="ind1"> <xsl:value-of select="@ind1"/> </xsl:attribute> <xsl:attribute name="ind2"> <xsl:value-of select="@ind2"/> </xsl:attribute> <xsl:for-each select="marc:subfield[@code]"> <subfield> <xsl:attribute name="code"> <xsl:choose> <xsl:when test="@code = 3"> <xsl:value-of select="2" /> </xsl:when> <xsl:when test="@code = 2"> <xsl:value-of select="y" /> </xsl:when> <xsl:when test="@code = y"> <xsl:value-of select="2" /> </xsl:when> <xsl:otherwise> <xsl:value-of select="@code" /> </xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> </xsl:template> <xsl:template name="getCountryFromMarcOrgCode"> <xsl:param name="marcOrgCode" select="text()" /> <xsl:choose> <xsl:when test="substring($marcOrgCode, 3, 1) = '-'"> <xsl:value-of select="substring($marcOrgCode, 1, 2)"/> </xsl:when> <xsl:when test="$marcOrgCode = 'DLC'"> <xsl:value-of select="'US'"/> </xsl:when> </xsl:choose> </xsl:template> <xsl:template name="selects"> <xsl:param name="i" /> <xsl:param name="count" /> <xsl:if test="$i <= $count"> <xsl:for-each select="marc:datafield[@tag=$i]"> <datafield xmlns="http://www.loc.gov/MARC21/slim"> <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:for-each select="marc:subfield[@code]"> <subfield> <xsl:attribute name="code"> <xsl:value-of select="@code" /> </xsl:attribute> <xsl:value-of select="text()"/> </subfield> </xsl:for-each> </datafield> </xsl:for-each> </xsl:if> <!--begin_: RepeatTheLoopUntilFinished--> <xsl:if test="$i < $count"> <xsl:call-template name="selects"> <xsl:with-param name="i"> <xsl:value-of select="$i + 1"/> </xsl:with-param> <xsl:with-param name="count"> <xsl:value-of select="$count"/> </xsl:with-param> </xsl:call-template> </xsl:if> </xsl:template> </xsl:stylesheet>