<?xml version='1.0'?>
<xsl:stylesheet version="1.0" 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" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/">
  <xsl:template name="subfieldSelect">
    <xsl:param name="codes"/>
    <xsl:param name="delimeter"><xsl:text> </xsl:text></xsl:param>
    <xsl:variable name="str">
      <xsl:for-each select="marc:subfield">
	<xsl:if test="contains($codes, @code)">
	  <xsl:value-of select="text()"/><xsl:value-of select="$delimeter"/>
	</xsl:if>
      </xsl:for-each>
    </xsl:variable>
    <xsl:value-of select="substring($str,1,string-length($str)-string-length($delimeter))"/>
  </xsl:template>

  <xsl:template name="noteUriRelation">
    <xsl:param name="noteSubfields">nt</xsl:param>
    <xsl:param name="uriSubfields">o</xsl:param>
    <xsl:param name="elementName">dcterms:isVersionOf</xsl:param>

    <!-- text note is in 785$n$t -->
    <xsl:variable name="note">
      <xsl:call-template name="subfieldSelect">
	<xsl:with-param name="codes">
	  <xsl:value-of select="$noteSubfields" />
	</xsl:with-param>
      </xsl:call-template>
    </xsl:variable>

    <!-- url is in 785$o -->
    <xsl:variable name="url">
      <xsl:call-template name="subfieldSelect">
	<xsl:with-param name="codes">
	  <xsl:value-of select="$uriSubfields" />
	</xsl:with-param>
      </xsl:call-template>
    </xsl:variable>

    <xsl:if test="string-length($note) &gt; 0">
      <xsl:element name="{$elementName}">
	<xsl:value-of select="$note" />
      </xsl:element>
    </xsl:if>

    <xsl:if test="string-length($url) &gt; 0">
      <xsl:element name="{$elementName}">
	<xsl:attribute name="xsi:type">dcterms:URI</xsl:attribute>
	<xsl:value-of select="$url" />
      </xsl:element>
    </xsl:if>
  </xsl:template>
</xsl:stylesheet>
