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

<!--
   Name:  13_gmd:distributionInfo.xsl
   Author:  Matthew J. McCready
   Date:  20110611
   Description:  XSLT stylesheet that transforms Section 6 of an
                 FGDC format file into the gmd:distributionInfo ISO file. This stylesheet is called by the master stylesheet.
                
   Modification History:
      Initial   Date      Change Request ID   Description
      MMC       07/07/2011                    Inserted a choose structure for the gmd:version element. This element relates to either the formname or formver
                                               element in the CSDGM. In the CSDGM, a user must choose from only one of the previously mentioned elements.  
      MMC       10/27/2011                    Inserted an otherwise element for the gmd:version element for FGDC files without a formname or formver
                                               element. For this case, this element will now have a gco:nilReason attribute with a value of 'Unknown' 
      MMC       11/01/2011                   Inserted a choose structure for the gmd:electronicMailAddress element. This was done so that if the element does not exist                                                                                         in the original FGDC file, it will appear in the ISO file with the "gco:nilReason attribute equal to 'missing'. 
      MMC       03/07/2012                   Inserted the gmd:fileDecompressionTechnique element so that File Decompression Technique information from Section 6 of the FGDC Standard
                                              can be recorded.
      MMC       04/12/2013                   Inserted a UUID for the gmd:distributorContact. Created the DistCitation template to handle the UUIDS. There is one UUID
                                              for the Geographic Products Branch and one for the Cartographic Products Branch. If the branch is not of those two branches,
                                              then the whole gmd:CI_ResponsibleParty package is produced.
-->

<!-- 
List of Related Templates and associated stylesheets
Template                                     Stylesheet/File
MD_MediumFormatCode                          MD_MediumFormatCode.xsl
-->

<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"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions"
>
<xsl:output method="xml" version="1.0" encoding="ISO-8859-1" indent="yes"/>



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

<xsl:element name="gmd:distributionInfo">
<xsl:element name="gmd:MD_Distribution">
<xsl:element name="gmd:distributionFormat">
<xsl:element name="gmd:MD_Format">

<xsl:element name="gmd:name">
<xsl:element name="gco:CharacterString"><xsl:value-of select="/metadata/distinfo/stdorder/digform/digtinfo/formname"/> </xsl:element><!-- gco:CharacterString -->
</xsl:element><!-- gmd:name -->

<!--<xsl:if test="/metadata/distinfo/stdorder/digform/digtinfo/filedec">
<xsl:element name="gmd:fileDecompressionTechnique">
<xsl:element name="gco:CharacterString"><xsl:value-of select="/metadata/distinfo/stdorder/digform/digtinfo/filedec"/> </xsl:element>
</xsl:element>
</xsl:if > -->


<xsl:choose>
<xsl:when test="/metadata/distinfo/stdorder/digform/digtinfo/formvern">
<xsl:comment> In the when </xsl:comment>
<xsl:element name="gmd:version">
<xsl:element name="gco:CharacterString"><xsl:value-of select="/metadata/distinfo/stdorder/digform/digtinfo/formvern"/></xsl:element><!-- gco:CharacterString -->
</xsl:element><!-- gmd:version -->
</xsl:when>

<xsl:when test="/metadata/distinfo/stdorder/digform/digtinfo/formverd">
<xsl:element name="gmd:version">
<xsl:element name="gco:CharacterString"><xsl:value-of select="/metadata/distinfo/stdorder/digform/digtinfo/formverd"/></xsl:element><!-- gco:CharacterString -->
</xsl:element><!-- gmd:amendmentNumber -->

<!-- <xsl:comment> Checking for File Decompression Technique </xsl:comment>
<xsl:if test="/metadata/distinfo/stdorder/digform/digtinfo/filedec">
<xsl:element name="gmd:fileDecompressionTechnique">
<xsl:element name="gco:CharacterString"><xsl:value-of select="/metadata/distinfo/stdorder/digform/digtinfo/filedec"/> </xsl:element>
</xsl:element>
</xsl:if> -->

</xsl:when>


<xsl:otherwise>
<!-- <xsl:comment> In the default </xsl:comment> -->
<xsl:element name="gmd:version">
<xsl:attribute name="gco:nilReason">unknown</xsl:attribute>
</xsl:element>
</xsl:otherwise>

</xsl:choose>

<!-- <xsl:comment> Checking for File Decompression Technique </xsl:comment> -->
<xsl:if test="/metadata/distinfo/stdorder/digform/digtinfo/filedec">
<xsl:element name="gmd:fileDecompressionTechnique">
<xsl:element name="gco:CharacterString"><xsl:value-of select="/metadata/distinfo/stdorder/digform/digtinfo/filedec"/> </xsl:element>
</xsl:element>
</xsl:if>

