<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wbex.ru/index.php?action=history&amp;feed=atom&amp;title=XML_Tutorial%2FXSLT_stylesheet%2Ffor_each</id>
		<title>XML Tutorial/XSLT stylesheet/for each - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wbex.ru/index.php?action=history&amp;feed=atom&amp;title=XML_Tutorial%2FXSLT_stylesheet%2Ffor_each"/>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=XML_Tutorial/XSLT_stylesheet/for_each&amp;action=history"/>
		<updated>2026-04-05T15:02:32Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://wbex.ru/index.php?title=XML_Tutorial/XSLT_stylesheet/for_each&amp;diff=10789&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=XML_Tutorial/XSLT_stylesheet/for_each&amp;diff=10789&amp;oldid=prev"/>
				<updated>2010-05-26T08:26:54Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 08:26, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wbex.ru/index.php?title=XML_Tutorial/XSLT_stylesheet/for_each&amp;diff=10788&amp;oldid=prev</id>
		<title> в 18:22, 25 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=XML_Tutorial/XSLT_stylesheet/for_each&amp;diff=10788&amp;oldid=prev"/>
				<updated>2010-05-25T18:22:32Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== compares sorted and unsorted xsl:for-each element==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
File: Data.xml&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;data&amp;gt;&lt;br /&gt;
    &amp;lt;AAA&amp;gt;&lt;br /&gt;
      &amp;lt;BBB&amp;gt;&lt;br /&gt;
        &amp;lt;CCC&amp;gt;A&amp;lt;/CCC&amp;gt;&lt;br /&gt;
      &amp;lt;/BBB&amp;gt;&lt;br /&gt;
      &amp;lt;BBB/&amp;gt;&lt;br /&gt;
      &amp;lt;BBB/&amp;gt;&lt;br /&gt;
    &amp;lt;/AAA&amp;gt;&lt;br /&gt;
    &amp;lt;AAA&amp;gt;&lt;br /&gt;
      &amp;lt;BBB/&amp;gt;&lt;br /&gt;
      &amp;lt;BBB&amp;gt;&lt;br /&gt;
        &amp;lt;CCC&amp;gt;B&amp;lt;/CCC&amp;gt;&lt;br /&gt;
        &amp;lt;CCC&amp;gt;C&amp;lt;/CCC&amp;gt;&lt;br /&gt;
        &amp;lt;CCC&amp;gt;D&amp;lt;/CCC&amp;gt;&lt;br /&gt;
        &amp;lt;CCC&amp;gt;E&amp;lt;/CCC&amp;gt;&lt;br /&gt;
      &amp;lt;/BBB&amp;gt;&lt;br /&gt;
    &amp;lt;/AAA&amp;gt;&lt;br /&gt;
&amp;lt;/data&amp;gt;&lt;br /&gt;
File: Transform.xslt&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet&lt;br /&gt;
      version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
      xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;TABLE border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;TR&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;Position&amp;lt;/TH&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;Last&amp;lt;/TH&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;Name&amp;lt;/TH&amp;gt;&lt;br /&gt;
        &amp;lt;/TR&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;//AAA[last()]//CCC&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;TR&amp;gt;&lt;br /&gt;
            &amp;lt;TD&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;position()&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/TD&amp;gt;&lt;br /&gt;
            &amp;lt;TD&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;last()&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/TD&amp;gt;&lt;br /&gt;
            &amp;lt;TD&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;text()&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/TD&amp;gt;&lt;br /&gt;
          &amp;lt;/TR&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
      &amp;lt;TABLE border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;TR&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;Position&amp;lt;/TH&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;Last&amp;lt;/TH&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;Name&amp;lt;/TH&amp;gt;&lt;br /&gt;
        &amp;lt;/TR&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;//AAA[last()]//CCC&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort order=&amp;quot;ascending&amp;quot; select=&amp;quot;text()&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;TR&amp;gt;&lt;br /&gt;
            &amp;lt;TD&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;position()&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/TD&amp;gt;&lt;br /&gt;
            &amp;lt;TD&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;last()&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/TD&amp;gt;&lt;br /&gt;
            &amp;lt;TD&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;text()&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/TD&amp;gt;&lt;br /&gt;
          &amp;lt;/TR&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
