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

<!--
   Name: NGDA_Themes.xsl  
   Author:  Matthew J. McCready
   Date: 20131104
   Description:  XSLT stylesheet that transforms the value in the keywords/theme that are related to the ISO Topic Categories into the NGDA Portfolio Themes. 
   This template is called by 11_gmd:identificationInfo.xsl 
   Modification History:
      Initial   Date      Change Request ID   Description

-->

<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:variable name="MetDate" select="//metadata/metainfo/metd"/>


   <xsl:template name="NGDAThemes">
      <xsl:variable name="ISOKeywordsThemeKT" select="//metadata/idinfo/keywords/theme/themekt"/>
       
      <xsl:variable name="FullTitle" select="/metadata/idinfo[1]/citation[1]/citeinfo[1]/title[1]"/>
       <xsl:variable name="postPara"  select="substring-after($FullTitle,'(')"/>
      <xsl:variable name="CensusTheme" select="substring-before($postPara,')')"></xsl:variable>
      <xsl:variable name="ContainsPoint" select="contains($FullTitle,'Current Point Landmarks Shapefile')"/>
      <xsl:variable name="ContainsAreaLM" select="contains($FullTitle,'Current Area Landmark Shapefile')"/>
      <xsl:variable name="ContainsFaces" select="contains($FullTitle,'Current Topological Faces-Area Landmark Relationship Files')"></xsl:variable>
      
      <!-- Current Topological Faces-Area Landmark Relationship Files
         <xsl:comment> In the topic categories template</xsl:comment> 
      <xsl:comment>CensusTheme:<xsl:value-of select="$CensusTheme"/></xsl:comment>-->
      
      <xsl:for-each select="//metadata/idinfo/keywords/theme">
         <xsl:variable name="NonISOKeywordsThemeA" select="./themekt"/>

         <xsl:if test="$NonISOKeywordsThemeA ='ISO 19115 Topic Categories'">

            <xsl:for-each select="//metadata/idinfo/keywords/theme/themekey">
               <xsl:variable name="ThemeKey" select="."/>

               <xsl:if
                  test="$ThemeKey ='Biota' or $ThemeKey ='biota' or  $ThemeKey ='Boundaries' or $ThemeKey ='boundaries' or $ThemeKey ='Economy' or 
                  $ThemeKey ='ClimatologyMeteorologyAtmosphere' or $ThemeKey ='climatologyMeteorologyAtmosphere' or $ThemeKey ='Elevation' or 
                  $ThemeKey='elevation' or $ThemeKey ='GeoscientificInformation' or $ThemeKey='geoscientificInformation' or $ThemeKey ='Environment'
                  or $ThemeKey='ImageryBaseMapsEarthCover' or $ThemeKey='imageryBaseMapsEarthCover'  or $ThemeKey='InlandWaters' or $ThemeKey='inlandWaters'
                  or $ThemeKey='Oceans' or $ThemeKey='oceans' or $ThemeKey='PlanningCadastre' or $ThemeKey='planningCadastre' or $ThemeKey='Structure' or
                  $ThemeKey='structure' or $ThemeKey ='Transportation' or $ThemeKey ='transportation' or $ThemeKey='UtilitiesCommunication' or 
                  $ThemeKey='utilitiesCommunication'">
                  <!-- else try the full path  -->
                  <xsl:element name="gmd:descriptiveKeywords">
                     <xsl:element name="gmd:MD_Keywords">


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

                          <!-- <xsl:when test="$ThemeKey ='Biota'">
                              <xsl:call-template name="BiotaKey"/>
                           </xsl:when>

                           <xsl:when test="$ThemeKey ='biota'">
                              <xsl:call-template name="BiotaKey"/>
                           </xsl:when> -->

                           <xsl:when test="$ThemeKey ='Boundaries'">
                             <!-- <xsl:comment>In the test (UC)!!!!!!!!!!!!!!!!!!</xsl:comment> -->
                              <xsl:choose>
                                 <xsl:when test="$CensusTheme='TAZ'">
                                    <xsl:call-template name="TransKey"/>
                                 </xsl:when>
                                 <xsl:otherwise>
                              <xsl:call-template name="GovUnitKey"/>
                                 </xsl:otherwise>
                                 </xsl:choose>
                           </xsl:when>

                           <xsl:when test="$ThemeKey ='boundaries'">
                       <!--       <xsl:comment>In the test (lc)!!!!!!!!!!!!!!!!!!</xsl:comment> -->
                               <xsl:choose>
                                  <xsl:when test="$CensusTheme='TAZ'">
                                     <xsl:call-template name="TransKey"/>
                                  </xsl:when>
                                  <xsl:when test="$ContainsAreaLM='true'">
                                     <xsl:call-template name="CultResKey"/>
                                  </xsl:when>
                                  <xsl:when test="$ContainsFaces='true'">
                                     <xsl:call-template name="CultResKey"/>
                                  </xsl:when>
                                  <xsl:otherwise>
                                      <xsl:call-template name="GovUnitKey"/>
                                  </xsl:otherwise>
                              </xsl:choose>
                           </xsl:when>

                        <!--   <xsl:when test="$ThemeKey ='ClimatologyMeteorologyAtmosphere'">
                              <xsl:call-template name="ClimateKey"/>
                           </xsl:when>

                           <xsl:when test="$ThemeKey ='climatologyMeteorologyAtmosphere'">
                              <xsl:call-template name="ClimateKey"/>
                           </xsl:when> 
                           <xsl:when test="$ThemeKey='Elevation'">
                              <xsl:call-template name="ElevationKey"/>
                           </xsl:when>

                           <xsl:when test="$ThemeKey='elevation'">
                              <xsl:call-template name="ElevationKey"/>
                           </xsl:when>

                           <xsl:when test="$ThemeKey='GeoscientificInformation' ">
                              <xsl:call-template name="GeoKey"/>
                           </xsl:when>

                           <xsl:when test="$ThemeKey='geoscientificInformation' ">
                              <xsl:call-template name="GeoKey"/>

                           </xsl:when>

                           <xsl:when test="$ThemeKey='ImageryBaseMapsEarthCover'">
                              <xsl:call-template name="ImageKey"/>
                           </xsl:when>

                           <xsl:when test="$ThemeKey='imageryBaseMapsEarthCover'">
                              <xsl:call-template name="ImageKey"/>
                           </xsl:when>

                           <xsl:when test="$ThemeKey='InlandWaters'">
                              <xsl:call-template name="InlandWaterKey"/>
                           </xsl:when>

                           <xsl:when test="$ThemeKey='inlandWaters'">
                              <xsl:call-template name="InlandWaterKey"/>
                           </xsl:when>

                           <xsl:when test="$ThemeKey='Oceans'">
                              <xsl:call-template name="OceansKey"/>
                           </xsl:when>

                           <xsl:when test="$ThemeKey='oceans'">
                              <xsl:call-template name="OceansKey"/>
                           </xsl:when>

                           <xsl:when test="$ThemeKey='PlanningCadastre'">
                              <xsl:call-template name="CadKey"/>
                           </xsl:when>

                           <xsl:when test="$ThemeKey='planningCadastre'">
                              <xsl:call-template name="CadKey"/>
                           </xsl:when>-->

                           <xsl:when test="$ThemeKey='Structure'">
                              <xsl:call-template name="PropKey"/>
                           </xsl:when>

                           <xsl:when test="$ThemeKey='structure'">
                              <xsl:choose>
                                 <xsl:when test="$ContainsPoint='true'">
                                    <xsl:call-template name="CultResKey"/>
                                 </xsl:when>
                                 <xsl:otherwise>
                                    <xsl:call-template name="PropKey"/>
                                 </xsl:otherwise>
                              </xsl:choose>
                              
                           </xsl:when>

                           <xsl:when test="$ThemeKey ='Transportation'">
                              <xsl:call-template name="TransKey"/>
                           </xsl:when>

                           <xsl:when test="$ThemeKey ='transportation'">
                              <xsl:call-template name="TransKey"/>
                           </xsl:when>

                       <!--    <xsl:when test="$ThemeKey='UtilitiesCommunication'">
                              <xsl:call-template name="UtilKey"/>
                           </xsl:when>

                           <xsl:when test="$ThemeKey='utilitiesCommunication'">
                              <xsl:call-template name="UtilKey"/>
                           </xsl:when>-->
                            
                        </xsl:choose>


                        <xsl:call-template name="thesTypeName"/>
                     </xsl:element>
                  </xsl:element>
               </xsl:if>
            </xsl:for-each>
         </xsl:if>
      </xsl:for-each>

   </xsl:template>

   <xsl:template name="BiotaKey">
      <xsl:element name="gmd:keyword">
         <xsl:element name="gco:CharacterString">Biota</xsl:element>
      </xsl:element>
      <xsl:call-template name="NGDAThemeKeywords"/>
   </xsl:template>
   
   <xsl:template name="CultResKey">
      <xsl:element name="gmd:keyword">
         <xsl:element name="gco:CharacterString">Cultural Resources</xsl:element>
      </xsl:element>
      <xsl:call-template name="NGDAThemeKeywords"/>
   </xsl:template>

   <xsl:template name="GovUnitKey">
      <xsl:element name="gmd:keyword">
         <xsl:element name="gco:CharacterString">Governmental Units, and Administrative and Statistical Boundaries</xsl:element>
      </xsl:element>
      <xsl:call-template name="NGDAThemeKeywords"/>
   </xsl:template>

   <xsl:template name="TransKey">
      <xsl:element name="gmd:keyword">
         <xsl:element name="gco:CharacterString">Transportation</xsl:element>
      </xsl:element>
   </xsl:template>

   <xsl:template name="ClimateKey">
      <xsl:element name="gmd:keyword">
         <xsl:element name="gco:CharacterString">Climate and Weather</xsl:element>
      </xsl:element>
      <xsl:call-template name="NGDAThemeKeywords"/>
   </xsl:template>

   <xsl:template name="ElevationKey">
      <xsl:element name="gmd:keyword">
         <xsl:element name="gco:CharacterString">Elevation</xsl:element>
      </xsl:element>
      <xsl:call-template name="NGDAThemeKeywords"/>
   </xsl:template>

   <xsl:template name="GeoKey">
      <xsl:element name="gmd:keyword">
         <xsl:element name="gco:CharacterString">Geology</xsl:element>
      </xsl:element>
      <xsl:call-template name="NGDAThemeKeywords"/>
   </xsl:template>

   <xsl:template name="ImageKey">
      <xsl:element name="gmd:keyword">
         <xsl:element name="gco:CharacterString">Imagery</xsl:element>
      </xsl:element>
      <xsl:call-template name="NGDAThemeKeywords"/>
   </xsl:template>

   <xsl:template name="InlandWaterKey">
      <xsl:element name="gmd:keyword">
         <xsl:element name="gco:CharacterString">Water – Inland</xsl:element>
      </xsl:element>
      <xsl:call-template name="NGDAThemeKeywords"/>
   </xsl:template>

   <xsl:template name="OceansKey">
      <xsl:element name="gmd:keyword">
         <xsl:element name="gco:CharacterString">Water – Oceans and Coasts</xsl:element>
      </xsl:element>
      <xsl:call-template name="NGDAThemeKeywords"/>
   </xsl:template>

   <xsl:template name="CadKey">
      <xsl:element name="gmd:keyword">
         <xsl:element name="gco:CharacterString">Cadastre</xsl:element>
      </xsl:element>
      <xsl:call-template name="NGDAThemeKeywords"/>
   </xsl:template>

   <xsl:template name="PropKey">
      <xsl:element name="gmd:keyword">
         <xsl:element name="gco:CharacterString">Real Property</xsl:element>
      </xsl:element>
      <xsl:call-template name="NGDAThemeKeywords"/>
   </xsl:template>

   <xsl:template name="UtilKey">
      <xsl:element name="gmd:keyword">
         <xsl:element name="gco:CharacterString">Utilities</xsl:element>
      </xsl:element>
      <xsl:call-template name="NGDAThemeKeywords"/>
   </xsl:template>
   
   <xsl:template name="NGDAThemeKeywords">
      <xsl:element name="gmd:keyword">
         <xsl:element name="gco:CharacterString">NGDA</xsl:element>
      </xsl:element>
      <xsl:element name="gmd:keyword">
         <xsl:element name="gco:CharacterString">NGDA Portfolio Themes</xsl:element>
      </xsl:element>
      <xsl:element name="gmd:keyword">
         <xsl:element name="gco:CharacterString">National Geospatial Data Asset</xsl:element>
      </xsl:element>
   </xsl:template>

   <xsl:template name="thesTypeName">

      <xsl:element name="gmd:type">
         <xsl:element name="gmd:MD_KeywordTypeCode">
            <xsl:attribute name="codeList"
               >http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode</xsl:attribute>
            <xsl:attribute name="codeListValue">theme</xsl:attribute>
            <xsl:attribute name="codeSpace">005</xsl:attribute> theme </xsl:element>
      </xsl:element>

      <xsl:element name="gmd:thesaurusName">
         <xsl:element name="gmd:CI_Citation">

            <xsl:element name="gmd:title">
               <xsl:element name="gco:CharacterString">NGDA Portfolio Themes</xsl:element>
            </xsl:element>

            <xsl:element name="gmd:date">
               <xsl:element name="gmd:CI_Date">
                  <xsl:element name="gmd:date">
                     <xsl:element name="gco:Date">2010-02-01</xsl:element>
                  </xsl:element>

                  <xsl:element name="gmd:dateType">
                     <xsl:element name="gmd:CI_DateTypeCode">
                        <xsl:attribute name="codeList"
                           >http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode</xsl:attribute>
                        <xsl:attribute name="codeListValue">revision</xsl:attribute>
                        <xsl:attribute name="codeSpace">003</xsl:attribute> revision </xsl:element>
                  </xsl:element>

                 

               </xsl:element>
            </xsl:element>

            <xsl:element name="gmd:otherCitationDetails">
               <xsl:element name="gco:CharacterString"
                  >http://www.fgdc.gov/initiatives/resources/2013-2-1-ngda-data-themes-fgdc-sc-revised.pdf</xsl:element>
            </xsl:element>

         </xsl:element>
      </xsl:element>


   </xsl:template>

</xsl:stylesheet>
