<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:gmd="http://www.isotc211.org/2005/gmd"
    xmlns:gmi="http://www.isotc211.org/2005/gmi" xmlns:gmx="http://www.isotc211.org/2005/gmx"
    xmlns:gsr="http://www.isotc211.org/2005/gsr" 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:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:gfc="http://www.isotc211.org/2005/gfc" xmlns:vmf="http://www.altova.com/MapForce/UDF/vmf"
    xmlns:fn="http://www.w3.org/2005/xpath-functions"
    xmlns:grp="http://www.altova.com/Mapforce/grouping"
    xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl"
    exclude-result-prefixes="fn grp vmf xs xsi xsl xd" xmlns="http://www.isotc211.org/2005/gmi">
    <xd:doc scope="stylesheet">
        <xd:desc>
            <xd:p><xd:b>Created on:</xd:b> Jan 2, 2014</xd:p>
            <xd:p><xd:b>Author:</xd:b> mccre004</xd:p>
            <xd:p/>
        </xd:desc>
    </xd:doc>
    <xsl:template name="carrierOfCharacteristics">
        <!-- <xsl:for-each-group select="//MIF/Attribute_Label" group-by="@gid2"> -->
        <xsl:for-each-group
            select="Entity_Type_Label,
            Entity_Type_Definition,
            Entity_Type_Definition_Source,
            Attribute_Label,
            Attribute_Definition,
            Attribute_Definition_Source,
            Enumerated_Domain_Value,
            Enumerated_Domain_Value_Definition,
            Enumerated_Domain_Value_Definition_Source,
            Range_Domain_Minimum,
            Range_Domain_Maximum,
            Attribute_Units_of_Measure,
            Codeset_Name,
            Codeset_Source,
            Unrepresentable_Domain"
            group-by="@gid1">
            <xsl:sort select="current-grouping-key()" data-type="number"/>
            <xsl:sort select="current-grouping-key()" data-type="text"/>
            <xsl:variable name="gid1" select="current-grouping-key()"/>

           <!-- <xsl:for-each select="current-group()">  original -->
            <xsl:for-each-group select="current-group()" group-by="@gid2">
                <xsl:sort select="current-grouping-key()" data-type="number"/>
                <xsl:sort select="current-grouping-key()" data-type="text"/>
                
                <xsl:variable name="gid2" select="current-grouping-key()"/>
                <xsl:variable name="gid2Length" select="string-length($gid2)"/>
                <xsl:variable name="numOfNodesED2"
                    select="count(/MIF/Enumerated_Domain_Value[@gid1=$gid1][@gid2=$gid2])"/>
                <xsl:variable name="numOfNodesRd2"
                    select="count(/MIF/Range_Domain_Minimum[@gid1=$gid1][@gid2=$gid2])"/>
                <xsl:variable name="numOfNodesCs2"
                    select="count(/MIF/Codeset_Name[@gid1=$gid1][@gid2=$gid2])"/>
                <xsl:variable name="numOfNodesUD2"
                    select="count(/MIF/Unrepresentable_Domain[@gid1=$gid1][@gid2=$gid2])"/>
                <xsl:variable name="totalNodes">
                    <xsl:value-of select="$numOfNodesUD2+$numOfNodesRd2+$numOfNodesED2+$numOfNodesCs2"/>
                </xsl:variable>
                
                <xsl:variable name="currentGroup" select=" number(current-grouping-key())"/>
                <xsl:comment>currentGroup::<xsl:value-of select="$currentGroup"/></xsl:comment>

                <xsl:element name="gfc:carrierOfCharacteristics">
                    <xsl:element name="gfc:FC_FeatureAttribute">

                        <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:element name="gfc:definition">
                                <xsl:element name="gco:CharacterString">
                                    <!--   <xsl:value-of select="//MIF/Entity_Type_Definition[@gid2='2']"/>-->
                                    <xsl:value-of select="/MIF/Attribute_Definition[$currentGroup]"
                                    />
                                </xsl:element>
                            </xsl:element>

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

                            <xsl:choose>
                                <xsl:when
                                    test="/MIF/Attribute_Definition_Source[$currentGroup]='U.S. Census Bureau'">
                                    <xsl:element name="gfc:definitionReference">
                                        <xsl:attribute name="xlink:title">U.S. Census Bureau</xsl:attribute>
                                        <xsl:attribute name="xlink:href"
                                            >http://www.ngdc.noaa.gov/docucomp/eb139e38-ee29-4d59-b157-5e874d4420c4</xsl:attribute>
                                    </xsl:element>
                                </xsl:when>
                                <xsl:otherwise>
                                    <xsl:element name="gfc: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:element name="gmd:CI_ResponsibleParty">

                                                  <xsl:element name="gmd:organisationName">
                                                  <xsl:element name="gco:CharacterString">
                                                  <xsl:value-of
                                                  select="/MIF/Attribute_Definition_Source[$currentGroup]"
                                                  />
                                                  </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>
                                                  </xsl:element>
                                                  </xsl:element>
                                                  </xsl:element>
                                                  </xsl:element>
                                                </xsl:element>
                                            </xsl:element>
                                        </xsl:element>
                                    </xsl:element>
                                </xsl:otherwise>
                            </xsl:choose>
                            
                            <!-- <xsl:for-each-group select="/MIF/Enumerated_Domain_Value" group-by="@gid2", group-by="@gid3">
                                <xsl:sort select="current-grouping-key()" data-type="number"/>
                                <xsl:sort select="current-grouping-key()" data-type="text"/>
                                <xsl:for-each select="current-group()">
                                    <xsl:variable name="currentGroup3" select=" number(current-grouping-key())"/>
                                    <xsl:comment>currentgroup3:<xsl:value-of select="$currentGroup3"/></xsl:comment>
                                    <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="." /></xsl:element>    
                                            </xsl:element> 
                                            
                                        </xsl:element>
                                    </xsl:element>
                                    
                                    
                                </xsl:for-each> 



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







                        </xsl:if>

                        <!--  //MIF/Attribute_Definition   group-starting-with="//MIF/Attribute_Label" group-ending-with="Enumerated_Domain_Value_Definition_Source"
                        <xsl:if test="name()='Attribute_Definition'">
                            
                        </xsl:if>-->



                    </xsl:element>
                </xsl:element>
                </xsl:for-each-group>
             <!-- </xsl:for-each>
           <xsl:copy-of select="current-group()"/> -->
        </xsl:for-each-group>
    </xsl:template>

    <!-- <xsl:template name="gfcDefinitionReference">
        <xsl:element name="gfc: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:element name="gmd:CI_ResponsibleParty">
                                    
                                    <xsl:element name="gmd:organisationName">
                                        <xsl:element name="gco:CharacterString"> <xsl:value-of select="/MIF/Attribute_Definition_Source[]"></xsl:value-of></xsl:element>     
                                    </xsl:element>
                                </xsl:element>
                            </xsl:element>
                            
                        </xsl:element>
                    </xsl:element>
                </xsl:element>
            </xsl:element>
        </xsl:element>
    </xsl:template> -->


</xsl:stylesheet>
