Skip to content.

The E-Learning Framework

Sections
Personal tools
You are here: Home » ELF Project Directory » d+ project » MARC to RLI mapping stylesheet
Views

MARC to RLI mapping stylesheet

Click here to get the file

Size 15.0 kB - File type text/xml

File contents

<?xml version="1.0" encoding="utf-8"?>

<!--

    JISC ELF Discovery+ Poject - http://devil.lib.ed.ac.uk

    Copyright (C) 2004, University of Edinburgh.



    This stylesheet is free software; you can redistribute it and/or

    modify it under the terms of the GNU Lesser General Public

    License as published by the Free Software Foundation; either

    version 2.1 of the License, or (at your option) any later version.



    This styelsheet is distributed in the hope that it will be useful,

    but WITHOUT ANY WARRANTY; without even the implied warranty of

    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU

    Lesser General Public License for more details.



    You should have received a copy of the GNU Lesser General Public

    License along with this library; if not, write to the Free Software

    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA



    Author: Boon Low

    MARC2RLI xslt stylesheet version 1.0

    Purpose: Mapping OAI MARC metadata to metadata based on the IMS RLI XML Binding 

              

-->



<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"

                xmlns="http://www.imsglobal.org/xsd/imsRLICommonSchema_v1p0" 

                xmlns:oai_marc="http://www.openarchives.org/OAI/oai_marc" exclude-result-prefixes="oai_marc">



<xsl:template match="oai_marc:oai_marc">



  <resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsRLICommonSchema_v1p0 http://www.imsglobal.org/rli/rliv1p0pd/bindings/rlicommon/xsd/imsRLICommonSchema_v1p0.xsd">

  <indexId>

    <xsl:value-of select="substring-before(substring(oai_marc:fixfield[@oai_marc:id='001'], 2), '&quot;')"/>

  </indexId>

  <resourceMetadata>

<!-- *** description  *** -->

    <!-- abstract 520 -->

    <xsl:if test="oai_marc:varfield[@oai_marc:id='520']">

    <description>

        <metadataLangString><xsl:value-of select="oai_marc:varfield[@oai_marc:id='520']/oai_marc:subfield[@oai_marc:label='a']"/></metadataLangString>

    </description>

    </xsl:if>

<!-- *** Languages *** -->

  <!-- 008 -->

  <xsl:if test="oai_marc:fixfield[@oai_marc:id='008']">

    <language>

        <xsl:value-of select="substring(oai_marc:fixfield[@oai_marc:id='008'], 37, 3)"/>

    </language>

  </xsl:if>



<!-- *** MIME types *** -->

    <xsl:for-each select="oai_marc:varfield[@oai_marc:id='856']/oai_marc:subfield[@oai_marc:label='q']">

        <format><xsl:value-of select="."/></format>

    </xsl:for-each>

  

    <citation>

    <!-- *** titles *** -->

    <!-- feasible MARC fields: 130, 210, 240, 242, 245, 246, 247, 730, 740 -->

    <xsl:if test="oai_marc:varfield[@oai_marc:id='130' or @oai_marc:id='210' 

    or @oai_marc:id='222' or @oai_marc:id='240' or @oai_marc:id='242' or @oai_marc:id='245' 

    or @oai_marc:id='246' or @oai_marc:id='247' or @oai_marc:id='730' or @oai_marc:id='740']">

    <!-- maps the mandantory 245, other fields pending -->

    <title>

    <xsl:for-each select="oai_marc:varfield[@oai_marc:id='245']">

    <metadataLangString>

        <xsl:for-each select="oai_marc:subfield[@oai_marc:label='a']">

            <xsl:value-of select="."/>

        </xsl:for-each>

        <xsl:for-each select="oai_marc:subfield[@oai_marc:label='b']">

            <xsl:value-of select="."/>

        </xsl:for-each>

        <xsl:for-each select="oai_marc:subfield[@oai_marc:label='n']">

            <xsl:value-of select="."/>

        </xsl:for-each>

        <xsl:for-each select="oai_marc:subfield[@oai_marc:label='p']">

            <xsl:value-of select="."/>

        </xsl:for-each>

        <xsl:for-each select="oai_marc:subfield[@oai_marc:label='s']">

            <xsl:value-of select="."/>

        </xsl:for-each>

    </metadataLangString>

    </xsl:for-each>

    </title>

    </xsl:if>