Output:&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;TABLE border=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;td&amp;gt;Position&amp;lt;/TH&amp;gt;&amp;lt;td&amp;gt;Last&amp;lt;/TH&amp;gt;&amp;lt;td&amp;gt;Name&amp;lt;/TH&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;1&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;4&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;B&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;2&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;4&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;C&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;3&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;4&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;D&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;4&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;4&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;E&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;/TABLE&amp;gt;&amp;lt;TABLE border=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;td&amp;gt;Position&amp;lt;/TH&amp;gt;&amp;lt;td&amp;gt;Last&amp;lt;/TH&amp;gt;&amp;lt;td&amp;gt;Name&amp;lt;/TH&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;1&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;4&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;E&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;2&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;4&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;C&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;3&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;4&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;B&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;4&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;4&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;D&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;/TABLE&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== for-each select=&amp;quot;addressbook/address&amp;quot; and sort==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
File: Data.xml&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- names.xml --&amp;gt;&lt;br /&gt;
&amp;lt;addressbook&amp;gt;&lt;br /&gt;
  &amp;lt;address&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;Mr.&amp;lt;/title&amp;gt;&lt;br /&gt;
      &amp;lt;first-name&amp;gt;Doris&amp;lt;/first-name&amp;gt;&lt;br /&gt;
      &amp;lt;last-name&amp;gt;Smith&amp;lt;/last-name&amp;gt;&lt;br /&gt;
    &amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;street&amp;gt;1234 Main Street&amp;lt;/street&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;New York&amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;state&amp;gt;WI&amp;lt;/state&amp;gt;&lt;br /&gt;
    &amp;lt;zip&amp;gt;48392&amp;lt;/zip&amp;gt;&lt;br /&gt;
  &amp;lt;/address&amp;gt;&lt;br /&gt;
  &amp;lt;address&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;Ms.&amp;lt;/title&amp;gt;&lt;br /&gt;
      &amp;lt;first-name&amp;gt;Jane&amp;lt;/first-name&amp;gt;&lt;br /&gt;
      &amp;lt;last-name&amp;gt;Lee&amp;lt;/last-name&amp;gt;&lt;br /&gt;
    &amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;street&amp;gt;930-A Chestnut Street&amp;lt;/street&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;Twincity&amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;state&amp;gt;MA&amp;lt;/state&amp;gt;&lt;br /&gt;
    &amp;lt;zip&amp;gt;02930&amp;lt;/zip&amp;gt;&lt;br /&gt;
  &amp;lt;/address&amp;gt;&lt;br /&gt;
&amp;lt;/addressbook&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File: Transform.xslt&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- namegrouper2a.xsl --&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; &lt;br /&gt;
  xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;no&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:strip-space elements=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;addressbook&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;addressbook/address&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;zip&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:copy-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/addressbook&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
