<?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. 
-->







<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">
                        
                        <xsl:attribute name="gid1">1</xsl:attribute>
                        <xsl:apply-templates select="enttypl"/>
                      
                     </xsl:element>
                  </xsl:if>

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

                  <xsl:if test="string-length(enttypds) &gt; 0">
                     <xsl:element name="Entity_Type_Definition_Source">
                        
                        <xsl:attribute name="gid1">1</xsl:attribute>
                        <xsl:apply-templates select="enttypds"/>
                      
                     </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">
                        
                        <xsl:attribute name="gid1">1</xsl:attribute>
                        <xsl:attribute name="gid2">1</xsl:attribute>
                        <xsl:apply-templates select="attrlabl"/>
                      
                     </xsl:element>
                  </xsl:if>

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

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

                  <xsl:for-each select="attrdomv">
                     <xsl:choose>
                        <xsl:when test="edom">
                           <xsl:for-each select="edom">
                              
                              <xsl:if test="string-length(edomv) &gt; 0">
                                 <xsl:element name="Enumerated_Domain_Value">
                                    
                                    <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"/>
                                    
                                 </xsl:element>
                              </xsl:if>
                              
                              
                              <xsl:if test="string-length(edomvd) &gt; 0">
                                 <xsl:element name="Enumerated_Domain_Value_Definition">
                                    
                                    <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"/>
                                    
                                 </xsl:element>
                              </xsl:if>
                              
                              <xsl:if test="string-length(edomvds) &gt; 0">
                                 <xsl:element name="Enumerated_Domain_Value_Definition_Source">
                                    
                                    <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"/>
                                    
                                 </xsl:element>
                              </xsl:if>
                              
                           </xsl:for-each>
                        </xsl:when>
                        <xsl:when test="rdom">
                           <xsl:for-each select="rdom">
                              
                              <xsl:if test="string-length(rdommin) &gt; 0">
                                 <xsl:element name="Range_Domain_Minimum">
                                    
                                    <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"/>
                                    
                                 </xsl:element>
                              </xsl:if>
                              
                              <xsl:if test="string-length(rdommax) &gt; 0">
                                 <xsl:element name="Range_Domain_Maximum">
                                    
                                    <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"/>
                                    
                                 </xsl:element>
                              </xsl:if>
                              
                              
                              <xsl:if test="attrunit">
                                 <xsl:element name="Attribute_Units_of_Measure">
                                    
                                    <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"/>
                                    
                                 </xsl:element>
                              </xsl:if>
                              
                           </xsl:for-each>
                        </xsl:when>
                        <xsl:when test="codesetd">
                           <xsl:for-each select="codesetd">
                              
                              <xsl:if test="string-length(codesetn) &gt; 0">
                                 <xsl:element name="Codeset_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"/>
                                    
                                 </xsl:element>
                              </xsl:if>
                              
                              <xsl:if test="string-length(codesets) &gt; 0">
                                 <xsl:element name="Codeset_Source">
                                    
                                    <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"/>
                                    
                                 </xsl:element>
                              </xsl:if>
                              
                           </xsl:for-each>
                        </xsl:when>
                        
                        <xsl:when test="udom">
                           <xsl:for-each select="udom">
                              
                              <xsl:element name="Unrepresentable_Domain">
                                 
                                 <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="."/>
                                 
                              </xsl:element>
                              
                           </xsl:for-each>
                        </xsl:when>
                        <xsl:otherwise>
                           <xsl:element name="Attribute_Domain_Values">
                              
                           </xsl:element>
                        </xsl:otherwise>
                        
                        
                     </xsl:choose>
                     
                     
                     <!--  <xsl:if test="edom">

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

                           <xsl:if test="string-length(edomv) &gt; 0">
                              <xsl:element name="Enumerated_Domain_Value">
                                 
                                 <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"/>
                               
                              </xsl:element>
                           </xsl:if>


                           <xsl:if test="string-length(edomvd) &gt; 0">
                              <xsl:element name="Enumerated_Domain_Value_Definition">
                                 
                                 <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"/>
                               
                              </xsl:element>
                           </xsl:if>

                           <xsl:if test="string-length(edomvds) &gt; 0">
                              <xsl:element name="Enumerated_Domain_Value_Definition_Source">
                                 
                                 <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"/>
                               
                              </xsl:element>
                           </xsl:if>

                        </xsl:for-each>
                     </xsl:if>
                

                    <xsl:if test="rdom">

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

                           <xsl:if test="string-length(rdommin) &gt; 0">
                              <xsl:element name="Range_Domain_Minimum">
                                 
                                 <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"/>
                               
                              </xsl:element>
                           </xsl:if>

                           <xsl:if test="string-length(rdommax) &gt; 0">
                              <xsl:element name="Range_Domain_Maximum">
                                 
                                 <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"/>
                               
                              </xsl:element>
                           </xsl:if>

                          
                           <xsl:if test="attrunit">
                              <xsl:element name="Attribute_Units_of_Measure">
                                 
                                 <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"/>
                               
                              </xsl:element>
                           </xsl:if>
                         
                        </xsl:for-each>

                     </xsl:if> 
                   

                     <xsl:if test="codesetd">

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

                           <xsl:if test="string-length(codesetn) &gt; 0">
                              <xsl:element name="Codeset_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"/>
                               
                              </xsl:element>
                           </xsl:if>

                           <xsl:if test="string-length(codesets) &gt; 0">
                              <xsl:element name="Codeset_Source">
                                 
                                 <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"/>
                               
                              </xsl:element>
                           </xsl:if>

                        </xsl:for-each>

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

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

                           <xsl:element name="Unrepresentable_Domain">
                              
                              <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="."/>
                            
                           </xsl:element>

                        </xsl:for-each>

                     </xsl:if>-->
                 
                  </xsl:for-each>
               

               </xsl:for-each>
             

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

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

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

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