<!-- *** Authors *** -->

    <!-- personal 100 -->

    <xsl:for-each select="oai_marc:varfield[@oai_marc:id='100']">

        <creator>

            <metadataLangString>

               <xsl:if test="oai_marc:subfield[@oai_marc:label='c']"><xsl:value-of select="oai_marc:subfield[@oai_marc:label='c']"/> </xsl:if>

               <xsl:value-of select="oai_marc:subfield[@oai_marc:label='a']"/>

            </metadataLangString>

        </creator>

    </xsl:for-each>

    <!-- corporate author 110-->

    <xsl:for-each select="oai_marc:varfield[@oai_marc:id='110']">

        <creator>

            <metadataLangString>

                <xsl:value-of select="oai_marc:subfield[@oai_marc:label='a']"/>\n

            </metadataLangString>

        </creator>

    </xsl:for-each>

<!-- *** Edition *** -->   

    <!--  250 -->

    <xsl:if test="oai_marc:varfield[@oai_marc:id='250']/oai_marc:subfield[@oai_marc:label='a']">

        <edition>

            <metadataLangString>

                <xsl:value-of select="oai_marc:varfield[@oai_marc:id='250']/oai_marc:subfield[@oai_marc:label='a']"/>

            </metadataLangString>

        </edition>

    </xsl:if>

<!-- *** Publication *** -->   

    <!--  260 -->

    <xsl:if test="oai_marc:varfield[@oai_marc:id='260']/oai_marc:subfield[@oai_marc:label='c']">

        <publicationDate>

            <metadataDate>

                <xsl:value-of select="oai_marc:varfield[@oai_marc:id='260']/oai_marc:subfield[@oai_marc:label='c']"/>

            </metadataDate>

        </publicationDate>

    </xsl:if>

    <xsl:if test="oai_marc:varfield[@oai_marc:id='260']/oai_marc:subfield[@oai_marc:label='a']">

    <publicationPlace>

        <metadataLangString>

            <xsl:value-of select="oai_marc:varfield[@oai_marc:id='260']/oai_marc:subfield[@oai_marc:label='a']"/>

        </metadataLangString>

    </publicationPlace>

    </xsl:if>       

    <xsl:if test="oai_marc:varfield[@oai_marc:id='260']/oai_marc:subfield[@oai_marc:label='b']">

        <publisher>

            <metadataLangString>

                <xsl:value-of select="oai_marc:varfield[@oai_marc:id='260']/oai_marc:subfield[@oai_marc:label='b']"/>

            </metadataLangString>

        </publisher>

    </xsl:if>

<!-- *** Volume *** -->   

    <!--  440 -->

    <xsl:if test="oai_marc:varfield[@oai_marc:id='440']/oai_marc:subfield[@oai_marc:label='v']">

        <volumeDesignation>

            <metadataString>

                <xsl:value-of select="oai_marc:varfield[@oai_marc:id='440']/oai_marc:subfield[@oai_marc:label='v']"/>

            </metadataString>

        </volumeDesignation>

    </xsl:if>

<!-- *** Part/Issue number*** -->   

    <!--  440 -->

    <xsl:if test="oai_marc:varfield[@oai_marc:id='440']/oai_marc:subfield[@oai_marc:label='n']">

    <partDesignation>

        <metadataString>

            <xsl:value-of select="oai_marc:varfield[@oai_marc:id='440']/oai_marc:subfield[@oai_marc:label='n']"/>

        </metadataString>

    </partDesignation>   

    </xsl:if>

    

