<?xml version="1.0" encoding="UTF-8"?>
<!-- OAI Translator for DOAJ Beta 0.0.3 -->
<!-- Questions or Comments? Please email: jeremy.landry@nicholls.edu  -->
<!-- Last Revision Oct. 13, 2010 12:00 PM   -->


<!-- The most durrent version is available at: -->
<!-- http://www.nicholls.edu/apps/library/landry/doaj -->
<!-- Records are imported as UTF-8.  Use MARCEdit to convert to MARC-8 if need be. -->
<!-- Please do not forget to correct for non-filling characters in 245 2nd indicator -->
<!-- Use at own risk, we make no implication of warranty. -->

<xsl:stylesheet version="1.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/" 
	xmlns:dcterms="http://purl.org/dc/terms/1.1" 
	xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
		http://www.openarchives.org/OAI/2.0/oai_dc.xsd"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns="http://www.loc.gov/MARC21/slim"  exclude-result-prefixes="dc dcterms oai_dc">
 
	<xsl:import href="MARC21slimUtils.xsl"/>
	<xsl:output method="xml" encoding="UTF-8" indent="no"/>
	
  
	<xsl:template match="/">
		<collection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd" >
			<xsl:apply-templates />
		</collection>
	</xsl:template>
	
	<xsl:template name="OAI-PMH">
			 <xsl:for-each select = "ListRecords/record/metadata/oai_dc:dc">
		        <xsl:apply-templates  />
		     </xsl:for-each>
		     <xsl:for-each select = "GetRecord/record/metadata/oai_dc:dc">
		        <xsl:apply-templates  />
		     </xsl:for-each>
	</xsl:template>

    <xsl:template match="text()" />
   	<xsl:template match="oai_dc:dc">
		<record>

			<xsl:element name="leader">
				<xsl:variable name="type" select="dc:type"/>
				<xsl:variable name="leader06">a</xsl:variable>
				<xsl:variable name="leader07">s</xsl:variable>
				<xsl:value-of select="concat('     n',$leader06,$leader07,'##22000003a 4500')"/>
			</xsl:element>                 


<!--  Use this 006 for MRDF <controlfield tag="006" ind1=" " ind2=" ">m\\\\\\\\u\\\\\\\\</controlfield> -->