Output:&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;addressbook&amp;gt;&amp;lt;address&amp;gt;&amp;lt;name&amp;gt;&amp;lt;title&amp;gt;Ms.&amp;lt;/title&amp;gt;&amp;lt;first-name&amp;gt;Jane&amp;lt;/first-name&amp;gt;&amp;lt;last-name&amp;gt;Lee&amp;lt;/last-name&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;street&amp;gt;930-A Chestnut Street&amp;lt;/street&amp;gt;&amp;lt;city&amp;gt;Twincity&amp;lt;/city&amp;gt;&amp;lt;state&amp;gt;MA&amp;lt;/state&amp;gt;&amp;lt;zip&amp;gt;02930&amp;lt;/zip&amp;gt;&amp;lt;/address&amp;gt;&amp;lt;address&amp;gt;&amp;lt;name&amp;gt;&amp;lt;title&amp;gt;Mr.&amp;lt;/title&amp;gt;&amp;lt;first-name&amp;gt;Doris&amp;lt;/first-name&amp;gt;&amp;lt;last-name&amp;gt;Smith&amp;lt;/last-name&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;street&amp;gt;1234 Main Street&amp;lt;/street&amp;gt;&amp;lt;city&amp;gt;New York&amp;lt;/city&amp;gt;&amp;lt;state&amp;gt;WI&amp;lt;/state&amp;gt;&amp;lt;zip&amp;gt;48392&amp;lt;/zip&amp;gt;&amp;lt;/address&amp;gt;&amp;lt;/addressbook&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== for-each select=//address[generate-id(.)=generate-id(key(zipcodes, zip)[1])]==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
File: Data.xml&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addressbook&amp;gt;&lt;br /&gt;
  &amp;lt;address&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;Ms.&amp;lt;/title&amp;gt;&lt;br /&gt;
      &amp;lt;first-name&amp;gt;Doris&amp;lt;/first-name&amp;gt;&lt;br /&gt;
      &amp;lt;last-name&amp;gt;Smith&amp;lt;/last-name&amp;gt;&lt;br /&gt;
    &amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;street&amp;gt;707 New Way&amp;lt;/street&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;New York&amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;state&amp;gt;ME&amp;lt;/state&amp;gt;&lt;br /&gt;
    &amp;lt;zip&amp;gt;00218&amp;lt;/zip&amp;gt;&lt;br /&gt;
  &amp;lt;/address&amp;gt;&lt;br /&gt;
  &amp;lt;address&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;&lt;br /&gt;
      &amp;lt;first-name&amp;gt;Jane&amp;lt;/first-name&amp;gt;&lt;br /&gt;
      &amp;lt;last-name&amp;gt;Lee&amp;lt;/last-name&amp;gt;&lt;br /&gt;
    &amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;street&amp;gt;283 First Avenue&amp;lt;/street&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;Big City&amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;state&amp;gt;MA&amp;lt;/state&amp;gt;&lt;br /&gt;
    &amp;lt;zip&amp;gt;02718&amp;lt;/zip&amp;gt;&lt;br /&gt;
  &amp;lt;/address&amp;gt;&lt;br /&gt;
&amp;lt;/addressbook&amp;gt;&lt;br /&gt;
File: Transform.xslt&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot; indent=&amp;quot;no&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:key name=&amp;quot;zipcodes&amp;quot; match=&amp;quot;address&amp;quot; use=&amp;quot;zip&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;//address[generate-id(.)=generate-id(key(&amp;quot;zipcodes&amp;quot;, zip)[1])]&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;zip&amp;quot;/&amp;gt; &lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;key(&amp;quot;zipcodes&amp;quot;, zip)&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;name/last-name&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:sort select=&amp;quot;name/first-name&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;position() = 1&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;td valign=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#999999&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:attribute name=&amp;quot;rowspan&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;count(key(&amp;quot;zipcodes&amp;quot;, zip))&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
                &amp;lt;b&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:text&amp;gt;Zip code &amp;lt;/xsl:text&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;zip&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/b&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
            &amp;lt;td align=&amp;quot;right&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;name/first-name&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:text&amp;gt; &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
              &amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;name/last-name&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
            &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;street&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:text&amp;gt;, &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;city&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:text&amp;gt;, &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;state&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:text&amp;gt; &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:value-of select=&amp;quot;zip&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
