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

<!--
   Name: 06_gmd:dateStamp.xsl 
   Author:  Matthew J. McCready
   Date:  20111012
   Description:  XSLT stylesheet that transforms the  Metadata_Date in the MIF  standard to the gmd:dateStamp ISO element. This stylesheet conists of two templates:   dateStamp and dateStampFormat. The dateStamp template creates the gmd:dateStamp element and calls the dateStampFormat template. This later template correctly formats  the date in the ISO format and inserts it in the gco:Date element. 
   Modification History:
      Initial   Date      Change Request ID   Description
      MMc       4/16/2012                      Inserted code to account for missing dates by dtermining the length of the Metadata_Date element. If the length is less than zero, a date element with a
                                                gco:nilReason element is inserted 
-->


<xsl:stylesheet version = "1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:gmd="http://www.isotc211.org/2005/gmd"
   xmlns:gco="http://www.isotc211.org/2005/gco" 
>
<xsl:output method="xml" version="1.0" encoding="ISO-8859-1" indent="yes"/>



<xsl:template name="dateStamp" match="/">

<xsl:if test="//MIF/Metadata_Date" >
<xsl:variable name="dateStampLength" select="string-length(//MIF/Metadata_Date)" />  
<!--  <xsl:if test="metadata/metainfo/metd"> -->

<xsl:choose>
<xsl:when test="$dateStampLength >0">
<xsl:element name="gmd:dateStamp">
<xsl:call-template name ="dateStampFormat"/>
</xsl:element>
</xsl:when>

<xsl:otherwise>
<xsl:element name="gmd:dateStamp">
<!--  <xsl:element name="gco:Date"> -->
<xsl:attribute name="gco:nilReason">missing </xsl:attribute>
<!-- </xsl:element> -->
</xsl:element>
</xsl:otherwise>
<!-- </xsl:if> -->
</xsl:choose>


</xsl:if>

</xsl:template>

<xsl:template name="dateStampFormat">
<xsl:variable name ="MetDate" select= "//MIF/Metadata_Date"/>
<xsl:variable name="year"  select ="substring($MetDate,1,4)"/>
<xsl:variable name="month" select ="substring($MetDate,5,2)"/>
<xsl:variable name="monthLength" select="string-length($month)"/>
<xsl:variable name="day"   select ="substring($MetDate,7,2)"/>
<xsl:variable name="dayLength" select="string-length($day)"/>

<xsl:choose>
<xsl:when test="$dayLength>0">

<xsl:variable name="dateFormat" select="concat($year, '-',$month,'-',$day)"/>
        <xsl:element name="gco:Date">
                <xsl:value-of select ="$dateFormat"/>
        </xsl:element>
</xsl:when>

<xsl:when test="$monthLength >0">
<xsl:variable name="dateFormat" select="concat($year, '-',$month)"/>
        <xsl:element name="gco:Date">
                <xsl:value-of select ="$dateFormat"/>
        </xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="dateFormat" select="$year"/>
        <xsl:element name="gco:Date">
                <xsl:value-of select ="$dateFormat"/>
        </xsl:element>

</xsl:otherwise>
</xsl:choose>

</xsl:template>
</xsl:stylesheet>

