<?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:choose>
                     <xsl:when test="attrdomv">
                        <!--   <xsl:comment> inside the attribute Domain Test</xsl:comment> -->
                        <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">2</xsl:attribute> <!-- was 1 -->
                                       <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:for-each>
                     </xsl:when>
                     <xsl:otherwise>
                        <xsl:element name="Attribute_Domain_Values"/>
                     </xsl:otherwise>

                  </xsl:choose>
                  <!-- good text -->

               </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>
