<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
 xmlns="http://www.ndltd.org/standards/metadata/etdms/1.0/"
 xmlns:xMetaDiss="http://www.d-nb.de/standards/xMetaDiss/"
 xmlns:cc="http://www.d-nb.de/standards/cc/"
 xmlns:ddb="http://www.d-nb.de/standards/ddb/"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:dcmitype="http://purl.org/dc/dcmitype/"
 xmlns:dcterms="http://purl.org/dc/terms/"
 xmlns:pc="http://www.d-nb.de/standards/pc/"
 xmlns:urn="http://www.d-nb.de/standards/urn/"
 xmlns:thesis="http://www.ndltd.org/standards/metadata/etdms/1.0/"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<xsl:output method="xml" omit-xml-declaration="no" encoding="UTF-8" indent="yes" media-type="text/xml"/>
  
	<xsl:template match="/">
	<thesis xmlns="http://www.ndltd.org/standards/metadata/etdms/1.0/"
 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xsi:schemaLocation="http://www.ndltd.org/standards/metadata/etdms/1.0/ http://www.ndltd.org/standards/metadata/etdms/1.0/etdms.xsd">
	
		<xsl:call-template name="title"/>
		<xsl:call-template name="alternative"/>
		<xsl:call-template name="creator"/>
		<xsl:call-template name="subject"/>
		<xsl:call-template name="abstract"/> 
		<xsl:call-template name="note"/>
		<xsl:call-template name="publisher"/>
		<xsl:call-template name="contributor"/> 
		<xsl:call-template name="date"/>
		<xsl:call-template name="type"/> 
		<xsl:call-template name="format"/>
		<xsl:call-template name="identifier"/>
		<xsl:call-template name="language"/>
		<xsl:call-template name="coverage"/> 
		<xsl:call-template name="rights"/>
		<xsl:call-template name="degree"/>
	</thesis>
 	</xsl:template>

	