Output:&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#999999&amp;quot; rowspan=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Zip code 00218&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td align=&amp;quot;right&amp;quot;&amp;gt;Doris &amp;lt;b&amp;gt;Smith&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;707 New Way, New York, ME 00218&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#999999&amp;quot; rowspan=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Zip code 02718&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td align=&amp;quot;right&amp;quot;&amp;gt;Jane &amp;lt;b&amp;gt;Lee&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;283 First Avenue, Big City, MA 02718&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== for-each select=preceding-sibling::address[zip=./zip]==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
File: Data.xml&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addressbook&amp;gt;&lt;br /&gt;
  &amp;lt;address&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;Ms.&amp;lt;/title&amp;gt;&lt;br /&gt;
      &amp;lt;first-name&amp;gt;Doris&amp;lt;/first-name&amp;gt;&lt;br /&gt;
      &amp;lt;last-name&amp;gt;Smith&amp;lt;/last-name&amp;gt;&lt;br /&gt;
    &amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;street&amp;gt;707 New Way&amp;lt;/street&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;New York&amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;state&amp;gt;ME&amp;lt;/state&amp;gt;&lt;br /&gt;
    &amp;lt;zip&amp;gt;00218&amp;lt;/zip&amp;gt;&lt;br /&gt;
  &amp;lt;/address&amp;gt;&lt;br /&gt;
  &amp;lt;address&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;Ms.&amp;lt;/title&amp;gt;&lt;br /&gt;
      &amp;lt;first-name&amp;gt;Jane&amp;lt;/first-name&amp;gt;&lt;br /&gt;
      &amp;lt;last-name&amp;gt;Lee&amp;lt;/last-name&amp;gt;&lt;br /&gt;
    &amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;street&amp;gt;930-A Street&amp;lt;/street&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;Twincity&amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;state&amp;gt;MA&amp;lt;/state&amp;gt;&lt;br /&gt;
    &amp;lt;zip&amp;gt;02930&amp;lt;/zip&amp;gt;&lt;br /&gt;
  &amp;lt;/address&amp;gt;&lt;br /&gt;
&amp;lt;/addressbook&amp;gt;&lt;br /&gt;
File: Transform.xslt&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;text&amp;quot; indent=&amp;quot;no&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:variable name=&amp;quot;newline&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:text&amp;gt;&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:text&amp;gt;Addresses sorted by zip code&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:value-of select=&amp;quot;$newline&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:for-each select=&amp;quot;addressbook/address&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:sort select=&amp;quot;zip&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:when test=&amp;quot;not(preceding-sibling::address[zip=./zip])&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select=&amp;quot;$newline&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:text&amp;gt;Zip code &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select=&amp;quot;zip&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:text&amp;gt; (&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select=&amp;quot;city&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:text&amp;gt;, &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select=&amp;quot;state&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:text&amp;gt;): &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select=&amp;quot;$newline&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:message terminate=&amp;quot;no&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:text&amp;gt;./zip=&amp;lt;/xsl:text&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;./zip&amp;quot;/&amp;gt;&amp;lt;xsl:text&amp;gt;, &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:for-each select=&amp;quot;preceding-sibling::address[zip=./zip]&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:text&amp;gt;preceding-sibling=&amp;lt;/xsl:text&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;name/first-name&amp;quot;/&amp;gt;&amp;lt;xsl:text&amp;gt; &amp;lt;/xsl:text&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;name/last-name&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:message&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&amp;quot;name/title&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;name/title&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:text&amp;gt; &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:value-of select=&amp;quot;name/first-name&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:text&amp;gt; &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:value-of select=&amp;quot;name/last-name&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:value-of select=&amp;quot;$newline&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:value-of select=&amp;quot;street&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:value-of select=&amp;quot;$newline&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:value-of select=&amp;quot;$newline&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
Output:&lt;br /&gt;
Addresses sorted by zip codeZip code 00218 (New York, ME): Ms. Doris Smith707 New WayMs. Jane Lee930-A Street&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Nested for-each loop with sorting==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
File: Data.xml&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addressbook&amp;gt;&lt;br /&gt;
  &amp;lt;address&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;Ms.&amp;lt;/title&amp;gt;&lt;br /&gt;
      &amp;lt;first-name&amp;gt;Doris&amp;lt;/first-name&amp;gt;&lt;br /&gt;
      &amp;lt;last-name&amp;gt;Smith&amp;lt;/last-name&amp;gt;&lt;br /&gt;
    &amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;street&amp;gt;707 New Way&amp;lt;/street&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;New York&amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;state&amp;gt;ME&amp;lt;/state&amp;gt;&lt;br /&gt;
    &amp;lt;zip&amp;gt;00218&amp;lt;/zip&amp;gt;&lt;br /&gt;
  &amp;lt;/address&amp;gt;&lt;br /&gt;
