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


<!--
   Name:  05_eainfo.xsl
   Author:  Matthew J. McCready
   Date:  20070115
   Description:  XSLT stylesheet that transforms Section 5 of an
                 FGDC format file into a mif file
   Modification History:
      Initial   Date      Change Request ID   Description
      MMC       20070115   N/A                Initial Version
      MMC       20071100   N/A                Modified so that it will work with only one                                                        Attribute_Domain_Value supplied for multiple 
                                               Enumerated_Domain, Range_Domain, Codeset_Domain
                                               and Unrepresentable_Domain elements. Previously, 
                                               there had to be an Attribute_Domain_Value before 
                                               each instance of Enumerated_Domain, Range_Domain, 
                                               Codeset_Domain and Unrepresentable_Domain. This 
                                               means that more files will pass validation. 
     MMC        20080919                      Modified the script so that only elements with a 
                                               length of 1 character or greater will get 
                                               transformed into a MIF/MRF element.
-->







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

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

<xsl:if test="//eainfo">

<xsl:if test="//eainfo/detailed">
<xsl:for-each select="//eainfo/detailed">

<xsl:for-each select="enttyp">

<xsl:if test="string-length(enttypl) &gt; 0">
<xsl:element name="Entity_Type_Label"> <!-- mif name -->
<xsl:attribute name ="gid1">1</xsl:attribute>
<xsl:apply-templates select="enttypl"/> <!-- FGDC path -->
</xsl:element>
</xsl:if>

<xsl:if test="string-length(enttypd) &gt; 0">
<xsl:element name="Entity_Type_Definition"> <!-- mif name -->
<xsl:attribute name ="gid1">1</xsl:attribute>
<xsl:apply-templates select="enttypd"/> <!-- FGDC path -->
</xsl:element>
</xsl:if>

<xsl:if test="string-length(enttypds) &gt; 0">
<xsl:element name="Entity_Type_Definition_Source"> <!-- mif name -->
<xsl:attribute name ="gid1">1</xsl:attribute>
<xsl:apply-templates select="enttypds"/> <!-- FGDC path -->
</xsl:element>
</xsl:if>

</xsl:for-each>

<xsl:for-each select="attr">

<xsl:if test="string-length(attrlabl) &gt; 0">
<xsl:element name="Attribute_Label"> <!-- mif name -->
<xsl:attribute name ="gid1">1</xsl:attribute>
<xsl:attribute name ="gid2">1</xsl:attribute>
<xsl:apply-templates select="attrlabl"/> <!-- FGDC path -->
</xsl:element>
</xsl:if>

<xsl:if test="string-length(attrdef) &gt; 0">
<xsl:element name="Attribute_Definition"> <!-- mif name -->
<xsl:attribute name ="gid1">1</xsl:attribute>
<xsl:attribute name ="gid2">1</xsl:attribute>
<xsl:apply-templates select="attrdef"/> <!-- FGDC path -->
</xsl:element>
</xsl:if>

<xsl:if test="string-length(attrdefs) &gt; 0">
<xsl:element name="Attribute_Definition_Source"> <!-- mif name -->
<xsl:attribute name ="gid1">1</xsl:attribute>
<xsl:attribute name ="gid2">1</xsl:attribute>
<xsl:apply-templates select="attrdefs"/> <!-- FGDC path -->
</xsl:element>
</xsl:if>

 <xsl:for-each select="attrdomv">
 <xsl:if test="edom">

<xsl:for-each select="edom">

<xsl:if test="string-length(edomv) &gt; 0">
<xsl:element name="Enumerated_Domain_Value"> <!-- mif name -->
<xsl:attribute name ="gid1">1</xsl:attribute>
<xsl:attribute name ="gid2">1</xsl:attribute>
<xsl:attribute name ="gid3">1</xsl:attribute>
<xsl:apply-templates select="edomv"/> <!-- FGDC path -->
</xsl:element>
</xsl:if>


<xsl:if test="string-length(edomvd) &gt; 0">
<xsl:element name="Enumerated_Domain_Value_Definition"> <!-- mif name -->
<xsl:attribute name ="gid1">1</xsl:attribute>
<xsl:attribute name ="gid2">1</xsl:attribute>
<xsl:attribute name ="gid3">1</xsl:attribute>
<xsl:apply-templates select="edomvd"/> <!-- FGDC path -->
</xsl:element>
</xsl:if>

<xsl:if test="string-length(edomvds) &gt; 0">
<xsl:element name="Enumerated_Domain_Value_Definition_Source"> <!-- mif name -->
<xsl:attribute name ="gid1">1</xsl:attribute>
<xsl:attribute name ="gid2">1</xsl:attribute>
<xsl:attribute name ="gid3">1</xsl:attribute>
<xsl:apply-templates select="edomvds"/> <!-- FGDC path -->
</xsl:element>
</xsl:if>