<!-- *** identifiers *** -->

    <!-- isbn 20 -->

    <xsl:if test="oai_marc:varfield[@oai_marc:id='020']">

        <xsl:for-each select="oai_marc:varfield[@oai_marc:id='020']">

        <xsl:if test="oai_marc:subfield[@oai_marc:label='a']">

        <standardIdentifier>

            <standardIdentifierType>URI</standardIdentifierType>

            <identifierString>

                <metadataString>urn:ISBN:<xsl:value-of select="oai_marc:subfield[@oai_marc:label='a']"/></metadataString>

            </identifierString>

        </standardIdentifier>

        </xsl:if>

        </xsl:for-each>

    </xsl:if>

    <!-- issn 22 -->

    <xsl:if test="oai_marc:varfield[@oai_marc:id='022']">

        <xsl:for-each select="oai_marc:varfield[@oai_marc:id='022']">

        <xsl:if test="oai_marc:subfield[@oai_marc:label='a']">

        <standardIdentifier>

            <standardIdentifierType>URI</standardIdentifierType>

            <identifierString>

                <metadataString>urn:ISSN:<xsl:value-of select="oai_marc:subfield[@oai_marc:label='a']"/></metadataString>

            </identifierString>

        </standardIdentifier>

        </xsl:if>

        </xsl:for-each>

    </xsl:if>

    <!-- library of congress control number 10 -->

    <xsl:if test="oai_marc:varfield[@oai_marc:id='010']/oai_marc:subfield[@oai_marc:label='a']">

        <standardIdentifier>

            <standardIdentifierType>URI</standardIdentifierType>

            <identifierString>

                <metadataString>

                    info:lccn:<xsl:value-of select="oai_marc:varfield[@oai_marc:id='010']/oai_marc:subfield[@oai_marc:label='a']"/>

                </metadataString>

            </identifierString>

        </standardIdentifier>

    </xsl:if>

    <!-- oclc control number 19 -->

    <xsl:if test="oai_marc:varfield[@oai_marc:id='019']/oai_marc:subfield[@oai_marc:label='a']">

        <standardIdentifier>

            <standardIdentifierType>URI</standardIdentifierType>

            <identifierString>

                <metadataString>

                    info:oclcnum:<xsl:value-of select="oai_marc:varfield[@oai_marc:id='019']/oai_marc:subfield[@oai_marc:label='a']"/>

                </metadataString>

            </identifierString>

        </standardIdentifier>

    </xsl:if>

    <!-- other unique idenfifier 24 -->

    <xsl:if test="oai_marc:varfield[@oai_marc:id='024']">

    <xsl:for-each select="oai_marc:varfield[@oai_marc:id='024']">

    <xsl:choose>

      <xsl:when test="self::node()/@oai_marc:i1='0'">

        <standardIdentifier>

            <standardIdentifierType>ISRC</standardIdentifierType>

            <identifierString>

                <metadataString>

                   <xsl:value-of select="oai_marc:subfield[@oai_marc:label='a']"/>

                </metadataString>

            </identifierString>

        </standardIdentifier>

      </xsl:when>

      <xsl:when test="self::node()/@oai_marc:i1='1'">

        <standardIdentifier>

            <standardIdentifierType>UPC</standardIdentifierType>

            <identifierString>

                <metadataString>

                   <xsl:value-of select="oai_marc:subfield[@oai_marc:label='a']"/>

                </metadataString>

            </identifierString>

        </standardIdentifier>

      </xsl:when>

      <xsl:when test="self::node()/@oai_marc:i1='2'">

        <standardIdentifier>

            <standardIdentifierType>ISMN</standardIdentifierType>

            <identifierString>

                <metadataString>

                   <xsl:value-of select="oai_marc:subfield[@oai_marc:label='a']"/>

                </metadataString>

            </identifierString>

        </standardIdentifier>

      </xsl:when>

      <xsl:when test="self::node()/@oai_marc:i1='3'">

        <standardIdentifier>

            <standardIdentifierType>IAN</standardIdentifierType>

            <identifierString>

                <metadataString>

                   <xsl:value-of select="oai_marc:subfield[@oai_marc:label='a']"/>

                </metadataString>

            </identifierString>

        </standardIdentifier>

      </xsl:when>

      <xsl:when test="self::node()/@oai_marc:i1='4'">

        <standardIdentifier>

            <standardIdentifierType>URI</standardIdentifierType>

            <identifierString>

                <metadataString>

                   info:sici:<xsl:value-of select="oai_marc:subfield[@oai_marc:label='a']"/>

                </metadataString>

            </identifierString>

        </standardIdentifier>

      </xsl:when>

      <xsl:when test="self::node()/@oai_marc:i1='7'">

        <standardIdentifier>

            <standardIdentifierType><xsl:value-of select="oai_marc:subfield[@oai_marc:label='2']"/></standardIdentifierType>

            <identifierString>

                <metadataString>

                   <xsl:value-of select="oai_marc:subfield[@oai_marc:label='a']"/>

                </metadataString>

            </identifierString>

        </standardIdentifier>

      </xsl:when>

      <xsl:when test="self::node()/@oai_marc:i1='8'">

        <standardIdentifier>

            <standardIdentifierType>unknown</standardIdentifierType>

            <identifierString>

                <metadataString>

                   <xsl:value-of select="oai_marc:subfield[@oai_marc:label='a']"/>

                </metadataString>

            </identifierString>

        </standardIdentifier>

      </xsl:when>

    </xsl:choose>

  </xsl:for-each>

  </xsl:if>

  <!-- related series title 440, e.g. lecture notes on computer science series  -->

  <xsl:if test="oai_marc:varfield[@oai_marc:id='440']">

    <relatedTitle>

        <title>

            <metadataLangString>

                <xsl:value-of select="oai_marc:varfield[@oai_marc:id='440']/oai_marc:subfield[@oai_marc:label='a']"/>

            </metadataLangString>

        </title>

        <!-- *** Volume *** -->   

    <!--  440 -->

    <xsl:if test="oai_marc:varfield[@oai_marc:id='440']/oai_marc:subfield[@oai_marc:label='v']">

        <volumeDesignation>

            <metadataString>

                <xsl:value-of select="oai_marc:varfield[@oai_marc:id='440']/oai_marc:subfield[@oai_marc:label='v']"/>

            </metadataString>

        </volumeDesignation>

    </xsl:if>

