<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gss="http://www.isotc211.org/2005/gss"
 xmlns:gts="http://www.isotc211.org/2005/gts" xmlns:gml="http://www.opengis.net/gml/3.2"
 xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.isotc211.org/2005/gfc"
 xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:gfc="http://www.isotc211.org/2005/gfc"
 xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gmx="http://www.isotc211.org/2005/gmx"
 xmlns:gsr="http://www.isotc211.org/2005/gsr"
 xsi:schemaLocation="http://www.isotc211.org/2005/gfc Q:/users/mize.jacqueline/ISO/gfc/gfc.xsd"
 id="FC001">


 <!--
Name:  EAFile.xs
   Author:  Matthew J. McCready
   Date:  20110601
   Description:  XSLT stylesheet that transforms the Entity and Attribute Section (section 5) of a FGDC File into an ISO 19110 file.   
                
  Modification History:
      Initial   Date      Change Request ID   Description

-->


 <xsl:output method="xml" version="1.0" encoding="ISO-8859-1" indent="yes"/>
 <xsl:template name="ISOEAFile" match="/">

  <xsl:if test="/MIF/Entity_Type_Label">

   <xsl:element name="gfc:FC_FeatureCatalogue">

    <xsl:element name="gmx:name">

     <xsl:variable name="FullTitle" select="/MIF/Title[@section='citation']"/>
    <!-- <xsl:variable name="County" select="contains($FullTitle,'County')"/>
     <xsl:variable name="State" select="contains($FullTitle,'state')"/>
     <xsl:variable name="nation" select="contains($FullTitle,'nation')"/> -->
     <xsl:variable name="preFirstComma" select="substring-before($FullTitle,',')"/>

    <!-- <xsl:comment> County= <xsl:value-of select="$County"/> State=<xsl:value-of select="$State"/> Nation= <xsl:value-of select="$nation"/> </xsl:comment> -->
     <xsl:choose>

      <!-- <xsl:when test="$County = true"> -->
         <xsl:when test="contains($FullTitle,'County')">
       <!-- <xsl:comment> In the county section</xsl:comment> -->
       <xsl:variable name="PostFirstComma1" select="substring-after($FullTitle,',')"/>
       <xsl:variable name="PostFirstComma2" select="substring-after($PostFirstComma1,',')"/>
       <xsl:variable name="PostFirstComma3" select="substring-after($PostFirstComma2,',')"/>
       <xsl:variable name="PostFirstComma4" select="substring-after($PostFirstComma3,',')"/>
       <xsl:variable name="PostFirstComma5" select="substring-after($PostFirstComma4,',')"/>
        <xsl:comment>$PostFirstComma4 = <xsl:value-of select="$PostFirstComma4"/> </xsl:comment>
       <xsl:variable name="FinalTitle" select="concat('Feature Catalog for ',$preFirstComma,',',$PostFirstComma5)"/>

       <xsl:element name="gco:CharacterString">
      <xsl:value-of select="$FinalTitle"/>
     </xsl:element>
      </xsl:when>

      <xsl:when test="contains($FullTitle,'state')">
       <xsl:variable name="PostFirstComma1" select="substring-after($FullTitle,',')"/>
       <xsl:variable name="PostFirstComma2" select="substring-after($PostFirstComma1,',')"/>
       <xsl:variable name="PostFirstComma3" select="substring-after($PostFirstComma2,',')"/>
       <xsl:variable name="PostFirstComma4" select="substring-after($PostFirstComma3,',')"/>
       <xsl:variable name="FinalTitle" select="concat('Feature Catalog for',$preFirstComma,',',$PostFirstComma4)"/>