<!-- We use this 006 for SERIAL Record -->
		<controlfield tag="006" ind1=" " ind2=" ">s||\\\\\\\\\0\\\\0</controlfield>


		<controlfield tag="007" ind1=" " ind2=" ">cr \\\\\\\\\\\</controlfield>
				
	
			<xsl:variable name="language" select="dc:language"/>
					<xsl:variable name="lang">
					<xsl:choose>
						<xsl:when test="$language='Bosnian'">bos</xsl:when>
						<xsl:when test="$language='Bulgarian'">bul</xsl:when>
						<xsl:when test="$language='Catalan'">cat</xsl:when>
						<xsl:when test="$language='Catalan '">cat</xsl:when>
						<xsl:when test="$language='Chinese'">chi</xsl:when>
						<xsl:when test="$language='Croatian'">hvr</xsl:when>
						<xsl:when test="$language='Czech'">cze</xsl:when>
						<xsl:when test="$language='Danish'">dan</xsl:when>
						<xsl:when test="$language='Dutch'">dut</xsl:when>
						<xsl:when test="$language='Enghlish'">eng</xsl:when>
						<xsl:when test="$language='English'">eng</xsl:when>
						<xsl:when test="$language='English '">eng</xsl:when>
						<xsl:when test="$language='English.'">eng</xsl:when>
						<xsl:when test="$language='Esperanto'">esp</xsl:when>
						<xsl:when test="$language='Estonian'">eth</xsl:when>
						<xsl:when test="$language='Filipino'">fil</xsl:when>
						<xsl:when test="$language='Finnish'">fin</xsl:when>
						<xsl:when test="$language='French'">fre</xsl:when>
						<xsl:when test="$language='French '">fre</xsl:when>
						<xsl:when test="$language='Galician'">glg</xsl:when>
						<xsl:when test="$language='Georgian'">geo</xsl:when>
						<xsl:when test="$language='German'">gem</xsl:when>
						<xsl:when test="$language='German '">gem</xsl:when>
						<xsl:when test="$language='Greek'">gre</xsl:when>
						<xsl:when test="$language='Guarani'">guj</xsl:when>
						<xsl:when test="$language='Hebrew'">heb</xsl:when>
						<xsl:when test="$language='Hindi'">hin</xsl:when>
						<xsl:when test="$language='Hungarian'">hun</xsl:when>
						<xsl:when test="$language='Icelandic'">ice</xsl:when>
						<xsl:when test="$language='Indonesian'">ind</xsl:when>
						<xsl:when test="$language='Italian'">ita</xsl:when>
						<xsl:when test="$language='Italian '">ita</xsl:when>
						<xsl:when test="$language='Japanese'">jpn</xsl:when>
						<xsl:when test="$language='Korean'">kor</xsl:when>
						<xsl:when test="$language='Latin'">lat</xsl:when>
						<xsl:when test="$language='Lithuanian'">lit</xsl:when>
						<xsl:when test="$language='Macedonian'">mac</xsl:when>
						<xsl:when test="$language='Malay'">may</xsl:when>
						<xsl:when test="$language='Maori'">mao</xsl:when>
						<xsl:when test="$language='Norwegian'">nor</xsl:when>
						<xsl:when test="$language='Norweigan'">nor</xsl:when>
						<xsl:when test="$language='Occitan'">oci</xsl:when>
						<xsl:when test="$language='Persian'">per</xsl:when>
						<xsl:when test="$language='Polish'">pol</xsl:when>
						<xsl:when test="$language='Portugese'">por</xsl:when>
						<xsl:when test="$language='Portuguese'">por</xsl:when>
						<xsl:when test="$language='Romanian'">rum</xsl:when>
						<xsl:when test="$language='Russian'">rus</xsl:when>
						<xsl:when test="$language='Serbian'">srp</xsl:when>
						<xsl:when test="$language='Slovakian'">slo</xsl:when>
						<xsl:when test="$language='Slovene'">slv</xsl:when>
						<xsl:when test="$language='Slovenian'">slv</xsl:when>
						<xsl:when test="$language='Spanish'">spa</xsl:when>
						<xsl:when test="$language='Spanish '">spa</xsl:when>
						<xsl:when test="$language='Spannish'">spa</xsl:when>
						<xsl:when test="$language='Swahili'">swa</xsl:when>
						<xsl:when test="$language='Swedish'">swe</xsl:when>
						<xsl:when test="$language='Thai'">tha</xsl:when>
						<xsl:when test="$language='Tibetan'">tib</xsl:when>
						<xsl:when test="$language='Turkish'">tur</xsl:when>
						<xsl:when test="$language='Ukrainian'">ukr</xsl:when>
						<xsl:when test="$language='Ukranian'">ukr</xsl:when>
						<xsl:when test="$language='Urdu'">urd</xsl:when>
						<xsl:when test="$language='Vietnamese'">vie</xsl:when>
						<xsl:when test="$language='Yoruba'">yor</xsl:when>
						<xsl:otherwise>\\\</xsl:otherwise>
					</xsl:choose>
				</xsl:variable>

<!-- We use this 008 for a SERIAL record -->
				<controlfield tag="008" ind1=" " ind2=" ">\\\\\\c<xsl:choose><xsl:when test="string-length(dc:date[1])=4"><xsl:value-of select="dc:date[1]"/></xsl:when><xsl:otherwise>uuuu</xsl:otherwise></xsl:choose>9999\\\\\\\\s\\\\\\\\\\\<xsl:value-of select="$lang"/>\d</controlfield>


<!--  Use this 006 for MRDF <controlfield tag="008" ind1=" " ind2=" ">\\\\\\c<xsl:choose><xsl:when test="string-length(dc:date[1])=4"><xsl:value-of select="dc:date[1]"/></xsl:when><xsl:otherwise>uuuu</xsl:otherwise></xsl:choose>9999\\\\\\\\\\\u\\\\\\\\<xsl:value-of select="$lang"/>\d</controlfield>        -->                  
   

			
<!-- For loading and overlay purposes, we are creating a local 001.  This consists of a 'd' followed by the first issn. -->
			<xsl:for-each select="dc:identifier[position()=2]">
					<controlfield tag="001" ind1=" " ind2=" ">
						<subfield code="a">d<xsl:value-of select="substring-after(.,'issn: ')"/>								</subfield>
					</controlfield>
			</xsl:for-each>