&amp;lt;/addressbook&amp;gt;&lt;br /&gt;
File: Transform.xslt&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;text&amp;quot; indent=&amp;quot;no&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:strip-space elements=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:variable name=&amp;quot;newline&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:text&amp;gt;&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:for-each select=&amp;quot;addressbook/address&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:sort select=&amp;quot;name/last-name&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:sort select=&amp;quot;name/first-name&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;.&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:if test=&amp;quot;name/title&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select=&amp;quot;name/title&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:text&amp;gt; &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;name/first-name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:text&amp;gt; &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;name/last-name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;$newline&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;street&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;$newline&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;city&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:text&amp;gt;, &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;state&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:text&amp;gt;  &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;zip&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;$newline&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;$newline&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
Output:&lt;br /&gt;
Ms. Doris Smith707 New WayNew York, ME  00218&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Output xml elements in for-each loop==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
File: Data.xml&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addressbook&amp;gt;&lt;br /&gt;
  &amp;lt;address&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;Ms.&amp;lt;/title&amp;gt;&lt;br /&gt;
      &amp;lt;first-name&amp;gt;Doris&amp;lt;/first-name&amp;gt;&lt;br /&gt;
      &amp;lt;last-name&amp;gt;Smith&amp;lt;/last-name&amp;gt;&lt;br /&gt;
    &amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;street&amp;gt;707 New Way&amp;lt;/street&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;New York&amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;state&amp;gt;ME&amp;lt;/state&amp;gt;&lt;br /&gt;
    &amp;lt;zip&amp;gt;00218&amp;lt;/zip&amp;gt;&lt;br /&gt;
  &amp;lt;/address&amp;gt;&lt;br /&gt;
  &amp;lt;address&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;Ms.&amp;lt;/title&amp;gt;&lt;br /&gt;
      &amp;lt;first-name&amp;gt;Jane&amp;lt;/first-name&amp;gt;&lt;br /&gt;
      &amp;lt;last-name&amp;gt;Lee&amp;lt;/last-name&amp;gt;&lt;br /&gt;
    &amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;street&amp;gt;930-A Street&amp;lt;/street&amp;gt;&lt;br /&gt;
    &amp;lt;city&amp;gt;Twincity&amp;lt;/city&amp;gt;&lt;br /&gt;
    &amp;lt;state&amp;gt;MA&amp;lt;/state&amp;gt;&lt;br /&gt;
    &amp;lt;zip&amp;gt;02930&amp;lt;/zip&amp;gt;&lt;br /&gt;
  &amp;lt;/address&amp;gt;&lt;br /&gt;
