You are here:   Documentation > Grouping
  |  Login

Countries and Cities

Minimize
CountryCity
GermanyBerlin
GermanyFrankfurt
GermanyHamburg
FranceParis
UKLondon
SpainMadrid
SpainBarcelona

Countries and Cities (Grouped)

Minimize
  • France
    • Paris
  • Germany
    • Berlin
    • Frankfurt
    • Hamburg
  • Spain
    • Madrid
    • Barcelona
  • UK
    • London

Munchian Grouping and Form and List

Minimize

Munchian Grouping is used to group the cities by countries. The important modifications are highlighted.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:udt="DotNetNuke/UserDefinedTable" exclude-result-prefixes="udt">
  <xsl:output method="xml" indent="yes" omit-xml-declaration="yes" />
  <!--
  This prefix is used to generate module specific query strings
  Each querystring or form value that starts with udt_{ModuleId}_param 
  will be added as parameter starting with param
  -->
  <xsl:variable name="prefix_param">udt_<xsl:value-of select="//udt:Context/udt:ModuleId" />_param</xsl:variable>
  <xsl:key name="data-by-country" match="udt:Data" use="udt:Country" />

  <xsl:template match="udt:Data" mode="list">
    <li class="Normal">
      <xsl:value-of select="udt:City" disable-output-escaping="yes" />
      <xsl:call-template name="EditLink" />
    </li>
  </xsl:template>

  <xsl:template match="/udt:UserDefinedTable">
    <ul>
      <xsl:for-each select="udt:Data[count(. | key('data-by-country', udt:Country)[1]) = 1]">
        <xsl:sort select="udt:Country" />
        <li>
          <xsl:value-of select="udt:Country" disable-output-escaping="yes" />
          <xsl:variable name="currentData" select="key('data-by-country', udt:Country)" />
          <xsl:if test="$currentData">
            <ul>
              <xsl:apply-templates select="$currentData" mode="list">
              </xsl:apply-templates>
            </ul>
          </xsl:if>
        </li>
      </xsl:for-each>
    </ul>
  </xsl:template>

  <xsl:template name="EditLink">
    <xsl:if test="udt:EditLink">
      <a href="{udt:EditLink}">
        <img border="0" alt="edit" src="{//udt:Context/udt:ApplicationPath}/images/edit.gif" />
      </a>
    </xsl:if>
  </xsl:template>
</xsl:stylesheet>