<xsl:element name="gco:CharacterString">
      <xsl:value-of select="$FinalTitle"/>
     </xsl:element>
      </xsl:when>

      <xsl:when test="contains($FullTitle,'nation')">
       <xsl:variable name="PostFirstComma1" select="substring-after($FullTitle,',')"/>
       <xsl:variable name="PostFirstComma2" select="substring-after($PostFirstComma1,',')"/>
       <xsl:variable name="PostFirstComma3" select="substring-after($PostFirstComma2,',')"/>
       <xsl:variable name="PostFirstComma4" select="substring-after($PostFirstComma3,',')"/>
       <xsl:variable name="FinalTitle" select="concat('Feature Catalog for',$preFirstComma,',',PostFirstComma4)"/>

<xsl:element name="gco:CharacterString">
      <xsl:value-of select="$FinalTitle"/>
     </xsl:element>
      </xsl:when>

     </xsl:choose>
    <!-- <xsl:element name="gco:CharacterString">
      <xsl:value-of select="$FinalTitle"/>
     </xsl:element> -->
    </xsl:element>
    <!-- gmx:name -->

    <xsl:element name="gmx:scope">
     <xsl:attribute name="gco:nilReason">unknown</xsl:attribute>
    </xsl:element>
    <!-- gmx:scope -->

    <xsl:element name="gmx:versionNumber">
     <xsl:attribute name="gco:nilReason">unknown</xsl:attribute>
    </xsl:element>
    <!-- gmx:versionNumber -->

    <xsl:element name="gmx:versionDate">
     <xsl:value-of select="/MIF/Edition"/>
    </xsl:element>
    <!-- gmx:versionDate -->

    <xsl:element name="gmx:language">
     <xsl:element name="gco:CharacterString">
      <xsl:value-of select="/MIF/Metadata_Language"/>
     </xsl:element>
    </xsl:element>
    <!-- gmx:language -->

    <xsl:element name="gmx:characterSet">
     <xsl:attribute name="codeList"
      >http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_CharacterSetCode</xsl:attribute>
     <xsl:attribute name="codeListValue">utf8</xsl:attribute>
     <xsl:attribute name="codeSpace">004</xsl:attribute> utf8 </xsl:element>
    <!-- gmx:characterSet -->


    <!-- producer information begins here -->
    <xsl:element name="gfc:producer">
     <xsl:element name="gmd:CI_ResponsibleParty">

      <xsl:element name="gmd:organisationName">
       <xsl:element name="gco:CharacterString">
        <xsl:value-of select="/MIF/Contact_Organization[@section='metadata']"/>
       </xsl:element>
      </xsl:element>

      <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="/MIF/Contact_Voice_Telephone[@section='metadata']"/>
           </xsl:element>
          </xsl:element>

          <xsl:element name="gmd:facsimile">
           <xsl:element name="gco:CharacterString">
            <xsl:value-of select="/MIF/Contact_Facsimile_Telephone[@section='metadata']"/>
           </xsl:element>
          </xsl:element>

         </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="/MIF/Address[@section='metadata']"/>
           </xsl:element>
          </xsl:element>
          <!-- gmd:deliveryPoint -->

          <xsl:element name="gmd:city">
           <xsl:element name="gco:CharacterString">
            <xsl:value-of select="/MIF/City[@section='metadata']"/>
           </xsl:element>
          </xsl:element>
          <!-- gmd:city -->

          <xsl:element name="gmd:administrativeArea">
           <xsl:element name="gco:CharacterString">
            <xsl:value-of select="/MIF/State_or_Province[@section='metadata']"/>
           </xsl:element>
          </xsl:element>
          <!-- gmd:administrativeArea -->

          <xsl:element name="gmd:postalCode">
           <xsl:element name="gco:CharacterString">
            <xsl:value-of select="/MIF/Postal_Code[@section='metadata']"/>
           </xsl:element>
          </xsl:element>
          <!-- gmd:postalCode -->

          <xsl:element name="gmd:country">
           <xsl:element name="gco:CharacterString">
            <xsl:value-of select="/MIF/Country[@section='metadata']"/>
           </xsl:element>
          </xsl:element>
          <!-- gmd:postalCode -->

          <xsl:element name="gmd:electronicMailAddress">
           <xsl:element name="gco:CharacterString">
            <xsl:value-of select="/MIF/Contact_Electronic_Mail_Address[@section='metadata']"/>
           </xsl:element>
          </xsl:element>
          <!-- gmd:postalCode -->
         </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">resourceProvider</xsl:attribute>
        <xsl:attribute name="codeSpace">001</xsl:attribute> resourceProvider </xsl:element>
       <!-- gmd:CI_RoleCode -->

      </xsl:element>
      <!-- gmd:role -->
     </xsl:element>
     <!-- gmd:CI_ResponsibleParty -->
    </xsl:element>
    <!-- gfc:producer -->

    <xsl:element name="gfc:featureType">
     <xsl:element name="gfc:FC_FeatureType">

      <xsl:element name="gfc:typeName">
       <xsl:element name="gco:LocalName">
        <xsl:value-of select="/MIF/Entity_Type_Label"/>
       </xsl:element>
      </xsl:element>

      <xsl:element name="gfc:definition">
       <xsl:element name="gco:CharacterString">
        <xsl:value-of select="/MIF/Attribute_Definition"/>
       </xsl:element>
      </xsl:element>

      <xsl:element name="gfc:isAbstract">
       <xsl:element name="gco:Boolean">
        <xsl:text>false</xsl:text>
       </xsl:element>
      </xsl:element>

      <xsl:comment> The rest goes here !!!!!!!!!!!!!!!!!!!!!! </xsl:comment>
        <xsl:text>