&amp;lt;/addressbook&amp;gt;&lt;br /&gt;
File: Transform.xslt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;no&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:strip-space elements=&amp;quot;*&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:variable name=&amp;quot;newline&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:text&amp;gt;&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;addressbook&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;addressbook/address&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;name/last-name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:sort select=&amp;quot;name/first-name&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:copy-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/addressbook&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
Output:&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;addressbook&amp;gt;&amp;lt;address&amp;gt;&amp;lt;name&amp;gt;&amp;lt;title&amp;gt;Ms.&amp;lt;/title&amp;gt;&amp;lt;first-name&amp;gt;Doris&amp;lt;/first-name&amp;gt;&amp;lt;last-name&amp;gt;Smith&amp;lt;/last-name&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;street&amp;gt;707 New Way&amp;lt;/street&amp;gt;&amp;lt;city&amp;gt;New York&amp;lt;/city&amp;gt;&amp;lt;state&amp;gt;ME&amp;lt;/state&amp;gt;&amp;lt;zip&amp;gt;00218&amp;lt;/zip&amp;gt;&amp;lt;/address&amp;gt;&amp;lt;address&amp;gt;&amp;lt;name&amp;gt;&amp;lt;title&amp;gt;Ms.&amp;lt;/title&amp;gt;&amp;lt;first-name&amp;gt;Jane&amp;lt;/first-name&amp;gt;&amp;lt;last-name&amp;gt;Lee&amp;lt;/last-name&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;street&amp;gt;930-A Street&amp;lt;/street&amp;gt;&amp;lt;city&amp;gt;Twincity&amp;lt;/city&amp;gt;&amp;lt;state&amp;gt;MA&amp;lt;/state&amp;gt;&amp;lt;zip&amp;gt;02930&amp;lt;/zip&amp;gt;&amp;lt;/address&amp;gt;&amp;lt;/addressbook&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== The xsl:for-each element allows all nodes in a node-set to be processed according to the XSLT instructions nested inside the xsl:for-each element.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
Use for-each to output table row&lt;br /&gt;
File: Data.xml &lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;results group=&amp;quot;A&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;match&amp;gt;&lt;br /&gt;
    &amp;lt;date&amp;gt;10-Jun-98&amp;lt;/date&amp;gt;&lt;br /&gt;
    &amp;lt;team score=&amp;quot;2&amp;quot;&amp;gt;team 1&amp;lt;/team&amp;gt;&lt;br /&gt;
    &amp;lt;team score=&amp;quot;1&amp;quot;&amp;gt;team 2&amp;lt;/team&amp;gt;&lt;br /&gt;
  &amp;lt;/match&amp;gt;&lt;br /&gt;
  &amp;lt;match&amp;gt;&lt;br /&gt;
    &amp;lt;date&amp;gt;10-Jun-98&amp;lt;/date&amp;gt;&lt;br /&gt;
    &amp;lt;team score=&amp;quot;2&amp;quot;&amp;gt;team 3&amp;lt;/team&amp;gt;&lt;br /&gt;
    &amp;lt;team score=&amp;quot;2&amp;quot;&amp;gt;team 4&amp;lt;/team&amp;gt;&lt;br /&gt;
  &amp;lt;/match&amp;gt;&lt;br /&gt;
  &amp;lt;match&amp;gt;&lt;br /&gt;
    &amp;lt;date&amp;gt;16-Jun-98&amp;lt;/date&amp;gt;&lt;br /&gt;
    &amp;lt;team score=&amp;quot;1&amp;quot;&amp;gt;team 2&amp;lt;/team&amp;gt;&lt;br /&gt;
    &amp;lt;team score=&amp;quot;1&amp;quot;&amp;gt;team 4&amp;lt;/team&amp;gt;&lt;br /&gt;
  &amp;lt;/match&amp;gt;&lt;br /&gt;
&amp;lt;/results&amp;gt;&lt;br /&gt;
File: Transform.xslt&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:transform xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
  version=&amp;quot;2.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:variable name=&amp;quot;league&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:apply-templates select=&amp;quot;results&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&lt;br /&gt;
      &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;League Table&amp;lt;/title&amp;gt;&lt;br /&gt;
      &amp;lt;/head&amp;gt;&lt;br /&gt;
      &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;League Table&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;thead&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;Team&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;Played&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;Won&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;Lost&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;Drawn&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;For&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;Against&amp;lt;/th&amp;gt;&lt;br /&gt;
          &amp;lt;/thead&amp;gt;&lt;br /&gt;
          &amp;lt;tbody&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:for-each select=&amp;quot;$league/league/team&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;tr&amp;gt;&lt;br /&gt;
                &amp;lt;td&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@played&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@won&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@lost&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@drawn&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@for&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td&amp;gt;&lt;br /&gt;
                  &amp;lt;xsl:value-of select=&amp;quot;@against&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/td&amp;gt;&lt;br /&gt;
              &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
          &amp;lt;/tbody&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/body&amp;gt;&lt;br /&gt;
    &amp;lt;/html&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:transform&amp;gt;&lt;br /&gt;
Output:&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
   &amp;lt;head&amp;gt;&lt;br /&gt;
      &amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;League Table&amp;lt;/title&amp;gt;&lt;br /&gt;
   &amp;lt;/head&amp;gt;&lt;br /&gt;
   &amp;lt;body&amp;gt;&lt;br /&gt;
      &amp;lt;h1&amp;gt;League Table&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;table border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;thead&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;Team&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;Played&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;Won&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;Lost&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;Drawn&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;For&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;Against&amp;lt;/th&amp;gt;&lt;br /&gt;
         &amp;lt;/thead&amp;gt;&lt;br /&gt;
         &amp;lt;tbody&amp;gt;&amp;lt;/tbody&amp;gt;&lt;br /&gt;
      &amp;lt;/table&amp;gt;&lt;br /&gt;
   &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Use for-each loop to output list items==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
