Archived / Obsolete Documentation

Documentation in this space is no longer accurate.
Looking for official DSpace documentation? See all documentation

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

<?xml version="1.0"?>
<xsl:stylesheet
        		xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:dim="http://www.dspace.org/xmlns/dspace/dim"
		    xmlns:fn="http://www.w3.org/2005/02/xpath-functions"	
                version="1.0">
                
<xsl:output indent="yes" method="xml" />                  

<xsl:template match="/"> 
	<dim:dim>  
		<xsl:apply-templates />
	</dim:dim>
</xsl:template>	
						  
<xsl:template match ="PubmedArticle/MedlineCitation/PMID">
	<dim:field element="identifier" qualifier="pmid" mdschema="dc">
		<xsl:value-of select="." />
	</dim:field>
</xsl:template>	
	
<xsl:template match="PubmedArticle/MedlineCitation/Article/ArticleTitle">
	<dim:field element="title" mdschema="dc">
		<xsl:value-of select ="."/>
	</dim:field>

	<dim:field element ="identifier" qualifier="citation" mdschema="dc">
		<xsl:value-of select ="." />
		<xsl:if test="//Journal/JournalIssue/PubDate/Year" >
			<xsl:text> </xsl:text>
			<xsl:value-of select="//Journal/JournalIssue/PubDate/Year" />
		</xsl:if>
		<xsl:apply-templates mode="citation" select="//Journal/JournalIssue/Volume" />
		<xsl:apply-templates mode="citation" select="//Journal/JournalIssue/Issue" />
		<xsl:apply-templates mode="citation" select="//Pagination/MedlinePgn" />
		<xsl:apply-templates mode="citation" select="//ISOAbbreviation" />
		<xsl:apply-templates mode="citation" select="../../MedlineJournalInfo/MedlineTA" />
	</dim:field>
</xsl:template>

<xsl:template mode="citation" match="PubmedArticle/MedlineCitation/Article/Journal/JournalIssue/Volume" >
	<xsl:text>, </xsl:text>
	<xsl:value-of select="." />
</xsl:template>

<xsl:template mode="citation" match="PubmedArticle/MedlineCitation/Article/Journal/JournalIssue/Issue" >
	<xsl:text> (</xsl:text>
	<xsl:value-of select="." />
			<xsl:text>)</xsl:text>
</xsl:template>

<xsl:template mode="citation" match="PubmedArticle/MedlineCitation/Article/Pagination/MedlinePgn" >
	<xsl:text>:</xsl:text>
	<xsl:value-of select ="."/>
</xsl:template>

<xsl:template mode="citation" match="PubmedArticle/MedlineCitation/Article/Journal/ISOAbbreviation" >
	<xsl:text> </xsl:text>
	<xsl:value-of select="."/>
</xsl:template>

<xsl:template mode="citation" match="PubmedArticle/MedlineCitation/MedlineJournalInfo/MedlineTA">
	<xsl:choose>
		<xsl:when test="../../Article/Journal/ISOAbbreviation" >
			<!-- do nothing...it has already been appended to the citation -->
		</xsl:when>
		<xsl:otherwise>
			<xsl:text>not</xsl:text>
			<xsl:value-of select="."/>
		</xsl:otherwise>
	</xsl:choose>	
</xsl:template>

<xsl:template match="PubmedArticle/MedlineCitation/Article/Journal/ISSN" >
	<dim:field element="identifier" qualifier="issn" mdschema="dc">
		<xsl:value-of select="." />
	</dim:field>
</xsl:template>

<xsl:template match="PubmedArticle/MedlineCitation/Article/Abstract/AbstractText" >
	<dim:field element="description" qualifier="abstract" mdschema="dc" >
		<xsl:value-of select ="." />
	</dim:field>
</xsl:template>

<xsl:template match="PubmedArticle/PubmedData/ArticleIdList/ArticleId[@IdType = 'doi']">
	<dim:field element="identifier" qualifier ="doi" mdschema="dc">
		<xsl:value-of select ="." />
	</dim:field>
</xsl:template>

<xsl:template match="PubmedArticle/MedlineCitation/Article/Journal/JournalIssue/PubDate" >
	<xsl:variable name ="pubdate" >
		<xsl:apply-templates  mode="format_date" select="." />
	</xsl:variable>
	<dim:field element="date" qualifier="issued" mdschema="dc">
		<xsl:value-of select ="$pubdate" />
	</dim:field>
</xsl:template>

<xsl:template match="PubmedArticle/MedlineCitation/Article/Language" >
	<xsl:choose>
		<xsl:when test="//Language = 'eng' " >
			<dim:field element="language" qualifier="iso" mdschema="dc">
				<xsl:text>en</xsl:text>
			</dim:field>
		</xsl:when>
		<xsl:otherwise >
			<dim:field element="language" >
				<xsl:value-of select="." />
			</dim:field>
		</xsl:otherwise>
	</xsl:choose>
</xsl:template>