</xsl:text>

      <xsl:for-each-group select="MIF/Attribute_Label, MIF/Attribute_Definition, MIF/Attribute_Definition_Source, MIF/Codeset_Name, MIF/Codeset_Source, MIF/Unrepresentable_Domain, MIF/Enumerated_Domain_Value, MIF/Enumerated_Domain_Value_Definition, MIF/Enumerated_Domain_Value_Definition_Source  " group-by="@gid2">
<xsl:sort select="current-grouping-key()" data-type="number"/>
      <xsl:sort select="current-grouping-key()" data-type="text"/>  
     
         <xsl:element name="gfc:carrierOfCharacteristics">
        <xsl:element name="gfc:FC_FeatureAttribute">

        <xsl:for-each select="current-group()">
         
         <xsl:if test="name()='Attribute_Label'"> 
         <xsl:element name="gfc:memberName">
          <xsl:element name="gco:LocalName">
           <xsl:value-of select="."/>
          </xsl:element>
         </xsl:element>
        </xsl:if>

        <xsl:if test="name()='Attribute_Definition'"> 
        <xsl:element name="gfc:definition">
          <xsl:element name="gco:CharacterString">
           <xsl:value-of select="."/>
          </xsl:element>
         </xsl:element>
    <xsl:element name="gfc:cardinality">
<xsl:attribute name="gco:nilReason">unknown</xsl:attribute>
</xsl:element>


        </xsl:if>

<!-- <xsl:element name="gfc:cardinality">
<xsl:attribute name="gco:nilReason">unknown</xsl:attribute>
</xsl:element> -->




<xsl:if test="name()='Attribute_Definition_Source'">
<xsl:comment>First Citation begins here !!!!!!!!!!</xsl:comment>
<xsl:text>
</xsl:text>

<xsl:element name="gfc:definitionReference">
<xsl:element name="gfc:FC_DefinitionReference">
<xsl:element name="gfc:definitionSource">
<xsl:element name="gfc:FC_DefinitionSource">
<xsl:element name="gfc:source">
<xsl:element name="gmd:CI_Citation">

<xsl:element name="gmd:title">
<xsl:attribute name="gco:nilReason">inapplicable</xsl:attribute>
</xsl:element>

<xsl:element name="gmd:date">
<xsl:attribute name="gco:nilReason">unknown</xsl:attribute>
</xsl:element>



<xsl:element name="gmd:citedResponsibleParty">