File: Data.xml&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- tutorial.xml --&amp;gt;&lt;br /&gt;
&amp;lt;tutorial&amp;gt;&lt;br /&gt;
  &amp;lt;section&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Java&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;panel&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;Introduction&amp;lt;/title&amp;gt;&lt;br /&gt;
      &amp;lt;!-- ... --&amp;gt;&lt;br /&gt;
    &amp;lt;/panel&amp;gt;&lt;br /&gt;
    &amp;lt;panel&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;Swing&amp;lt;/title&amp;gt;&lt;br /&gt;
      &amp;lt;!-- ... --&amp;gt;&lt;br /&gt;
    &amp;lt;/panel&amp;gt;&lt;br /&gt;
    &amp;lt;panel&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;GUI&amp;lt;/title&amp;gt;&lt;br /&gt;
      &amp;lt;!-- ... --&amp;gt;&lt;br /&gt;
    &amp;lt;/panel&amp;gt;&lt;br /&gt;
    &amp;lt;panel&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;2D animation&amp;lt;/title&amp;gt;&lt;br /&gt;
      &amp;lt;!-- ... --&amp;gt;&lt;br /&gt;
    &amp;lt;/panel&amp;gt;&lt;br /&gt;
  &amp;lt;/section&amp;gt;&lt;br /&gt;
&amp;lt;/tutorial&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File: Transform.xslt&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- tutorial.xsl --&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
  xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;html&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;tutorial&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:for-each select=&amp;quot;section&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h1&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:text&amp;gt;Section &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;position()&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:text&amp;gt;. &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;title&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;panel&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;li&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;position()&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:text&amp;gt;. &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;title&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
Output:&lt;br /&gt;
&amp;lt;h1&amp;gt;Section 1. Java&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;1. Introduction&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;2. Swing&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;3. GUI&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;4. 2D animation&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== xsl:for-each instruction contains a template, which is applied to each node selected with select attribute.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
File: Data.xml&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;data&amp;gt;&lt;br /&gt;
    &amp;lt;AAA id=&amp;quot;a1&amp;quot; pos=&amp;quot;start&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;BBB id=&amp;quot;b1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;BBB id=&amp;quot;b2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/AAA&amp;gt;&lt;br /&gt;
    &amp;lt;AAA id=&amp;quot;a2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;BBB id=&amp;quot;b3&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;BBB id=&amp;quot;b4&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;CCC id=&amp;quot;c1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;DDD id=&amp;quot;d1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/CCC&amp;gt;&lt;br /&gt;
      &amp;lt;BBB id=&amp;quot;b5&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CCC id=&amp;quot;c2&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/BBB&amp;gt;&lt;br /&gt;
    &amp;lt;/AAA&amp;gt;&lt;br /&gt;
&amp;lt;/data&amp;gt;&lt;br /&gt;
File: Transform.xslt&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet&lt;br /&gt;
      version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
      xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;//BBB&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;DIV style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select=&amp;quot;name()&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:text&amp;gt; id=&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select=&amp;quot;@id&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/DIV&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;source/AAA/CCC&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;DIV style=&amp;quot;color:navy&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select=&amp;quot;name()&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:text&amp;gt; id=&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select=&amp;quot;@id&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/DIV&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
Output:&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;DIV style=&amp;quot;color:red&amp;quot;&amp;gt;BBB id=b1&amp;lt;/DIV&amp;gt;&amp;lt;DIV style=&amp;quot;color:red&amp;quot;&amp;gt;BBB id=b2&amp;lt;/DIV&amp;gt;&amp;lt;DIV style=&amp;quot;color:red&amp;quot;&amp;gt;BBB id=b3&amp;lt;/DIV&amp;gt;&amp;lt;DIV style=&amp;quot;color:red&amp;quot;&amp;gt;BBB id=b4&amp;lt;/DIV&amp;gt;&amp;lt;DIV style=&amp;quot;color:red&amp;quot;&amp;gt;BBB id=b5&amp;lt;/DIV&amp;gt;&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>