</xsl:element><!-- gmd:MD_Format -->
</xsl:element><!-- gmd:distributionFormat -->

<xsl:element name="gmd:distributor">
<xsl:element name="gmd:MD_Distributor">

   
  <xsl:call-template name="DistCitation"/>



<xsl:element name="gmd:distributionOrderProcess">
<xsl:element name="gmd:MD_StandardOrderProcess">

<xsl:element name="gmd:fees">
<xsl:element name="gco:CharacterString"><xsl:value-of select="/metadata/distinfo/stdorder/fees"/> </xsl:element><!-- gco:CharacterString -->
</xsl:element><!-- gmd:fees -->

<xsl:element name="gmd:orderingInstructions">
<xsl:element name="gco:CharacterString"><xsl:value-of select="/metadata/distinfo/stdorder/ordering"/> </xsl:element><!-- gco:CharacterString -->
</xsl:element><!-- gmd:orderingInstructions -->

</xsl:element><!-- gmd:MD_StandardOrderProcess -->
</xsl:element><!-- gmd:distributionOrderProcess -->

</xsl:element><!-- gmd:MD_Distributor -->
</xsl:element><!-- gmd:distributor -->

<!-- online -->
<xsl:element name="gmd:transferOptions">
<xsl:element name="gmd:MD_DigitalTransferOptions">

<xsl:element name="gmd:onLine">
<xsl:element name="gmd:CI_OnlineResource">
<xsl:element name="gmd:linkage">
<xsl:element name="gmd:URL"><xsl:value-of select="/metadata/distinfo/stdorder/digform/digtopt/onlinopt/computer/networka/networkr"/></xsl:element><!-- gmd:URL --> 
</xsl:element><!-- gmd:linkage -->
</xsl:element><!-- gmd:CI_OnlineResource -->
</xsl:element><!-- gmd:onLine -->

</xsl:element><!-- gmd:MD_DigitalTransferOptions -->
</xsl:element><!-- gmd:transferOptions -->

<!-- offline -->

<xsl:element name="gmd:transferOptions">
<xsl:element name="gmd:MD_DigitalTransferOptions">

<xsl:element name="gmd:offLine">
<xsl:element name="gmd:MD_Medium">

<xsl:element name="gmd:name"> </xsl:element><!-- gmd:name -->

<xsl:if test="/metadata/distinfo/stdorder/digform/digtopt/offoptn/recfmt">
<xsl:call-template name="MD_MediumFormatCode"/> 
</xsl:if>


</xsl:element><!-- gmd:MD_Medium -->
</xsl:element><!-- gmd:offLine -->

</xsl:element><!-- gmd:MD_DigitalTransferOptions -->
</xsl:element><!-- gmd:transferOptions -->

<!-- ending the elements -->
</xsl:element><!-- gmd:MD_Distribution -->
</xsl:element><!-- gmd:distributionInfo -->