<!-- <xsl:if test="name()='Codeset_Source'"> -->
<xsl:element name="gmd:organisationName">
<xsl:element name="gco:CharacterString"> <xsl:value-of select="."/> </xsl:element>
</xsl:element> <!-- gmd:organisationName -->
<!-- </xsl:if> -->

<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">resourceProvider</xsl:attribute>
<xsl:attribute name="codeSpace">001</xsl:attribute>
resourceProvider
</xsl:element> <!-- gmd:CI_RoleCode -->
</xsl:element> <!--gmd:role --> 

</xsl:element><!-- gmd:citedResponsibleParty -->
</xsl:element><!-- gmd:CI_Citation -->
</xsl:element><!-- gfc:source -->
</xsl:element><!-- gfc:FC_DefinitionSource -->
</xsl:element><!-- gfc:definitionSource -->
</xsl:element><!-- gfc:FC_DefinitionReference -->
</xsl:element><!-- gfc:definitionReference -->

<!-- <xsl:value-of select="$Codeset_Name_Var"/> -->
<xsl:comment>First Citation ends here !!!!!!!!!!</xsl:comment> 
<xsl:text>
</xsl:text>
</xsl:if>



<xsl:variable name="Codeset_NameVar" select="MIF/Codeset_Name"/>


<xsl:if test="name()='Codeset_Source'">
<!-- <xsl:variable name="Codeset_Name_Var"> -->
<xsl:comment>Second Citation begins here !!!!!!!!!!</xsl:comment>
<xsl:text>
</xsl:text>
<xsl:element name="gfc:listedValue">
<xsl:element name="gfc:FC_ListedValue">

<xsl:element name="gfc:label">
<xsl:element name="gco:CharacterString"> <xsl:value-of select="$Codeset_NameVar"/> </xsl:element>
</xsl:element>

 <xsl:element name="gfc:definitionReference">
 <xsl:element name="gfc:FC_DefinitionReference">

<xsl:element name="gfc:definitionSource">
<xsl:element name="gfc:FC_DefinitionSource">
<xsl:element name="gfc:source">

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

<xsl:element name="gmd:title">
<xsl:attribute name="gco:nilReason">unknown</xsl:attribute> 
</xsl:element>

 <xsl:element name="gmd:date">
<xsl:attribute name="gco:nilReason">unknown</xsl:attribute>
</xsl:element>

<xsl:element name="gmd:citedResponsibleParty">
 <xsl:element name="gmd:CI_ResponsibleParty">

<xsl:element name="gmd:organisationName">
<xsl:element name="gco:CharacterString"> <xsl:value-of select="."/> </xsl:element>
</xsl:element>

 <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">resourceProvider</xsl:attribute>
<xsl:attribute name="codeSpace">001</xsl:attribute>
resourceProvider
</xsl:element>  <!-- gmd:CI_RoleCode -->
 </xsl:element>  <!--gmd:role -->
 </xsl:element>  <!-- gmd:CI_ResponsibleParty -->
</xsl:element>  <!-- gmd:citedResponsibleParty -->

</xsl:element>  <!-- gmd:CI_Citation -->

</xsl:element>  <!-- gfc:source -->
</xsl:element>  <!-- gfc:FC_DefinitionSource -->
</xsl:element>  <!-- gfc:definitionSource -->
 </xsl:element> <!-- gfc:FC_DefinitionReference -->
</xsl:element>  <!-- gfc:definitionReference -->
</xsl:element>  <!-- gfc:FC_ListedValue -->
 </xsl:element>  <!-- gfc:listedValue -->
<xsl:comment>Second Citation ends here !!!!!!!!!!</xsl:comment>
<xsl:text>
</xsl:text>
<!-- </xsl:variable> -->
</xsl:if>

      </xsl:for-each>
<xsl:comment> The for each group ends here!!!!!!!!</xsl:comment>
<xsl:text>
</xsl:text> 
        </xsl:element>
       </xsl:element>
       </xsl:for-each-group>


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

   </xsl:element>
   <!-- gfc:FC_FeatureCatalogue -->
  </xsl:if>





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