<xsl:template name="xlang"> 
	<xsl:choose>
	 	<xsl:when test='./@lang="ger"'>de</xsl:when>
		<xsl:when test='./@lang="eng"'>en</xsl:when>
		<xsl:when test='./@lang="rus"'>ru</xsl:when>
		<xsl:when test='./@lang="ita"'>it</xsl:when>
		<xsl:when test='./@lang="gre"'>el</xsl:when>
		<xsl:when test='./@lang="fre"'>fr</xsl:when>
		<xsl:when test='./@lang="spa"'>es</xsl:when>		
		<xsl:otherwise>en</xsl:otherwise>
	</xsl:choose>
	</xsl:template>	


	<xsl:template name="title"> 
		<xsl:for-each select="xMetaDiss:xMetaDiss/dc:title"> 
			<xsl:element name="title"> 
				<xsl:attribute name="xml:lang"><xsl:call-template name="xlang"/></xsl:attribute>			
				<xsl:value-of select="."/> 
			</xsl:element> 
		</xsl:for-each> 
	</xsl:template>
	
	<xsl:template name="alternative"> 
		<xsl:for-each select="xMetaDiss:xMetaDiss/dcterms:alternative"> 
			<xsl:element name="alternativeTitle">
				<xsl:attribute name="xml:lang"><xsl:call-template name="xlang"/></xsl:attribute>			
				<xsl:value-of select="."/> 
			</xsl:element> 
		</xsl:for-each> 
	</xsl:template>
	
	<xsl:template name="creator"> 
		<xsl:for-each select="//dc:creator">
			<xsl:element name="creator">
				<xsl:value-of select="pc:person/pc:name/pc:surName"/>, <xsl:value-of select="pc:person/pc:name/pc:foreName"/> 
			</xsl:element>
		</xsl:for-each> 
	</xsl:template> 
	
	<xsl:template name="subject">
		<xsl:for-each select="//dc:subject"> 
			<xsl:element name="subject">
				<xsl:attribute name="scheme"><xsl:value-of select="./@xsi:type"/></xsl:attribute>
				<xsl:value-of select="."/> 
			</xsl:element>
		</xsl:for-each> 
	</xsl:template>
	
	<xsl:template name="abstract"> 
		<xsl:for-each select="//dcterms:abstract">
			<xsl:element name="description">
				<xsl:attribute name="xml:lang"><xsl:call-template name="xlang"/></xsl:attribute>
				<xsl:value-of select="."/>
			</xsl:element> 
		</xsl:for-each> 
	</xsl:template> 
	
	<xsl:template name="note">
		<xsl:for-each select="//ddb:note"> 
			<xsl:element name="description">
			<xsl:attribute name="role">note</xsl:attribute>			
				<xsl:value-of select="."/> 
			</xsl:element> 
		</xsl:for-each> 
	</xsl:template>
	
	<xsl:template name="publisher"> 
		<xsl:for-each select="//dc:publisher">
			<xsl:element name="publisher">
				<xsl:value-of select="cc:universityOrInstitution/cc:name"/>
				<xsl:text> </xsl:text> 
				<xsl:value-of select="cc:universityOrInstitution/cc:place"/> 
			</xsl:element>
		</xsl:for-each> 
	</xsl:template> 
	
	<xsl:template name="contributor">
		<xsl:for-each select="//dc:contributor"> 
			<xsl:element name="contributor">
				<xsl:attribute name="role"><xsl:value-of select="./@thesis:role"/></xsl:attribute>
				<xsl:value-of select="pc:person/pc:name/pc:surName"/>, <xsl:value-of select="pc:person/pc:name/pc:foreName"/> 
			</xsl:element> 
		</xsl:for-each> 
	</xsl:template>
	
	<xsl:template name="date"> 
		<xsl:element name="date">
			<xsl:choose>
				<xsl:when test="//dcterms:issued">
					<xsl:value-of select="//dcterms:issued"/>
				</xsl:when> 
				<xsl:otherwise>
					<xsl:value-of select="//dcterms:dateAccepted"/>	
				</xsl:otherwise>
			</xsl:choose>						
		</xsl:element> 
	</xsl:template>
	
	<xsl:template name="type"> 
		<xsl:for-each select="//dc:type">
			<xsl:choose>
				<xsl:when test='.="ElectronicThesisandDissertation"'>
					<xsl:element name="type">Electronic Thesis or Dissertation</xsl:element>
				</xsl:when> 
				<xsl:otherwise>
					<xsl:element name="type">				
						<xsl:value-of select="."/>
					</xsl:element>					 
				</xsl:otherwise>
			</xsl:choose>			
		</xsl:for-each> 
	</xsl:template> 
	
	<xsl:template name="format">
		<xsl:for-each select="//dcterms:medium"> 
			<xsl:element name="format">
				<xsl:value-of select="."/> 
			</xsl:element> 
		</xsl:for-each> 
	</xsl:template>
	
	<xsl:template name="identifier"> 
		<xsl:element name="identifier"> 
			<xsl:value-of select="//dc:identifier"/> 
		</xsl:element>
	</xsl:template> 
	
	<xsl:template name="language">
		<xsl:element name="language">		 
			<xsl:value-of select="//dc:language"/>
		</xsl:element> 
	</xsl:template> 
	
	<xsl:template name="coverage">
		<xsl:for-each select="//dc:coverage"> 
			<xsl:element name="coverage">
				<xsl:attribute name="scheme"><xsl:value-of select="./@ddb:Scheme"/></xsl:attribute>
				<xsl:value-of select="."/> 
			</xsl:element> 
		</xsl:for-each>
		<xsl:for-each select="//dcterms:spatial"> 
			<xsl:element name="coverage">
				<xsl:attribute name="scheme"><xsl:value-of select="./@ddb:Scheme"/></xsl:attribute>
				<xsl:value-of select="."/> 
			</xsl:element> 
		</xsl:for-each>
		<xsl:for-each select="//dcterms:temporal"> 
			<xsl:element name="coverage">
				<xsl:attribute name="scheme"><xsl:value-of select="./@ddb:Scheme"/></xsl:attribute>
				<xsl:value-of select="."/> 
			</xsl:element> 
		</xsl:for-each> 
	</xsl:template>
	
	<xsl:template name="rights"> 
		<xsl:for-each select="//dc:rights">
			<xsl:element name="rights"> 
				<xsl:value-of select="."/> 
			</xsl:element>
		</xsl:for-each> 
		<xsl:for-each select="//dcterms:accessRights">
			<xsl:element name="rights"> 
				<xsl:value-of select="."/> 
			</xsl:element>
		</xsl:for-each> 
	</xsl:template> 

	<xsl:template name="degree">
		<degree>	
		<xsl:for-each select="//thesis:name">
				<xsl:element name="name"> 
					<xsl:value-of select="."/> 
				</xsl:element>
		</xsl:for-each> 
		<xsl:for-each select="//thesis:level">
				<xsl:element name="level"> 
					<xsl:value-of select="."/> 
				</xsl:element> 
		</xsl:for-each>
		<xsl:for-each select="//thesis:discipline"> 
				<xsl:element name="discipline"> 
					<xsl:value-of select="."/> 
				</xsl:element>
		</xsl:for-each> 
		<xsl:for-each select="//thesis:grantor">
				<xsl:element name="grantor">
					<xsl:value-of select="cc:universityOrInstitution/cc:name"/>
				</xsl:element>
		</xsl:for-each>
		</degree>
	</xsl:template> 
</xsl:stylesheet> 