</xsl:for-each>
</xsl:if>  <!-- //eainfo/detailed/attr/attrdomv/edom -->

<xsl:if test="rdom">

<xsl:for-each select="rdom">

<xsl:if test="string-length(rdommin) &gt; 0">
<xsl:element name="Range_Domain_Minimum"> <!-- mif name -->
<xsl:attribute name ="gid1">1</xsl:attribute>
<xsl:attribute name ="gid2">1</xsl:attribute>
<xsl:attribute name ="gid3">1</xsl:attribute>
<xsl:apply-templates select="rdommin"/> <!-- FGDC path -->
</xsl:element>
</xsl:if>

<xsl:if test="string-length(rdommax) &gt; 0">
<xsl:element name="Range_Domain_Maximum"> <!-- mif name -->
<xsl:attribute name ="gid1">1</xsl:attribute>
<xsl:attribute name ="gid2">1</xsl:attribute>
<xsl:attribute name ="gid3">1</xsl:attribute>
<xsl:apply-templates select="rdommax"/> <!-- FGDC path -->
</xsl:element>
</xsl:if>

<xsl:if test="//eainfo/detailed/attr/attrdomv/rdom/attrunit">
<xsl:element name="Attribute_Units_of_Measure"> <!-- mif name -->
<xsl:attribute name ="gid1">1</xsl:attribute>
<xsl:attribute name ="gid2">1</xsl:attribute>
<xsl:attribute name ="gid3">1</xsl:attribute>
<xsl:apply-templates select="attrunit"/> <!-- FGDC path -->
</xsl:element>
</xsl:if> <!-- //eainfo/detailed/attr/attrdomv/rdom/attrunit -->
</xsl:for-each>

</xsl:if> <!-- //eainfo/detailed/attr/attrdomv/rdom -->

<xsl:if test="codesetd">

<xsl:for-each select="codesetd">

<xsl:if test="string-length(codesetn) &gt; 0">
<xsl:element name="Codeset_Name"> <!-- mif name -->
<xsl:attribute name ="gid1">1</xsl:attribute>
<xsl:attribute name ="gid2">1</xsl:attribute>
<xsl:attribute name ="gid3">1</xsl:attribute>
<xsl:apply-templates select="codesetn"/> <!-- FGDC path -->
</xsl:element>
</xsl:if>

<xsl:if test="string-length(codesets) &gt; 0">
<xsl:element name="Codeset_Source"> <!-- mif name -->
<xsl:attribute name ="gid1">1</xsl:attribute>
<xsl:attribute name ="gid2">1</xsl:attribute>
<xsl:attribute name ="gid3">1</xsl:attribute>
<xsl:apply-templates select="codesets"/> <!-- FGDC path -->
</xsl:element>
</xsl:if>

</xsl:for-each>

</xsl:if> <!-- //eainfo/detailed/attr/attrdomv/codesetd -->

<xsl:if test="udom">

<xsl:for-each select="udom">

<xsl:element name="Unrepresentable_Domain"> <!-- mif name -->
<xsl:attribute name ="gid1">1</xsl:attribute>
<xsl:attribute name ="gid2">1</xsl:attribute>
<xsl:attribute name ="gid3">1</xsl:attribute>
<xsl:apply-templates select="."/> <!-- FGDC path -->
</xsl:element>

</xsl:for-each>

</xsl:if> <!-- //eainfo/detailed/attr/attrdomv/udom -->
</xsl:for-each>  <!-- //eainfo/detailed/enttyp/attr/attrdomv -->

</xsl:for-each> <!-- //eainfo/detailed/enttyp/attr -->

</xsl:for-each> 
<!-- //eainfo/detailed/ -->
</xsl:if> <!-- //eainfo/detailed/enttyp -->

<xsl:if test="//eainfo/overview">

<xsl:element name="Entity_and_Attribute_Overview"> <!-- mif name -->
<xsl:attribute name ="gid1">1</xsl:attribute>
<xsl:apply-templates select="//eainfo/overview/eaover"/> <!-- FGDC path -->
</xsl:element>

<xsl:for-each select="//eainfo/overview/eadetcit">
<xsl:element name="Entity_and_Attribute_Detail_Citation"> <!-- mif name -->
<xsl:attribute name ="gid1">1</xsl:attribute>
<xsl:apply-templates select="."/> <!-- FGDC path -->
</xsl:element>
</xsl:for-each>

</xsl:if> <!-- //eainfo/overview -->
</xsl:if> <!-- eainfo -->
</xsl:template>
</xsl:stylesheet>