</xsl:template>
   
   
   <xsl:template name="DistCitation">
      <xsl:variable name="FullOrg" select="/metadata/distinfo[1]/distrib[1]/cntinfo[1]/cntorgp/cntorg"/>
      <xsl:variable name="postComma" select="substring-after($FullOrg,',')"/>
      <xsl:variable name="division" select="substring-after($postComma,',')"/>
      <xsl:variable name="finalDivision" select="substring-before($division,',')"/>
      <xsl:variable name="postComma2" select="substring-after($division,',')"></xsl:variable>
      <xsl:variable name="DivThree" select="substring($postComma2,2,3)"></xsl:variable>
      
      <!-- <xsl:comment>Division:<xsl:value-of select="$division"/></xsl:comment>
      <xsl:comment>postComma2:<xsl:value-of select="$postComma2"/></xsl:comment>
      <xsl:comment>DivThree:<xsl:value-of select="$DivThree"/></xsl:comment> -->
      
      
      <xsl:choose>
         <xsl:when test="$DivThree='Geo'">
            <xsl:element name="gmd:distributorContact">
               <xsl:attribute name="xlink:href">https://www.ngdc.noaa.gov/docucomp/f48e4893-a57f-4f2b-ad5d-0cca1b34ec62</xsl:attribute>
               <xsl:attribute name="xlink:title">distributor - U.S. Department of Commerce, U.S. Census Bureau, Geography Division, Geographic Products Branch</xsl:attribute>
            </xsl:element>
         </xsl:when>
         
         <xsl:otherwise>
      <xsl:element name="gmd:CI_ResponsibleParty">
         
         <xsl:element name="gmd:organisationName">
            <xsl:element name="gco:CharacterString"><xsl:value-of select="/metadata/distinfo[1]/distrib[1]/cntinfo[1]/cntorgp/cntorg"/> </xsl:element><!-- gco:CharacterString -->
         </xsl:element><!-- gmd:organisationName -->
         
         <xsl:element name="gmd:contactInfo">
            <xsl:element name="gmd:CI_Contact">
               <xsl:element name="gmd:phone">
                  
                  <xsl:element name="gmd:CI_Telephone">
                     
                     <xsl:element name="gmd:voice">
                        <xsl:element name="gco:CharacterString"><xsl:value-of select="/metadata/distinfo[1]/distrib/cntinfo/cntvoice"/></xsl:element><!-- gco:CharacterString -->
                     </xsl:element><!-- gmd:voice -->
                     
                     <xsl:element name="gmd:facsimile">
                        <xsl:element name="gco:CharacterString"><xsl:value-of select="/metadata/distinfo[1]/distrib/cntinfo/cntfax"/></xsl:element><!-- gco:CharacterString -->
                     </xsl:element><!-- gmd:facsimile -->
                     
                  </xsl:element><!-- gmd:CI_Telephone -->
               </xsl:element><!-- gmd:phone -->
               
               <xsl:element name="gmd:address">
                  <xsl:element name="gmd:CI_Address">
                     
                     <xsl:element name="gmd:deliveryPoint">
                        <xsl:element name="gco:CharacterString"><xsl:value-of select="/metadata/distinfo/distrib/cntinfo/cntaddr/address"/> </xsl:element><!-- gco:CharacterString -->
                     </xsl:element><!-- gmd:deliveryPoint -->
                     
                     <xsl:element name="gmd:city">
                        <xsl:element name="gco:CharacterString"><xsl:value-of select="/metadata/distinfo/distrib/cntinfo/cntaddr/city"/> </xsl:element><!-- gco:CharacterString -->
                     </xsl:element><!-- gmd:city -->
                     
                     <xsl:element name="gmd:administrativeArea">
                        <xsl:element name="gco:CharacterString"><xsl:value-of select="/metadata/distinfo/distrib/cntinfo/cntaddr/state"/> </xsl:element><!-- gco:CharacterString -->
                     </xsl:element><!-- gmd:administrativeArea -->
                     
                     <xsl:element name="gmd:postalCode">
                        <xsl:element name="gco:CharacterString"><xsl:value-of select="/metadata/distinfo/distrib/cntinfo/cntaddr/postal"/> </xsl:element><!-- gco:CharacterString -->
                     </xsl:element><!-- gmd:postalCode -->
                     
                     <xsl:element name="gmd:country">
                        <xsl:element name="gco:CharacterString"><xsl:value-of select="/metadata/distinfo/distrib/cntinfo/cntaddr/country"/> </xsl:element><!-- gco:CharacterString -->
                     </xsl:element><!-- gmd:country -->
                     
                     <!-- <xsl:choose> -->
                     <xsl:variable name="distEmail" select="/metadata/distinfo/distrib/cntinfo/cntemail"/>
                     <xsl:variable name="distEmailLength" select="string-length($distEmail)"/>
                     <xsl:choose>
                        <xsl:when test="$distEmailLength &gt; 0" >
                           <xsl:element name="gmd:electronicMailAddress">
                              <xsl:element name="gco:CharacterString"><xsl:value-of select="/metadata/distinfo/distrib/cntinfo/cntemail"/> </xsl:element><!-- gco:CharacterString -->
                           </xsl:element><!-- gmd:country -->
                        </xsl:when>
                        
                        <xsl:otherwise>
                           <xsl:element name="gmd:electronicMailAddress">
                              <xsl:attribute name="gco:nilReason">missing</xsl:attribute>
                           </xsl:element>
                        </xsl:otherwise>
                     </xsl:choose>
                     
                  </xsl:element><!-- gmd:CI_Address -->
               </xsl:element><!-- gmd:address -->
               
            </xsl:element><!-- gmd:CI_Contact -->
         </xsl:element><!-- gmd:contactInfo -->
         
         <xsl:element name="gmd:role">
            <xsl:element name="gmd:CI_RoleCode">
               <xsl:attribute name="codeList">http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode </xsl:attribute>
               <xsl:attribute name="codeListValue">distributor </xsl:attribute>
               <xsl:attribute name="codeSpace">005 </xsl:attribute>distributor
            </xsl:element><!-- gmd:CI_RoleCode -->
         </xsl:element><!-- gmd:role -->
         
      </xsl:element><!-- gmd:CI_ResponsibleParty -->
         </xsl:otherwise>
         
         
      </xsl:choose>
   </xsl:template>
</xsl:stylesheet>