<xsl:template match="PubmedArticle/MedlineCitation/Article/AuthorList/Author[@ValidYN ='Y']">
	<xsl:if test= "*[local-name() = 'LastName']" >
		<dim:field element = "contributor" qualifier="author"  mdschema="dc">
			<xsl:value-of select="*[local-name()='LastName']" />
			<xsl:choose>
				<xsl:when test= "*[local-name() = 'ForeName']" >
					<xsl:text>, </xsl:text>
					<xsl:value-of select = "*[local-name() = 'ForeName']" />
				</xsl:when>
				<xsl:otherwise>
					<xsl:if test="*[local-name() = 'Initials']">
						<xsl:text>, </xsl:text>
						<xsl:value-of select="*[local-name() = 'Initials']" />
					</xsl:if>
				</xsl:otherwise>
			</xsl:choose>
		</dim:field>
	</xsl:if>
</xsl:template>

<xsl:template match="PubmedArticle/MedlineCitation/MeshHeadingList/MeshHeading/DescriptorName" >
	<dim:field element="subject" qualifier="mesh" mdschema="dc">
		<xsl:value-of select="." />
	</dim:field>
</xsl:template>

<!-- 
<xsl:template match ="PubmedArticle/MedlineCitation/Article" >
	<xsl:if test ="*[local-name() = 'ArticleTitle']" >
		<dim:field element ="identifier" qualifier="citation">
			<xsl:value-of select ="*[local-name() = 'ArticleTitle']" />
			<xsl:apply-templates mode="citation" select="./Journal/JournalIssue/PubDate/Year" />
			<xsl:apply-templates mode="citation" select="./Journal/JournalIssue/Volume" />
			<xsl:apply-templates mode="citation" select="./Journal/JournalIssue/Issue" />
			<xsl:apply-templates mode="citation" select="./Pagination/MedlinePgn" />
			<xsl:apply-templates mode="citation1" select="./Journal/ISOAbbreviation" />
		</dim:field>
	</xsl:if>
</xsl:template>
 -->

<xsl:template mode="citation" match="*" >
	<xsl:choose>
		<xsl:when test="*[local-name() = 'Year']">
			<xsl:text> </xsl:text>
			<xsl:value-of select="." />
		</xsl:when>
		<xsl:when  test="*[local-name() = 'Volume']">
			<xsl:text>, </xsl:text>
			<xsl:value-of select="." />
		</xsl:when>
		<xsl:when test="*[local-name() = 'Issue']">
			<xsl:text> (</xsl:text>
			<xsl:value-of select="." />
			<xsl:text>)</xsl:text>
		</xsl:when>
		<xsl:when test="*[local-name() = 'MedlinePgn']" >
			<xsl:text>:</xsl:text>
			<xsl:value-of select ="."/>
		</xsl:when>
	</xsl:choose>
</xsl:template>

<xsl:template mode="format_date" match="*">
	<xsl:if test ="*[local-name()='Year']">
		<xsl:value-of select="*[local-name()='Year']" />
	</xsl:if> 
	<xsl:if test="*[local-name() = 'Month']">
		<xsl:text>-</xsl:text>
		<xsl:variable name="monthNum" >
			<xsl:call-template name='monthToNum'>
				<xsl:with-param name="month" select="*[local-name() = 'Month']" />
			</xsl:call-template>
		</xsl:variable>
		<xsl:value-of select="format-number($monthNum,'00')" />
	</xsl:if>
	<xsl:if test ="*[local-name() = 'Day']" >
		<xsl:text>-</xsl:text>
		<xsl:value-of select="format-number(number(*[local-name() = 'Day']),'00')" />
	</xsl:if>
</xsl:template>

<!-- This will override the default text() functionality, so unmatched values are not 
	 included -->
<xsl:template match="text()" >
</xsl:template>


<xsl:template name="monthToNum">
<xsl:param name="month" />
	<xsl:choose>
	<xsl:when test="$month ='Jan'">
		<xsl:text>1</xsl:text>
	</xsl:when>
	<xsl:when test="$month ='Feb'">
		<xsl:text>2</xsl:text>
	</xsl:when>
	<xsl:when test="$month ='Mar'">
		<xsl:text>3</xsl:text>
	</xsl:when>
	<xsl:when test="$month ='Apr'">
		<xsl:text>4</xsl:text>
	</xsl:when>
	<xsl:when test="$month ='May'">
		<xsl:text>5</xsl:text>
	</xsl:when>
	<xsl:when test="$month ='Jun'">
		<xsl:text>6</xsl:text>
	</xsl:when>
	<xsl:when test="$month ='Jul'">
		<xsl:text>7</xsl:text>
	</xsl:when>
	<xsl:when test="$month ='Aug'">
		<xsl:text>8</xsl:text>
	</xsl:when>
	<xsl:when test="$month ='Sep'">
		<xsl:text>9</xsl:text>
	</xsl:when>
	<xsl:when test="$month ='Oct'">
		<xsl:text>10</xsl:text>
	</xsl:when>
	<xsl:when test="$month ='Nov'">
		<xsl:text>11</xsl:text>
	</xsl:when>
	<xsl:when test="$month ='Dec'">
		<xsl:text>12</xsl:text>
	</xsl:when>
</xsl:choose>

</xsl:template>

</xsl:stylesheet>
  • No labels