<!-- For loading and overlay purposes, we are a local 049 (holding code) of DOAJ. -->			
			<datafield tag="049" ind1=" " ind2=" ">
				<subfield code="a">DOAJ</subfield>
			</datafield>


<!-- For the 002, we only want ISSN identifiers.  Additionally, we are stripping the prepended "issn: "  -->
			<xsl:for-each select="dc:identifier">
				<datafield tag="022" ind1=" " ind2=" ">
					<subfield code="a"><xsl:value-of select="substring-after(.,'issn: ')"/></subfield>
				</datafield>
			</xsl:for-each>

			
<!-- For the 245, we only want the first title listed.  Remember to find/replace to correct for non-filing characters -->
<!-- prior to load. -->
			<xsl:for-each select="dc:title[1]">	
				<datafield tag="245" ind1="1" ind2="0">
					<subfield code="a"><xsl:value-of select="."/></subfield>
                              <subfield code="h">[electronic resource].</subfield>
				</datafield>
                  </xsl:for-each>

<!-- All additional or variant titles are loaded as a 246. -->
			<xsl:for-each select="dc:title[position()>1]">
				<xsl:if test=".!=''">
					<datafield tag="246" ind1="3" ind2="3">
						<subfield code="a">
							<xsl:value-of select="."/>
						</subfield>
					</datafield>
				</xsl:if>
			</xsl:for-each>

<!-- For the 260, we are only loading publisher name. -->
			<xsl:choose>
				<xsl:when test="dc:publisher">
					<xsl:if test="translate(dc:publisher/.,'.,:;','')!=''">
						<datafield tag="260" ind1=" " ind2=" ">
							<subfield code="b"><xsl:value-of select="dc:publisher[1]/."/>.</subfield>
						</datafield>
					</xsl:if>
				</xsl:when>
				<xsl:otherwise>

				</xsl:otherwise>
			</xsl:choose>
						

<!-- Each language is listed as a 546. -->
			<xsl:for-each select="dc:language">
				<datafield tag="546" ind1=" " ind2=" ">
					<subfield code="a">
						<xsl:value-of select="."/>
					</subfield>
				</datafield>
			</xsl:for-each>

<!-- We are loading LCC groupings as 072. -->
			<xsl:for-each select="dc:subject">
				<xsl:choose>
				<xsl:when test="contains(.,'LCC: ')">
               			<datafield tag="072" ind1=" " ind2="7">
						<subfield code="a">
							<xsl:value-of select="substring-after(.,'LCC: ')"/>
               				</subfield>
						<subfield code="2">lcco</subfield>
					</datafield>
				</xsl:when>

<!-- We are loading DOAJSubjectTerms as primary 653 subjects.  -->				
			<xsl:when test="contains(.,'DoajSubjectTerm: ')">
               			<datafield tag="653" ind1="1" ind2=" ">
						<subfield code="a">
							<xsl:value-of select="substring-after(.,'DoajSubjectTerm: ')"/>               						</subfield>
					</datafield>
				</xsl:when>

<!-- We are loading the remaining subjects as 650 subjects.  We also capitalizing the first letter. -->
				<xsl:otherwise>
               				<datafield tag="650" ind1="0" ind2="0">
							<subfield code="a">
								<xsl:value-of select="concat(translate(substring												(.,1,1),'abcdefghijklmnopqrstuvwxyz',
								'ABCDEFGHIJKLMNOPQRSTUVWXYZ'),substring(.,2,string-length(.)))"/>
               					</subfield>
							<subfield code="v">Periodicals</subfield>
						</datafield>
				</xsl:otherwise>
				</xsl:choose>
			</xsl:for-each>



<!-- This is our constructed 856.  The URL is listed as the first dc:identifier field in DOAJ. -->
			<xsl:if test="dc:identifier">
				<datafield tag="856" ind1="4" ind2="0">
					<subfield code="3">Full-text is available from: <xsl:value-of select="dc:date[1]" /> - </subfield>
					<subfield code="u"><xsl:value-of select="dc:identifier[position()=1]" /></subfield>
					<subfield code="z">Available in DOAJ: Directory of Open Access Journals.</subfield>
					<subfield code="x">Free Resource</subfield>
					<subfield code="y">DOAJ: Directory of Open Access Journals full text available from DOAJ: Directory of Open Access Journals</subfield>				
			</datafield>
			</xsl:if>
		</record>		

	</xsl:template>

	






</xsl:stylesheet>