<!-- *** Part/Issue number*** -->   

    <!--  440 -->

    <xsl:if test="oai_marc:varfield[@oai_marc:id='440']/oai_marc:subfield[@oai_marc:label='n']">

        <partDesignation>

            <metadataString>

                <xsl:value-of select="oai_marc:varfield[@oai_marc:id='440']/oai_marc:subfield[@oai_marc:label='n']"/>

            </metadataString>

        </partDesignation>   

    </xsl:if>

    </relatedTitle>

    </xsl:if>

  </citation>

  <!-- *** online location *** -->

  <xsl:for-each select="oai_marc:varfield[@oai_marc:id='856']/oai_marc:subfield[@oai_marc:label='u']">

     <location>

        <locationType>URI</locationType>

        <locator>

            <metadataString><xsl:value-of select="."/></metadataString>

        </locator>

    </location>

  </xsl:for-each>

  <!-- *** physical location *** -->

    <xsl:for-each select="oai_marc:varfield[@oai_marc:id='852']">

        <location>

        <locationType>physical</locationType>

        <locator>

            <metadataString>

            <xsl:value-of select="oai_marc:subfield[@oai_marc:label='a']"/><xsl:text>  </xsl:text>

            <xsl:for-each select="oai_marc:subfield[@oai_marc:label='b' or @oai_marc:label='c' or @oai_marc:label='j']">

                <xsl:value-of select="."/><xsl:text>  </xsl:text>

            </xsl:for-each>

            <xsl:if test="oai_marc:subfield[@oai_marc:label='e']">

                <xsl:value-of select="oai_marc:subfield[@oai_marc:label='e']"/><xsl:text>  </xsl:text>

            </xsl:if>

            <xsl:if test="oai_marc:subfield[@oai_marc:label='h']">

                <xsl:value-of select="oai_marc:subfield[@oai_marc:label='h']"/><xsl:text>  </xsl:text>

            </xsl:if>

            <xsl:if test="oai_marc:subfield[@oai_marc:label='m']">

                <xsl:value-of select="oai_marc:subfield[@oai_marc:label='m']"/><xsl:text>  </xsl:text>

            </xsl:if>

            </metadataString>

        </locator>

        </location>

    </xsl:for-each>

  

  </resourceMetadata>

  </resource>



</xsl:template>



</xsl:stylesheet>
Created by boon
Last modified 2004-09-02 03:22 PM
Funding Partner
Not specified
« May 2012 »
Su Mo Tu We Th Fr Sa
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
Blog
No blog entries.
Implements services
Related ELF services
No files or documents.