cocoon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From reinh...@apache.org
Subject svn commit: rev 55870 - in cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam: . content flow messages resources resources/flags resources/styles
Date Thu, 28 Oct 2004 15:41:50 GMT
Author: reinhard
Date: Thu Oct 28 08:41:49 2004
New Revision: 55870

Added:
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/main.jx
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/showTeam.jx
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/soccer.xml
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/teamBind.xml
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/teamDef.xml
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/teamTemplate.jx
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/flow/
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/flow/team.js
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages.xml
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages_de.xml
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages_it.xml
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/FormsMessages.xml
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/FormsMessages_nl_NL.xml
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/BG.gif   (contents, props changed)
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/CH.gif   (contents, props changed)
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/CZ.gif   (contents, props changed)
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/DE.gif   (contents, props changed)
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/DK.gif   (contents, props changed)
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/EN.gif   (contents, props changed)
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/ES.gif   (contents, props changed)
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/FR.gif   (contents, props changed)
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/GR.gif   (contents, props changed)
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/HR.gif   (contents, props changed)
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/IT.gif   (contents, props changed)
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/LV.gif   (contents, props changed)
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/NL.gif   (contents, props changed)
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/PT.gif   (contents, props changed)
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/RU.gif   (contents, props changed)
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/SE.gif   (contents, props changed)
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/SW.gif   (contents, props changed)
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/styles/
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/styles/dreamteam.css
   cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/sitemap.xmap
Log:
sync dreamteam froms appl with trunk

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/main.jx
==============================================================================
--- (empty file)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/main.jx	Thu Oct 28 08:41:49 2004
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<jx:template xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
+>
+<html>
+    <head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<link href="local-resources/dreamteam.css" type="text/css" rel="stylesheet"/>
+    <title>The Dream Team Home Page</title>
+    </head>
+	<body>
+        <h1>The Dream Team</h1>
+        <p>Welcome to the Dream Team Chooser.</p>
+        <p>Did you watch the European Soccer Championship in the summer of 2004? Where you jumping up 
+           and down for joy over the successes or biting your nails out of frustration? Here is your
+           chance to select the ultimate team of champions.
+           <br/>
+           Start this application and choose your dream team of soccer players.
+        </p>
+        <p>Have fun!</p>
+
+        <p><a href="buildteam.html">Select team</a></p>
+        <p class="developer-header">
+           Developer Notes
+        </p>
+        <h2>Introduction</h2>
+        <p class="developer-note">
+           This sample shows how to build a Cocoon Form with a repeater widget
+           that is bound to JavaBeans. The fields in a repeater row
+           are dependent. More specific: the choice in the first selection list
+           updates the selection list in the second field. Finally, a choice
+           in the second selection list, changes the third field.
+           <br/>
+            Flowscripts are used to build the forms and handle the result.
+        </p>
+        <p class="developer-note">
+            This sample assumes you have a basic knowledge of Cocoon Forms and Javascript. 
+            If your knowledge of Cocoon Forms is limited, please have a look at the <a 
+            href="http://cocoon.apache.org/2.1/userdocs/forms/index.html">Cocoon Forms documentation</a> and 
+            the <a href="http://wiki.apache.org/cocoon/Forms">Wiki</a> pages.
+        </p>
+        <p class="developer-note">
+            Flowscript or flow, is considered to be the glue between pipelines and forms. It is a special
+            kind of Javascript that runs on the server.
+            <br/>
+            More information on the Flowscript can be found through the links in the Flowscript section
+            of Chapter 7 of the <a href="http://wiki.apache.org/cocoon/Cocoon215TOC">Cocoon215TOC</a> 
+            Wiki page.
+        </p>
+        
+        <p class="developer-note">
+            Also have a look at the Supersonic Tour Sample which is a live tutorial with a 
+            quick overview of Cocoon. Cocoon Forms and flow are explained there and you can see some 
+            samples in action.
+        </p>
+        <h2>The start</h2>
+        <p class="developer-note">
+            This page is started from a flowscript that reads in <b>soccer.xml</b> and
+            passes it onto a Manager. This Java class represents a simple Java-based
+            connection to a datasource.
+            <br/>
+            Normally you would handle all interaction with the data through Java classes, not in
+            flow, but for the sake of simplicity and to demonstrate the communication between flow and
+            your business layer, we used a function <i>loadDocument</i> to read in the XML file and pass
+            it on to the Manager class.
+        </p>
+	</body>
+</html>
+</jx:template>
\ No newline at end of file

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/showTeam.jx
==============================================================================
--- (empty file)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/showTeam.jx	Thu Oct 28 08:41:49 2004
@@ -0,0 +1,121 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<jx:template xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
+  <html>
+    <head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+      <link href="local-resources/dreamteam.css" type="text/css" rel="stylesheet"/>
+      <!--
+         The Sortable Table script from WebFX (http://webfx.eae.net/) has
+         no Apache compatible license and can therefore not be added to
+         the repository.
+         If you want to use the adjusted version of the Sortable Table
+         email Helma van der Linden (hepabolu@gmail.com) and
+         uncomment the line below
+        -->
+      <!-- <script type="text/javascript" src="resources/sortabletable.js"></script> -->
+      <title>Your Dream Team</title>
+    </head>
+    <body>
+      <h1>Your Dream Team</h1>
+      <p>And here is your dream team. May the best team win!</p>
+      <!--
+             uncomment the lines below if you want to use the
+             adjusted version of the SortableTable script
+          -->
+      <!--
+        <p>If you click on a table header, the table will be sorted for
+           that column. Click again and the sort will be reversed.</p>
+        -->
+      <table id="sortTable1">
+        <thead>
+          <tr>
+            <td class="tableheader">Name</td>
+            <td class="tableheader">Position</td>
+            <td class="tableheader">Country</td>
+            <td class="tableheader">&#160;</td>
+          </tr>
+        </thead>
+        <tbody>
+          <jx:choose>
+            <jx:when test="size &lt; 1">
+              <tr>
+                <td colspan="4" align="center">
+                  <strong>No team selected</strong>
+                </td>
+              </tr>
+            </jx:when>
+            <jx:otherwise>
+              <jx:forEach var="person" items="${list.getTeam()}">
+                <jx:set var="name" value="${person.getName()}"/>
+                <jx:set var="lastname" value="${person.getLastName()}"/>
+                <jx:set var="position" value="${person.getPosition()}"/>
+                <jx:set var="country" value="${person.getCountry()}"/>
+                <tr>
+                  <td>${name}</td>
+                  <td>
+                    <i18n:text>${position}</i18n:text>
+                  </td>
+                  <td>
+                    <img src="flags/${country}.gif"/>
+                  </td>
+                  <td>
+                    <i18n:text>${country}</i18n:text>
+                  </td>
+                  <!--
+                     replace the lines above with the lines below if you
+                     want to use the adjusted Sortable Table script.
+                  -->
+                  <!--
+                    <td sort="${lastname}">${name}</td>
+                    <td sort="${position}"><i18n:text>${position}</i18n:text></td>
+                    <td sort="${country}"><img src="flags/${country}.gif"/></td>
+                    <td><i18n:text>${country}</i18n:text></td>
+                  -->
+                </tr>
+              </jx:forEach>
+            </jx:otherwise>
+          </jx:choose>
+        </tbody>
+      </table>
+      <!--
+             uncomment the lines below if you want to use the
+             adjusted version of the SortableTable script
+         -->
+      <!--
+        <script type="text/javascript">
+            var st1 = new SortableTable(document.getElementById("sortTable1"),
+            [   "CaseInsensitiveString",
+                "String",
+                "String",
+                "None"    ]);
+            var initSortCol = 0;
+            st1.updateHeaderArrows();
+            st1.sort(initSortCol);
+            st1.updateHeaderArrows();
+        </script>
+        -->
+      <p class="developer-header"> Developer Notes </p>
+      <p class="developer-note"> This is the last page of the sample. It is built by the <i>prot_showTeam</i> function
+        in <b>team.js</b>. It takes the dream team list, stored in the Manager class and adds it to the JXTemplate for
+        display. </p>
+      <p class="developer-note"> This page also uses some i18n tags to show words rather than codes (for positions and
+        countries). </p>
+      <h2>Do study the code</h2>
+    </body>
+  </html>
+</jx:template>

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/soccer.xml
==============================================================================
--- (empty file)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/soccer.xml	Thu Oct 28 08:41:49 2004
@@ -0,0 +1,1859 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<players>
+   <!-- Information copied from the www.euro2004.com website -->
+   <player>
+      <name>David JAMES</name>
+      <position>GK</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>Gary NEVILLE</name>
+      <position>DF</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>Ashley COLE</name>
+      <position>DF</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>Steven GERRARD</name>
+      <position>MD</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>John TERRY</name>
+      <position>DF</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>Sol CAMPBELL</name>
+      <position>DF</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>David BECKHAM</name>
+      <position>MD</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>Paul SCHOLES</name>
+      <position>MD</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>Wayne ROONEY</name>
+      <position>FW</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>Michael OWEN</name>
+      <position>FW</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>Frank LAMPARD</name>
+      <position>MD</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>Wayne BRIDGE</name>
+      <position>DF</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>Paul ROBINSON</name>
+      <position>GK</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>Phil NEVILLE</name>
+      <position>DF</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>Ledley KING</name>
+      <position>DF</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>Jamie CARRAGHER</name>
+      <position>DF</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>Nicky BUTT</name>
+      <position>MD</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>Owen HARGREAVES</name>
+      <position>MD</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>Joe COLE</name>
+      <position>MD</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>Kieron DYER</name>
+      <position>MD</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>Emile HESKEY</name>
+      <position>FW</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>Ian WALKER</name>
+      <position>GK</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>Darius VASSELL</name>
+      <position>FW</position>
+      <country>EN</country>
+   </player>
+   <player>
+      <name>Edwin VAN DER SAR</name>
+      <position>GK</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Michael REIZIGER</name>
+      <position>DF</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Jaap STAM</name>
+      <position>DF</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Wilfred BOUMA</name>
+      <position>DF</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Giovanni VAN BRONCKHORST</name>
+      <position>DF</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Phillip COCU</name>
+      <position>MD</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Andy VAN DER MEYDE</name>
+      <position>FW</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Edgar DAVIDS</name>
+      <position>MD</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Patrick KLUIVERT</name>
+      <position>FW</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Ruud VAN NISTELROOIJ</name>
+      <position>FW</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Rafael VAN DER VAART</name>
+      <position>MD</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Roy MAKAAY</name>
+      <position>FW</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Sander WESTERVELD</name>
+      <position>GK</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Wesley SNEIJDER</name>
+      <position>MD</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Frank DE BOER</name>
+      <position>DF</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Marc OVERMARS</name>
+      <position>FW</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Pierre VAN HOOIJDONK</name>
+      <position>FW</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>John HEITINGA</name>
+      <position>DF</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Arjen ROBBEN</name>
+      <position>FW</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Clarence SEEDORF</name>
+      <position>MD</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Paul BOSVELT</name>
+      <position>MD</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Boudewijn ZENDEN</name>
+      <position>MD</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Ronald WATERREUS</name>
+      <position>GK</position>
+      <country>NL</country>
+   </player>
+   <player>
+      <name>Thomas SØRENSEN</name>
+      <position>GK</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Kasper BØGELUND</name>
+      <position>DF</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>René HENRIKSEN</name>
+      <position>DF</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Martin LAURSEN</name>
+      <position>DF</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Niclas JENSEN</name>
+      <position>DF</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Thomas HELVEG</name>
+      <position>DF</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Thomas GRAVESEN</name>
+      <position>MD</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Jesper GRØNKJÆR</name>
+      <position>MD</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Jon Dahl TOMASSON</name>
+      <position>FW</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Martin JØRGENSEN</name>
+      <position>MD</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Ebbe SAND</name>
+      <position>FW</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Thomas KAHLENBERG</name>
+      <position>MD</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Per KRØLDRUP</name>
+      <position>DF</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Claus JENSEN</name>
+      <position>MD</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Daniel JENSEN</name>
+      <position>MD</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Peter SKOV-JENSEN</name>
+      <position>GK</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Christian POULSEN</name>
+      <position>MD</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Brian PRISKE</name>
+      <position>DF</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Dennis ROMMEDAHL</name>
+      <position>FW</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Kenneth PEREZ</name>
+      <position>FW</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Peter MADSEN</name>
+      <position>FW</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Stephan ANDERSEN</name>
+      <position>GK</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Peter LOVENKRANDS</name>
+      <position>FW</position>
+      <country>DK</country>
+   </player>
+   <player>
+      <name>Oliver KAHN</name>
+      <position>GK</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Andreas HINKEL</name>
+      <position>DF</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Arne FRIEDRICH</name>
+      <position>DF</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Christian WÖRNS</name>
+      <position>DF</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Jens NOWOTNY</name>
+      <position>DF</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Frank BAUMANN</name>
+      <position>DF</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Bastian SCHWEINSTEIGER</name>
+      <position>MD</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Dietmar HAMANN</name>
+      <position>MD</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Fredi BOBIC</name>
+      <position>FW</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Kevin KURANYI</name>
+      <position>FW</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Miroslav KLOSE</name>
+      <position>FW</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Jens LEHMANN</name>
+      <position>GK</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Michael BALLACK</name>
+      <position>MD</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Thomas BRDARIC</name>
+      <position>FW</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Sebastian KEHL</name>
+      <position>DF</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Jens JEREMIES</name>
+      <position>MD</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Christian ZIEGE</name>
+      <position>DF</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Fabian ERNST</name>
+      <position>MD</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Bernd SCHNEIDER</name>
+      <position>MD</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Lukas PODOLSKI</name>
+      <position>FW</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Philipp LAHM</name>
+      <position>DF</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Torsten FRINGS</name>
+      <position>MD</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Timo HILDEBRAND</name>
+      <position>GK</position>
+      <country>DE</country>
+   </player>
+   <player>
+      <name>Andreas ISAKSSON</name>
+      <position>GK</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Teddy LUCIC</name>
+      <position>DF</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Olof MELLBERG</name>
+      <position>DF</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Johan MJÄLLBY</name>
+      <position>MD</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Erik EDMAN</name>
+      <position>DF</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Tobias LINDEROTH</name>
+      <position>MD</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Mikael NILSSON</name>
+      <position>MD</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Anders SVENSSON</name>
+      <position>MD</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Fredrik LJUNGBERG</name>
+      <position>MD</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Zlatan IBRAHIMOVIC</name>
+      <position>FW</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Henrik LARSSON</name>
+      <position>FW</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Magnus HEDMAN</name>
+      <position>GK</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Petter HANSSON</name>
+      <position>DF</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Alexander ÖSTLUND</name>
+      <position>MD</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Andreas JAKOBSSON</name>
+      <position>DF</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Kim KÄLLSTRÖM</name>
+      <position>MD</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Anders ANDERSSON</name>
+      <position>MD</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Mattias JONSON</name>
+      <position>FW</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Pontus FARNERUD</name>
+      <position>MD</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Marcus ALLBÄCK</name>
+      <position>FW</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Christian WILHELMSSON</name>
+      <position>MD</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Erik WAHLSTEDT</name>
+      <position>MD</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Magnus KIHLSTEDT</name>
+      <position>GK</position>
+      <country>SE</country>
+   </player>
+   <player>
+      <name>Aleksandrs KOLINKO</name>
+      <position>GK</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Igors STEPANOVS</name>
+      <position>DF</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Vitalis ASTAFJEVS</name>
+      <position>MD</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Mihails ZEMLINSKIS</name>
+      <position>DF</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Jurijs LAIZANS</name>
+      <position>MD</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Olegs BLAGONADEZDINS</name>
+      <position>DF</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Aleksandrs ISAKOVS</name>
+      <position>DF</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Imants BLEIDELIS</name>
+      <position>MD</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Maris VERPAKOVSKIS</name>
+      <position>FW</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Andrejs RUBINS</name>
+      <position>MD</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Andrejs PROHORENKOVS</name>
+      <position>FW</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Andrejs PIEDELS</name>
+      <position>GK</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Jurgis PUCINSKIS</name>
+      <position>MD</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Valentins LOBANOVS</name>
+      <position>DF</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Maris SMIRNOVS</name>
+      <position>DF</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Dzintars ZIRNIS</name>
+      <position>DF</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Marians PAHARS</name>
+      <position>FW</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Igors KORABLOVS</name>
+      <position>DF</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Andrejs ŠTOLCERS</name>
+      <position>FW</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Andrejs PAVLOVS</name>
+      <position>GK</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Mihails MIHOLAPS</name>
+      <position>FW</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Arturs ZAKRESEVSKIS</name>
+      <position>DF</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Vits RIMKUS</name>
+      <position>FW</position>
+      <country>LV</country>
+   </player>
+   <player>
+      <name>Petr CECH</name>
+      <position>GK</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>Zdenek GRYGERA</name>
+      <position>DF</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>Pavel MAREŠ</name>
+      <position>DF</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>Tomáš GALÁSEK</name>
+      <position>MD</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>René BOLF</name>
+      <position>DF</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>Marek JANKULOVSKI</name>
+      <position>DF</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>Vladimír ŠMICER</name>
+      <position>MD</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>Karel POBORSKÝ</name>
+      <position>MD</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>Jan KOLLER</name>
+      <position>FW</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>Tomáš ROSICKÝ</name>
+      <position>MD</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>Pavel NEDVED</name>
+      <position>MD</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>Vratislav LOKVENC</name>
+      <position>FW</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>Martin JIRÁNEK</name>
+      <position>DF</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>Štepán VACHOUŠEK</name>
+      <position>MD</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>Milan BAROŠ</name>
+      <position>FW</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>Jaromír BLAZEK</name>
+      <position>GK</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>Tomáš HÜBSCHMAN</name>
+      <position>DF</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>Marek HEINZ</name>
+      <position>FW</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>Roman TÝCE</name>
+      <position>MD</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>Jaroslav PLAŠIL</name>
+      <position>MD</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>Tomáš UJFALUŠI</name>
+      <position>DF</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>David ROZEHNAL</name>
+      <position>DF</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>Antonín KINSKÝ</name>
+      <position>GK</position>
+      <country>CZ</country>
+   </player>
+   <player>
+      <name>Sergei OVCHINNIKOV</name>
+      <position>GK</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Vladislav RADIMOV</name>
+      <position>MD</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Dmitri SYCHEV</name>
+      <position>FW</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Aleksei SMERTIN</name>
+      <position>MD</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Andrei KARIAKA</name>
+      <position>MD</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Igor SEMSHOV</name>
+      <position>MD</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Marat IZMAILOV</name>
+      <position>MD</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Rolan GUSEV</name>
+      <position>MD</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Dmitri BULYKIN</name>
+      <position>FW</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Aleksandr MOSTOVOI</name>
+      <position>MD</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Aleksandr KERZHAKOV</name>
+      <position>FW</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Viacheslav MALAFEEV</name>
+      <position>GK</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Roman SHARONOV</name>
+      <position>DF</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Aleksandr ANYUKOV</name>
+      <position>DF</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Dmitri ALENICHEV</name>
+      <position>FW</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Vadim EVSEEV</name>
+      <position>DF</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Dmitri SENNIKOV</name>
+      <position>DF</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Dmitri KIRICHENKO</name>
+      <position>FW</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Vladimir BYSTROV</name>
+      <position>MD</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Dmitri LOSKOV</name>
+      <position>MD</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Aleksei BUGAYEV</name>
+      <position>DF</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Evgeni ALDONIN</name>
+      <position>MD</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Igor AKINFEEV</name>
+      <position>GK</position>
+      <country>RU</country>
+   </player>
+   <player>
+      <name>Zdravko ZDRAVKOV</name>
+      <position>GK</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Vladimir IVANOV</name>
+      <position>DF</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Rosen KIRILOV</name>
+      <position>DF</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Ivailo PETKOV</name>
+      <position>DF</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Zlatomir ZAGORCIC</name>
+      <position>DF</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Kiril KOTEV</name>
+      <position>DF</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Daniel BORIMIROV</name>
+      <position>MD</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Milen PETKOV</name>
+      <position>MD</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Dimitar BERBATOV</name>
+      <position>FW</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Velizar DIMITROV</name>
+      <position>FW</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Zdravko LAZAROV</name>
+      <position>FW</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Stoian KOLEV</name>
+      <position>GK</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Georgi PEEV</name>
+      <position>MD</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Georgi CHILIKOV</name>
+      <position>FW</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Marian HRISTOV</name>
+      <position>MD</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Vladimir MANCHEV</name>
+      <position>FW</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Martin PETROV</name>
+      <position>FW</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Predrag PAZIN</name>
+      <position>DF</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Stilian PETROV</name>
+      <position>MD</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Valeri BOJINOV</name>
+      <position>MD</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Zoran JANKOVIC</name>
+      <position>FW</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Ilian STOIANOV</name>
+      <position>DF</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Dimitar IVANKOV</name>
+      <position>GK</position>
+      <country>BG</country>
+   </player>
+   <player>
+      <name>Antonios NIKOPOLIDIS</name>
+      <position>GK</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Giourkas SEITARIDIS</name>
+      <position>DF</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Stylianos VENETIDIS</name>
+      <position>DF</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Nikolaos DABIZAS</name>
+      <position>DF</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Traianos DELLAS</name>
+      <position>DF</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Angelos BASINAS</name>
+      <position>MD</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Theodoros ZAGORAKIS</name>
+      <position>MD</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Stylianos GIANNAKOPOULOS</name>
+      <position>MD</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Angelos CHARISTEAS</name>
+      <position>FW</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Vassilios TSIARTAS</name>
+      <position>MD</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Themistoklis NIKOLAIDIS</name>
+      <position>FW</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Konstantinos CHALKIAS</name>
+      <position>GK</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Theofanis KATERGIANNAKIS</name>
+      <position>GK</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Panagiotis FYSSAS</name>
+      <position>DF</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Zisis VRYZAS</name>
+      <position>FW</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Pantelis KAFES</name>
+      <position>MD</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Georgios GEORGIADIS</name>
+      <position>MD</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Ioannis GOUMAS</name>
+      <position>DF</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Mihalis KAPSIS</name>
+      <position>DF</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Georgios KARAGOUNIS</name>
+      <position>MD</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Konstantinos KATSOURANIS</name>
+      <position>MD</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Dimitrios PAPADOPOULOS</name>
+      <position>FW</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Vassilios LAKIS</name>
+      <position>MD</position>
+      <country>GR</country>
+   </player>
+   <player>
+      <name>Vladimir VASILJ</name>
+      <position>GK</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Mario TOKIC</name>
+      <position>DF</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Josip ŠIMUNIC</name>
+      <position>DF</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Stjepan TOMAS</name>
+      <position>DF</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Igor TUDOR</name>
+      <position>DF</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Boris ŽIVKOVIC</name>
+      <position>DF</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Milan RAPAIC</name>
+      <position>FW</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Darijo SRNA</name>
+      <position>MD</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Dado PRŠO</name>
+      <position>FW</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Niko KOVAC</name>
+      <position>MD</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Tomislav ŠOKOTA</name>
+      <position>FW</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Tomislav BUTINA</name>
+      <position>GK</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Dario ŠIMIC</name>
+      <position>DF</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Mato NERETLJAK</name>
+      <position>DF</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Jerko LEKO</name>
+      <position>MD</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Marko BABIC</name>
+      <position>MD</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Ivan KLASNIC</name>
+      <position>FW</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Ivica OLIC</name>
+      <position>FW</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Ivica MORNAR</name>
+      <position>MD</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Giovani ROSSO</name>
+      <position>MD</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Robert KOVAC</name>
+      <position>DF</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Nenad BJELICA</name>
+      <position>MD</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Joseph DIDULICA</name>
+      <position>GK</position>
+      <country>HR</country>
+   </player>
+   <player>
+      <name>Jörg STIEL</name>
+      <position>GK</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Bernt HAAS</name>
+      <position>DF</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Bruno BERNER</name>
+      <position>DF</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Stéphane HENCHOZ</name>
+      <position>DF</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Murat YAKIN</name>
+      <position>DF</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Johann VOGEL</name>
+      <position>MD</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Ricardo CABANAS</name>
+      <position>MD</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Raphael WICKY</name>
+      <position>MD</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Alexander FREI</name>
+      <position>FW</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Hakan YAKIN</name>
+      <position>FW</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Stéphane CHAPUISAT</name>
+      <position>FW</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Pascal ZUBERBÜHLER</name>
+      <position>GK</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Marco ZWYSSIG</name>
+      <position>DF</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Ludovic MAGNIN</name>
+      <position>MD</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Daniel GYGAX</name>
+      <position>FW</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Fabio CELESTINI</name>
+      <position>MD</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Christoph SPYCHER</name>
+      <position>MD</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Benjamin HUGGEL</name>
+      <position>MD</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Tranquillo BARNETTA</name>
+      <position>MD</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Patrick MÜLLER</name>
+      <position>DF</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Milaim RAMA</name>
+      <position>FW</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Johan VONLANTHEN</name>
+      <position>FW</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Sébastien ROTH</name>
+      <position>GK</position>
+      <country>CH</country>
+   </player>
+   <player>
+      <name>Gianluigi BUFFON</name>
+      <position>GK</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Christian PANUCCI</name>
+      <position>DF</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Massimo ODDO</name>
+      <position>DF</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Cristiano ZANETTI</name>
+      <position>MD</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Fabio CANNAVARO</name>
+      <position>DF</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Matteo FERRARI</name>
+      <position>DF</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Alessandro DEL PIERO</name>
+      <position>FW</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Gennaro GATTUSO</name>
+      <position>MD</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Christian VIERI</name>
+      <position>FW</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Francesco TOTTI</name>
+      <position>FW</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Bernardo CORRADI</name>
+      <position>FW</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Francesco TOLDO</name>
+      <position>GK</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Alessandro NESTA</name>
+      <position>DF</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Stefano FIORE</name>
+      <position>MD</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Giuseppe FAVALLI</name>
+      <position>DF</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Mauro CAMORANESI</name>
+      <position>MD</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Marco DI VAIO</name>
+      <position>FW</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Antonio CASSANO</name>
+      <position>FW</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Gianluca ZAMBROTTA</name>
+      <position>MD</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Simone PERROTTA</name>
+      <position>MD</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Andrea PIRLO</name>
+      <position>MD</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Angelo PERUZZI</name>
+      <position>GK</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Marco MATERAZZI</name>
+      <position>DF</position>
+      <country>IT</country>
+   </player>
+   <player>
+      <name>Santiago CAÑIZARES</name>
+      <position>GK</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>Joan CAPDEVILA</name>
+      <position>DF</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>Carlos MARCHENA</name>
+      <position>DF</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>David ALBELDA</name>
+      <position>MD</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>Carles PUYOL</name>
+      <position>DF</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>Iván HELGUERA</name>
+      <position>DF</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>RAÚL González</name>
+      <position>FW</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>Rubén BARAJA</name>
+      <position>MD</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>Fernando TORRES</name>
+      <position>FW</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>Fernando MORIENTES</name>
+      <position>FW</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>Albert LUQUE</name>
+      <position>FW</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>García GABRI</name>
+      <position>DF</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>Daniel ARANZUBIA</name>
+      <position>GK</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>VICENTE Rodríguez</name>
+      <position>MD</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>RAÚL BRAVO</name>
+      <position>DF</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>XABI ALONSO</name>
+      <position>MD</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>Joseba ETXEBERRIA</name>
+      <position>FW</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>CÉSAR Martín</name>
+      <position>DF</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>SÁNCHEZ Joaquín</name>
+      <position>MD</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>Hernández XAVI</name>
+      <position>MD</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>Juan Carlos VALERÓN</name>
+      <position>MD</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>Gutiérrez JUANITO</name>
+      <position>DF</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>Iker CASILLAS</name>
+      <position>GK</position>
+      <country>ES</country>
+   </player>
+   <player>
+      <name>Mickaël LANDREAU</name>
+      <position>GK</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>Jean-Alain BOUMSONG</name>
+      <position>DF</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>Bixente LIZARAZU</name>
+      <position>DF</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>Patrick VIEIRA</name>
+      <position>MD</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>William GALLAS</name>
+      <position>DF</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>Claude MAKELELE</name>
+      <position>MD</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>Robert PIRES</name>
+      <position>MD</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>Marcel DESAILLY</name>
+      <position>DF</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>Louis SAHA</name>
+      <position>FW</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>Zinédine ZIDANE</name>
+      <position>MD</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>Sylvain WILTORD</name>
+      <position>MD</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>Thierry HENRY</name>
+      <position>FW</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>Mikaël SILVESTRE</name>
+      <position>DF</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>Jérôme ROTHEN</name>
+      <position>MD</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>Lilian THURAM</name>
+      <position>DF</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>Fabien BARTHEZ</name>
+      <position>GK</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>Olivier DACOURT</name>
+      <position>MD</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>Benoît PEDRETTI</name>
+      <position>MD</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>Willy SAGNOL</name>
+      <position>DF</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>David TREZEGUET</name>
+      <position>FW</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>Steve MARLET</name>
+      <position>FW</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>Sidney GOVOU</name>
+      <position>FW</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name>Grégory COUPET</name>
+      <position>GK</position>
+      <country>FR</country>
+   </player>
+   <player>
+      <name> RICARDO </name>
+      <position>GK</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>PAULO FERREIRA</name>
+      <position>DF</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>RUI JORGE</name>
+      <position>DF</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>JORGE ANDRADE</name>
+      <position>DF</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>Fernando COUTO</name>
+      <position>DF</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>COSTINHA </name>
+      <position>MD</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>LUÍS FIGO</name>
+      <position>MD</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>PETIT</name>
+      <position>MD</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>PAULETA </name>
+      <position>FW</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>RUI COSTA</name>
+      <position>MD</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>Sabrosa SIMÃO</name>
+      <position>FW</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>QUIM </name>
+      <position>GK</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>MIGUEL </name>
+      <position>DF</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>NUNO VALENTE</name>
+      <position>DF</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>BETO</name>
+      <position>DF</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>RICARDO CARVALHO</name>
+      <position>DF</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>Cristiano RONALDO</name>
+      <position>FW</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>MANICHE</name>
+      <position>MD</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>TIAGO </name>
+      <position>MD</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>DECO </name>
+      <position>MD</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>NUNO GOMES</name>
+      <position>FW</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>MOREIRA</name>
+      <position>GK</position>
+      <country>PT</country>
+   </player>
+   <player>
+      <name>Hélder POSTIGA</name>
+      <position>FW</position>
+      <country>PT</country>
+   </player>
+</players>

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/teamBind.xml
==============================================================================
--- (empty file)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/teamBind.xml	Thu Oct 28 08:41:49 2004
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<fb:context xmlns:fb="http://apache.org/cocoon/forms/1.0#binding" path="/">
+   <fb:repeater id="teammembers" parent-path="." row-path="team">
+      <!--fb:identity>
+         <fb:value id="ID" path="@id"/>
+      </fb:identity -->
+      <fb:on-bind>
+         <!-- executed on updates AND right after the insert -->
+         <fb:value id="position" path="position"/>
+         <fb:value id="memberId" path="memberId"/>
+         <fb:value id="country" path="country"/>
+      </fb:on-bind>
+      <fb:on-delete-row>
+         <fb:delete-node/>
+      </fb:on-delete-row>
+      <fb:on-insert-row>
+         <fb:insert-bean
+            classname="org.apache.cocoon.forms.samples.dreamteam.TeamMember"
+            addmethod="addMember"/>
+      </fb:on-insert-row>
+   </fb:repeater>
+</fb:context>

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/teamDef.xml
==============================================================================
--- (empty file)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/teamDef.xml	Thu Oct 28 08:41:49 2004
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<fd:form xmlns:fd="http://apache.org/cocoon/forms/1.0#definition">
+    <fd:widgets>
+        <fd:repeater id="teammembers">
+            <fd:widgets>
+                <!-- The ID is here to keep track of row creation order, 
+                which can have no relation with row index when the users 
+                used move up/down -->
+                <fd:field id="ID">
+                    <fd:label>ID</fd:label>
+                    <fd:datatype base="long"/>
+                </fd:field>
+                <fd:field id="position">
+                    <fd:label>Position</fd:label>
+                    <fd:datatype base="string"/>
+                    <fd:selection-list dynamic="true" type="flow-jxpath"
+                        list-path="positionList" value-path="value"
+                        label-path="label"/>
+                    <fd:on-value-changed>
+                        <fd:javascript> 
+                        // this script can be found in team.js 
+                        updateNameWidget(event);
+                         </fd:javascript>
+                    </fd:on-value-changed>
+                </fd:field>
+                <fd:field id="memberId">
+                    <fd:label>Name</fd:label>
+                    <fd:datatype base="string"/>
+                    <fd:selection-list dynamic="true" type="flow-jxpath"
+                        list-path="nameList" value-path="memberId"
+                        label-path="name"/>
+                    <fd:on-value-changed>
+                    <fd:javascript>
+                       // this script can be found in team.js 
+                       updateCountryWidget(event);
+                    </fd:javascript>
+                    </fd:on-value-changed>
+                        
+                </fd:field>
+                <fd:output id="country">
+                   <fd:label>Country</fd:label>
+                   <fd:datatype base="string"/>
+                </fd:output>
+                <fd:booleanfield id="select">
+                    <fd:label>Select</fd:label>
+                </fd:booleanfield>
+
+            <fd:row-action id="add" action-command="add-after">
+              <fd:label>+</fd:label>
+            </fd:row-action>
+            <fd:row-action id="up" action-command="move-up">
+              <fd:label>^</fd:label>
+            </fd:row-action>
+            <fd:row-action id="down" action-command="move-down">
+              <fd:label>v</fd:label>
+            </fd:row-action>
+            <fd:row-action id="delete" action-command="delete">
+              <fd:label>X</fd:label>
+            </fd:row-action>
+        </fd:widgets>
+           <fd:validation>
+           <!-- This demonstrates validating a repeater: we check here if all
+                teammembers are distinct.
+                A repeater cannot itself display a validation error, and
+                therefore sets a validation error on a field in the 
+                offending row. -->
+           <fd:javascript>
+                return validateRepeater(widget);
+           </fd:javascript>
+         </fd:validation>
+        </fd:repeater>
+
+        <fd:repeater-action id="addmember" 
+           action-command="add-row" repeater="teammembers">
+            <fd:label>Add player</fd:label>
+            <fd:on-action>
+                <fd:javascript>
+                   // this script can be found in team.js 
+                   updateRowIDcounter(event);
+                </fd:javascript>
+            </fd:on-action>
+        </fd:repeater-action>
+        <fd:repeater-action id="removemember" action-command="delete-rows"
+            repeater="teammembers" select="select">
+            <fd:label>Remove selected players</fd:label>
+        </fd:repeater-action>
+    </fd:widgets>
+</fd:form>

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/teamTemplate.jx
==============================================================================
--- (empty file)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/teamTemplate.jx	Thu Oct 28 08:41:49 2004
@@ -0,0 +1,243 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<jx:template xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" xmlns:cinclude="http://apache.org/cocoon/include/1.0"
+  xmlns:i18n="http://apache.org/cocoon/i18n/2.1" xmlns:ft="http://apache.org/cocoon/forms/1.0#template" xmlns:fi="http://apache.org/cocoon/forms/1.0#instance">
+  <!-- Import the macros that define CForms template elements -->
+  <jx:import uri="resource://org/apache/cocoon/forms/generation/jx-macros.xml"/>
+  <html>
+    <head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+      <link href="local-resources/dreamteam.css" type="text/css" rel="stylesheet"/>
+      <title>The Dream Team</title>
+    </head>
+    <body>
+      <h1>The Dream Team</h1>
+      <p>Now is the time to choose your dream team.</p>
+      <div class="legend">
+        <table>
+          <tr>
+            <td>
+              <img src="resources/move_up.gif"/>
+            </td>
+            <td>Move this row 1 up</td>
+          </tr>
+          <tr>
+            <td>
+              <img src="resources/move_down.gif"/>
+            </td>
+            <td>Move this row 1 down</td>
+          </tr>
+          <tr>
+            <td>
+              <img src="resources/delete.gif"/>
+            </td>
+            <td>Delete this row</td>
+          </tr>
+          <tr>
+            <td>
+              <img src="resources/new.gif"/>
+            </td>
+            <td>Add a new row below this row</td>
+          </tr>
+        </table>
+      </div>
+      <ft:form-template action="#{$continuation/id}.continue" method="POST">
+        <jx:choose>
+          <jx:when test="${form.getChild('teammembers').getSize() == 0}">
+            <p>
+              <strong> There is no team yet. </strong>
+            </p>
+          </jx:when>
+          <jx:otherwise>
+            <table>
+              <thead>
+                <tr>
+                  <td class="tableheader">
+                    <ft:repeater-widget-label id="teammembers" widget-id="position"/>
+                  </td>
+                  <td class="tableheader">
+                    <ft:repeater-widget-label id="teammembers" widget-id="memberId"/>
+                  </td>
+                  <td class="tableheader">
+                    <ft:repeater-widget-label id="teammembers" widget-id="country"/>
+                  </td>
+                  <td class="tableheader">
+                    <ft:repeater-widget-label id="teammembers" widget-id="select"/>
+                  </td>
+                </tr>
+              </thead>
+              <tbody>
+                <!-- The contents of the repeater-widget element 
+                     is a template that will be applied to each 
+                     row in the repeater. 
+                -->
+                <ft:repeater-widget id="teammembers">
+                  <tr>
+                    <td>
+                      <ft:widget id="position">
+                        <fi:styling submit-on-change="true"/>
+                      </ft:widget>
+                    </td>
+                    <td>
+                      <ft:widget id="memberId">
+                        <fi:styling submit-on-change="true"/>
+                      </ft:widget>
+                    </td>
+                    <td>
+                      <i18n:text>
+                        <ft:widget id="country"/>
+                      </i18n:text>
+                    </td>
+                    <td>
+                      <!-- Don't display the "move up" button 
+                           on the first row 
+                      -->
+                      <jx:choose>
+                        <jx:when test="${repeaterLoop.first}">
+                          <img src="resources/blank_btn.gif"/>
+                        </jx:when>
+                        <jx:otherwise>
+                          <ft:widget id="up">
+                            <fi:styling type="image" src="resources/move_up.gif"/>
+                          </ft:widget>
+                        </jx:otherwise>
+                      </jx:choose>
+                      <!-- Don't display the "move down" button 
+                           on the last row 
+                      -->
+                      <jx:choose>
+                        <jx:when test="${repeaterLoop.last}">
+                          <img src="resources/blank_btn.gif"/>
+                        </jx:when>
+                        <jx:otherwise>
+                          <ft:widget id="down">
+                            <fi:styling type="image" src="resources/move_down.gif"/>
+                          </ft:widget>
+                        </jx:otherwise>
+                      </jx:choose>
+                      <ft:widget id="delete">
+                        <fi:styling type="image" src="resources/delete.gif"/>
+                      </ft:widget>
+                      <ft:widget id="add">
+                        <fi:styling type="image" src="resources/new.gif"/>
+                      </ft:widget>
+                      <ft:widget id="select"/>
+                    </td>
+                  </tr>
+                </ft:repeater-widget>
+              </tbody>
+            </table>
+          </jx:otherwise>
+        </jx:choose>
+        <table>
+          <tr>
+            <td style="border: 0px solid;">
+              <ft:widget id="addmember"/>
+            </td>
+            <td style="border: 0px solid;">
+              <jx:if test="${widget.getChild('teammembers').getSize() &gt; 0}">
+                <ft:widget id="removemember"/>
+              </jx:if>
+            </td>
+          </tr>
+          <tr>
+            <td style="border: 0px solid;">
+              <input type="submit" value="Submit"/>
+            </td>
+            <td style="border: 0px solid;"/>
+          </tr>
+        </table>
+      </ft:form-template>
+      <p class="developer-header"> Developer Notes </p>
+      <h2>Page definition</h2>
+      <p class="developer-note"> This page is defined in <ul class="developer-note">
+          <li>
+            <b>teamTemplate.jx</b>, the form template, </li>
+          <li>
+            <b>teamDef.xml</b>, the widget definitions and</li>
+          <li>
+            <b>teamBind.xml</b>, the widget binding to Java Beans.</li>
+        </ul>
+        <p class="developer-note"> The pipeline calls the function <i>prot_buildTeam</i> in <b>team.js</b>. There is no
+          naming rule for flow functions, but adding a prefix ('prot_') as a simple kind of security measure to prevent
+          outsiders from directly calling the function. Security by obscurity you might call it. </p>
+        <h2>What happens?</h2>
+        <p class="developer-note"> In <i>prot_buildTeam</i> a list of 'positions' is generated from the information in
+          the Manager class and passed onto the form. </p>
+        <p class="developer-note"> Below is the definition of the <i>position</i> widget. </p>
+        <div class="code">
+          <div class="codeIndent"> &lt;fd:field id="position"&gt; <div class="codeIndent">
+              &lt;fd:label&gt;Position&lt;/fd:label&gt; </div>
+            <div class="codeIndent"> &lt;fd:datatype base="string"/&gt; </div>
+            <div class="codeIndent"> &lt;fd:selection-list dynamic="true" type="flow-jxpath"
+              list-path="positionList" value-path="value" label-path="label"/&gt; </div>
+            <div class="codeIndent"> &lt;fd:on-value-changed&gt; <div class="codeIndent">
+                &lt;fd:javascript&gt; <div class="codeIndent"> // this script can be found in team.js<br/>
+                  updateNameWidget(event); </div> &lt;/fd:javascript&gt; </div>
+              &lt;/fd:on-value-changed&gt; </div> &lt;/fd:field&gt; </div>
+        </div>
+        <p class="developer-note"> The widget <i>position</i> has a selection-list of type <i>flow-jxpath</i>. The other
+          attributes define the list to use: </p>
+        <ul class="developer-note">
+          <li>
+            <i>list-path</i> holds the name of the list that is passed in the "viewData" attribute </li>
+          <li>
+            <i>value-path</i> holds the name of the variable or method that returns the value to use </li>
+          <li>
+            <i>label-path</i> holds the name of the variable or method that returns the label for the value </li>
+        </ul>
+      </p>
+      <h2>Internationalization</h2>
+      <p class="developer-note"> The function also shows how to build this list with localized (i.e. i18n) labels. </p>
+      <div class="code">
+        <div class="codeIndent"> ...<br/> // key = key code for position<br/> // set the label to the localized message
+          using i18n<br/> positionList[i + 1] = {value: key, label: new I18nMessage(key)};<br/> ... </div>
+      </div>
+      <p class="developer-note"> Adding the appropriate code to switch locale is left as an exercise. :-) </p>
+      <h2>Dependency between widgets</h2>
+      <p class="developer-note"> The section <i>on-value-changed</i> holds the javascript that handles the dependency.
+        When the value of the <i>positionlist</i> changes, the <i>memberId</i> widget should get a new list of
+        names.<br/> The script that handles this update can be entered directly between the <i>javascript</i> tags, but
+        adding a descriptive function name there and moving the function to a separate javascript file keeps the widget
+        definition file clearer. Note the <i>event</i> parameter.<br/> Remember to add the
+        <i>submit-on-change="true"</i> attribute to the styling tag! </p>
+      <h2>Repeater validation</h2>
+      <p class="developer-note"> This repeater also has a repeater validation section, which prevents using duplicate
+        names. Again, the script can be entered directly in the widget definition file, but it can also be added to a
+        function that is placed in a separate javascript file. <b>Note:</b> this function takes <i>widget</i> (the
+        current repeater) as parameter and <b>MUST</b> return a boolean value (true = success).<br/> The repeater
+        validation function is called when the <i>Submit</i> button is pressed. If a validation error occurs, the first
+        invalid row will be marked with a blue <font style="color: blue">!</font>. </p>
+      <h2>Some observations</h2>
+      <p class="developer-note"> The samples provide a great set of XSL files to convert the template and styling tags
+        of the widgets into HTML. They start with <b>forms-samples-styling.xsl</b> and can be found in the
+        <i>samples/blocks/forms/resources</i> folders. </p>
+      <p class="developer-note">
+        <b>Note:</b> when you use these XSL files, remember to use them as the last transformation in your pipeline, or
+        make sure they find the appropriate tags to add some scripts to the html <i>&lt;head&gt;</i> and
+        <i>&lt;body&gt;</i> tags. Especially without a reference to the <b>forms-lib.js</b> file, the
+        on-value-changed event will not be sent to the server and therefore no script is executed. </p>
+      <p class="developer-note">
+        <b>Note:</b> At this moment (2004/10/20) a bug exists that throws a NullPointerException when the javascript in
+        the validation section is executed with the Rhino debugger enabled! </p>
+      <h2>When everything is valid</h2>
+      <p class="developer-note"> When <i>Submit</i> is pressed, and all rows validate, the <i>prot_buildTeam</i>
+        function takes over and hands the selected team to the Manager class for further processing. Finally the
+        function passes flow onto the <i>showteam</i> pipeline. </p>
+    </body>
+  </html>
+</jx:template>

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/flow/team.js
==============================================================================
--- (empty file)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/flow/team.js	Thu Oct 28 08:41:49 2004
@@ -0,0 +1,202 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+cocoon.load("resource://org/apache/cocoon/forms/flow/javascript/v3/Form.js");
+importClass (Packages.org.apache.cocoon.forms.util.I18nMessage);
+
+var manager = Packages.org.apache.cocoon.forms.samples.dreamteam.Manager.getManager();
+
+function initDreamTeamChooser() {
+  var documentURI = cocoon.parameters["documentURI"];
+  // parse the document to a DOM-tree
+  var document = loadDocument(documentURI);
+  // initialise the Manager
+  manager.readPlayers(document);
+  cocoon.sendPage("home.form");
+}
+
+function prot_showTeam() {
+  var persons = manager.getDreamTeam();
+  if(persons == null || persons == undefined) {
+     var size = 0;
+     persons = new Packages.java.util.ArrayList(0);
+  }
+  else {
+    var size = persons.getTeam().size();
+  }
+  var viewData = {
+     list : persons,
+     size : size
+  };
+  cocoon.sendPage("showTeam.form", viewData);
+} // showTeam
+
+function prot_buildTeam() {
+  var formDisplay = "team.form";
+  var formDef = "content/teamDef.xml";
+  var formBind = "content/teamBind.xml"
+
+  var allPersons = manager.getAllPersonsByPosition();
+  var list = new Packages.org.apache.cocoon.forms.samples.dreamteam.Team();
+
+  var keys = allPersons.keySet().toArray();
+  var key;
+  var positionList = new Array();
+  positionList[0] = {value:"", label: " "};
+  for (var i = 0; i < keys.length; i++) {
+    key = keys[i];
+    // set the label to the localized message using i18n
+    positionList[i + 1] = {value: key, label: new I18nMessage(key)};
+  }
+  /* 
+  // add the first player to the team
+  var firstPlayer = allPersons.get(keys[0]).getTeam().get(0);
+  var member = new Packages.org.apache.cocoon.samples.dreamteam.TeamMember();
+  member.position = firstPlayer.position;
+  member.memberId = firstPlayer.memberId;
+  member.name = firstPlayer.name;
+  member.country = firstPlayer.country;
+  list.addMember(member);	
+  */  
+
+  var form = new Form(formDef);
+  form.setAttribute("counter", new java.lang.Long(0));
+  form.setAttribute("everyone", allPersons);
+
+  form.createBinding(formBind);
+  form.load(list);
+
+  var viewData = {
+         list : list,
+         positionList: positionList
+   };
+  form.showForm(formDisplay, viewData);
+  form.save(list);
+  manager.buildDreamTeam(list);
+  // next page presenting the team
+  cocoon.sendPage("showteam.html");
+}
+
+
+// function used in the 'position' widget to change the selection-list of the 'memberId' widget
+// that displays the names
+
+function updateNameWidget(event) {
+  var value = event.source.value;
+  var memberIdwidget = event.source.lookupWidget("../memberId");
+  if (value != null) {
+      // Get the corresponding names list
+      var form = event.source.form;
+      var everyone = form.getAttribute("everyone");
+      if (everyone != null) {
+         nameList = everyone.get(value).team;
+         memberIdwidget.setSelectionList(nameList, "memberId", "name");
+         // Always set the name value to the first in the list.
+         // Note that it will also fire an event on the
+         // "name" widget if it already had a value.
+         memberIdwidget.setValue(nameList.get(0).memberId);
+      }
+  } else {
+    // Set an empty selection list
+    memberIdwidget.setSelectionList(new Packages.org.apache.cocoon.forms.datatype.EmptySelectionList("Choose position first"));
+    // Always set the name value to null.
+    // Note that it will also fire an event on the
+    // "name" widget if it already had a value.
+    memberIdwidget.setValue(null);
+  }
+}
+
+function updateCountryWidget(event) {
+  print("memberId changed from " + event.oldValue + " to " + event.newValue);
+  var value = event.source.value;
+  var form = event.source.form;
+  var everyone = form.getAttribute("everyone");
+  var position = event.source.lookupWidget("../position").value;
+  var team = everyone.get(position);
+  var member = team.getMember(value);
+  if (member != null) {
+    var country = member.getCountry();
+    var countrywidget = event.source.lookupWidget("../country");
+    countrywidget.setValue(country);
+  }
+}
+
+function updateRowIDcounter(event) {
+  // Increment the row creation ID counter
+  // (it has been initialized in the flowscript when the
+  // form was created).
+  // This shows how attributes can be used as a communication
+  // means between application logic and widget event handlers.
+
+  var form = event.source.form;
+  var count = new java.lang.Long(form.getAttribute("counter").longValue() + 1);
+  form.setAttribute("counter", count);
+  repeater = form.getChild("teammembers");
+  repeater.getRow(repeater.getSize() - 1).getChild("ID").setValue(count);
+}
+
+function validateRepeater(widget) {
+  // This demonstrates validating a repeater: we check here if all
+  // teammembers are distinct.
+  // A repeater cannot itself display a validation error, and therefore
+  // sets a validation error on a field in the offending row.
+  var list = new java.util.ArrayList();
+  var success = true;
+  // Iterate on all rows
+
+  for (var i = 0; i < widget.size; i++) {
+      // Get the row
+      var row = widget.getRow(i);
+      // Compute a key combining the first and last name
+      var key = row.lookupWidget("memberId").value;
+      if (list.contains(key)) {
+         // already in the list
+         row.lookupWidget("memberId").setValidationError(
+           new Packages.org.apache.cocoon.forms.
+             validation.ValidationError("Duplicate player", false));
+          success = false;
+          break; // no need to continue
+      }
+      // Add the current row's key to the list
+      list.add(key);
+  }
+
+  // Must return true/false
+  return success;
+}
+
+
+/*
+  This function is only used to read in an XML file and pass it on as DOM Document for further processing.
+*/
+function loadDocument(uri) {
+  var parser = null;
+  var source = null;
+  var resolver = null;
+  try {
+      parser = cocoon.getComponent(Packages.org.apache.excalibur.xml.dom.DOMParser.ROLE);
+      resolver = cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
+      source = resolver.resolveURI(uri);
+      var is = new Packages.org.xml.sax.InputSource(source.getInputStream());
+      is.setSystemId(source.getURI());
+      return parser.parseDocument(is);
+  } finally {
+      if (source != null)
+          resolver.release(source);
+      cocoon.releaseComponent(parser);
+      cocoon.releaseComponent(resolver);
+  }
+}

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages.xml
==============================================================================
--- (empty file)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages.xml	Thu Oct 28 08:41:49 2004
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<catalogue>
+    <message key="GK">Goalkeeper</message>
+    <message key="MD">Midfielder</message>
+    <message key="FW">Forward</message>
+    <message key="DF">Defense</message>
+    <message key="EN">England</message>
+    <message key="NL">Netherlands</message>
+    <message key="DK">Denmark</message>
+    <message key="DE">Germany</message>
+    <message key="SE">Sweden</message>
+    <message key="LV">Latvia</message>
+    <message key="CZ">Czech Republic</message>
+    <message key="RU">Russia</message>
+    <message key="BG">Bulgaria</message>
+    <message key="GR">Greece</message>
+    <message key="HR">Croatia</message>
+    <message key="CH">Switzerland</message>
+    <message key="IT">Italy</message>
+    <message key="ES">Spain</message>
+    <message key="FR">France</message>
+    <message key="PT">Portugal</message>
+</catalogue>

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages_de.xml
==============================================================================
--- (empty file)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages_de.xml	Thu Oct 28 08:41:49 2004
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<catalogue>
+    <message key="GK">Torwart</message>
+    <message key="MD">Mittelfeld Spieler</message>
+    <message key="FW">Strmer</message>
+    <message key="DF">Verteidiger</message>
+    <message key="EN">England</message>
+    <message key="NL">Niederlande</message>
+    <message key="DK">Dnemark</message>
+    <message key="DE">Deutschland</message>
+    <message key="SE">Schweden</message>
+    <message key="LV">Lettland</message>
+    <message key="CZ">Tschechische Republik</message>
+    <message key="RU">Russland</message>
+    <message key="BG">Bulgarien</message>
+    <message key="GR">Griechenland</message>
+    <message key="HR">Kroation</message>
+    <message key="CH">Schweiz</message>
+    <message key="IT">Italien</message>
+    <message key="ES">Spanien</message>
+    <message key="FR">Frankreich</message>
+    <message key="PT">Portugal</message>
+</catalogue>

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages_it.xml
==============================================================================
--- (empty file)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages_it.xml	Thu Oct 28 08:41:49 2004
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!-- This catalogue file contains translations for DreamTeam messages. -->
+<catalogue>
+    <message key="GK">Portiere</message>
+    <message key="MD">Centrocampista</message>
+    <message key="FW">Attaccante</message>
+    <message key="DF">Difensore</message>
+    <message key="EN">Inghilterra</message>
+    <message key="NL">Paesi Bassi</message>
+    <message key="DK">Danimarca</message>
+    <message key="DE">Germania</message>
+    <message key="SE">Svezia</message>
+    <message key="LV">Lettonia</message>
+    <message key="CZ">Repubblica Ceca</message>
+    <message key="RU">Russia</message>
+    <message key="BG">Bulgaria</message>
+    <message key="GR">Grecia</message>
+    <message key="HR">Croazia</message>
+    <message key="CH">Svizzera</message>
+    <message key="IT">Italia</message>
+    <message key="ES">Spagna</message>
+    <message key="FR">Francia</message>
+    <message key="PT">Portogallo</message>
+</catalogue>

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/FormsMessages.xml
==============================================================================
--- (empty file)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/FormsMessages.xml	Thu Oct 28 08:41:49 2004
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!-- This catalogue file contains translations for built-in CForms messages. -->
+<catalogue>
+  <message key="general.field-required">This field is required.</message>
+
+  <message key="datatype.conversion-failed">Not a valid {0}.</message>
+  <message key="datatype.long">integer number</message>
+  <message key="datatype.date">date</message>
+
+  <message key="validation.string.exact-length">Should be exactly {0} characters.</message>
+  <message key="validation.string.range-length">Should contain from {0} to {1} characters.</message>
+  <message key="validation.string.min-length">Should be at least {0} characters.</message>
+  <message key="validation.string.max-length">Should be at most {0} characters.</message>
+  <message key="validation.string.regexp">Does not match the following regular expression: {0}</message>
+
+  <message key="validation.string.invalidemail">This field does not contain a valid email address</message>
+
+  <message key="validation.array.exact-valuecount">Exactly {0} item(s) should be selected.</message>
+  <message key="validation.array.range-valuecount">At least {0} item(s) and at most {1} items should be selected.</message>
+  <message key="validation.array.min-valuecount">At least {0} item(s) should be selected.</message>
+  <message key="validation.array.max-valuecount">At most {0} items should be selected.</message>
+
+  <message key="multivaluefield.conversionfailed">One of the selected values is of an incorrect type.</message>
+
+  <message key="validation.numeric.range">Number should be in the range from {0} to {1}.</message>
+  <message key="validation.numeric.min">Number should be greater than or equal to {0}.</message>
+  <message key="validation.numeric.max">Number should be less than or equal to {0}.</message>
+
+  <message key="validation.mod10">Mod 10 check failed.</message>
+
+
+  <message key="aggregatedfield.split-failed">Content of this field does not match the following regular expression: {0}</message>
+
+</catalogue>

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/FormsMessages_nl_NL.xml
==============================================================================
--- (empty file)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/FormsMessages_nl_NL.xml	Thu Oct 28 08:41:49 2004
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!-- This catalogue file contains translations for built-in CForms messages. -->
+<catalogue xml:lang="nl_NL">
+  <message key="general.field-required">Dit veld moet ingevuld zijn.</message>
+
+  <message key="datatype.conversion-failed">Ongeldig {0}.</message>
+  <message key="datatype.long">integer getal</message>
+  <message key="datatype.date">datum</message>
+
+    <message key="validation.string.exact-length">Dit veld moet precies {0} tekens lang 
+        zijn.</message>
+    <message key="validation.string.range-length">Het aantal tekens moet tussen de {0} en 
+        {1} liggen.</message>
+  <message key="validation.string.min-length">Dit veld moet minimaal {0} tekens lang 
+        zijn.</message>
+  <message key="validation.string.max-length">Dit veld mag maximaal {0} tekens lang 
+        zijn.</message>
+    <message key="validation.string.regexp">De waarde komt niet overeen met deze reg. 
+        exp.: {0}</message>
+
+  <message key="validation.string.invalidemail">Dit is geen geldig email adres</message>
+
+  <message key="validation.array.exact-valuecount">Kies precies {0} elementen.</message>
+    <message key="validation.array.range-valuecount">Kies tussen de {0} en {1} 
+        elementen.</message>
+  <message key="validation.array.min-valuecount">Kies minimaal {0} elementen.</message>
+    <message key="validation.array.max-valuecount">Kies maximaal {0} 
+        elementen.</message>
+
+    <message key="multivaluefield.conversionfailed">Een van de gekozen waarden is 
+        ongeldig.</message>
+
+    <message key="validation.numeric.range">De waarde moet liggen tussen {0} en 
+        {1}.</message>
+    <message key="validation.numeric.min">De waarde is minimaal {0}.</message>
+  <message key="validation.numeric.max">De waarde is maximaal {0}.</message>
+
+  <message key="validation.mod10">De Mod 10 verificatie is mislukt.</message>
+
+
+  <message key="aggregatedfield.split-failed">De waarde komt niet overeen met deze reg. 
+        exp.: {0}</message>
+
+</catalogue>

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/BG.gif
==============================================================================
Binary file. No diff available.

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/CH.gif
==============================================================================
Binary file. No diff available.

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/CZ.gif
==============================================================================
Binary file. No diff available.

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/DE.gif
==============================================================================
Binary file. No diff available.

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/DK.gif
==============================================================================
Binary file. No diff available.

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/EN.gif
==============================================================================
Binary file. No diff available.

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/ES.gif
==============================================================================
Binary file. No diff available.

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/FR.gif
==============================================================================
Binary file. No diff available.

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/GR.gif
==============================================================================
Binary file. No diff available.

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/HR.gif
==============================================================================
Binary file. No diff available.

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/IT.gif
==============================================================================
Binary file. No diff available.

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/LV.gif
==============================================================================
Binary file. No diff available.

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/NL.gif
==============================================================================
Binary file. No diff available.

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/PT.gif
==============================================================================
Binary file. No diff available.

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/RU.gif
==============================================================================
Binary file. No diff available.

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/SE.gif
==============================================================================
Binary file. No diff available.

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/SW.gif
==============================================================================
Binary file. No diff available.

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/styles/dreamteam.css
==============================================================================
--- (empty file)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/styles/dreamteam.css	Thu Oct 28 08:41:49 2004
@@ -0,0 +1,99 @@
+/** CSS stylesheet for the dreamteam sample, adjusted to match the supersonic tour example app */
+
+body { 	
+    font-family: Georgia, Verdana, Arial;
+	font-style:normal;
+	font-variant:normal;
+	background-color: white;
+	background-image: none;
+	color: black;
+	padding-top:10px;
+	padding-bottom:10px;
+	padding-left:10px;
+	padding-right:10px;
+ }
+h1 {
+    font-size: 120%
+	font-weight: bold;
+	padding-left: 20px;
+	border-bottom: solid red 1px;
+}
+h2 {
+    border-bottom: solid #CCCCCC 1px;
+}
+
+img {
+    border: 0px solid;
+}
+table {
+    border: 0px solid;
+	margin:0px;
+	padding-top:10px;
+	padding-bottom:10px;
+	padding-left:10px;
+	padding-right:10px;
+	border-top: solid 0px #ccc;
+}
+
+.tableheader {
+	font-size:100%;
+	font-style:normal;
+	font-variant:normal;
+	font-weight:bold;
+	color:#000000;
+	padding: 5px;
+	border-bottom: 1px solid #ccc;
+}
+td {
+	font-size:100%;
+	font-style:normal;
+	font-variant:normal;
+	font-weight:normal;
+	color:#00000;
+	padding: 3px;
+	border-bottom: 1px solid #f0f0f0;
+}
+
+.legend {
+	border: 1px solid #ccc;
+	font-size: 70%;
+	width: 50%;
+}
+
+.developer-header {
+	border-bottom: solid #CCCCCC 1px;
+	background-color: #FFFFCC;
+	font-weight:bold;
+}
+
+.developer-note {
+	font-height: 80%;	
+}                        
+
+.code {
+    font-family: courier, monospaced;
+    font-size: 70%;
+    background: #FFFFCC;
+    margin-top: 1em;
+    padding: 2px;
+}
+
+.codeIndent {
+    margin-left: 1em;
+}
+
+                        
+.sort-arrow.descending {
+	background-image:		url("images/sort_down.gif");
+}
+
+.sort-arrow.ascending {
+	background-image:		url("images/sort_up.gif");
+}
+
+.sort-arrow {
+	width: 11px;
+	height:	11px;
+	margin: 0 2px;
+	cursor:	hand;
+}

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/sitemap.xmap
==============================================================================
--- (empty file)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/sitemap.xmap	Thu Oct 28 08:41:49 2004
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+  <map:components>
+    <map:transformers default="xalan">
+      <map:transformer name="i18n" src="org.apache.cocoon.transformation.I18nTransformer">
+        <catalogues default="dreamteam">
+          <catalogue id="forms" name="FormsMessages" location="messages"/>
+          <catalogue id="dreamteam" name="DreamTeamMessages" location="messages"/>
+        </catalogues>
+        <cache-at-startup>true</cache-at-startup>
+      </map:transformer>
+    </map:transformers>
+    <!-- map:selectors default="browser">
+         <map:selector name="request-method"
+            src="org.apache.cocoon.selection.RequestMethodSelector"/>
+      </map:selectors -->
+    <map:pipes default="caching"/>
+  </map:components>
+  <map:views>
+    <map:view name="content" from-label="content">
+      <map:serialize type="xml"/>
+    </map:view>
+    <map:view from-label="content" name="pretty-content">
+      <map:transform src="context://stylesheets/system/xml2html.xslt"/>
+      <map:serialize type="html"/>
+    </map:view>
+    <map:view name="links" from-position="last">
+      <map:serialize type="links"/>
+    </map:view>
+  </map:views>
+  <!-- ========================================= -->
+  <!-- flow scripts                              -->
+  <!-- ========================================= -->
+  <map:flow language="javascript">
+    <map:script src="flow/team.js"/>
+  </map:flow>
+  <map:pipelines>
+    <map:pipeline>
+      <!-- ========================================= -->
+      <!-- flow script continuations                 -->
+      <!-- ========================================= -->
+      <map:match pattern="**/*.continue">
+        <map:call continuation="{2}"/>
+      </map:match>
+      <map:match pattern="*.continue">
+        <map:call continuation="{1}"/>
+      </map:match>
+      <!-- ========================================= -->
+      <!-- Redirections for page requests on homepage -->
+      <!-- ========================================= -->
+      <map:match pattern="">
+        <map:redirect-to session="true" uri="home.html"/>
+      </map:match>
+      <map:match pattern="/">
+        <map:redirect-to session="true" uri="home.html"/>
+      </map:match>
+      <map:match pattern="home.html">
+        <map:call function="initDreamTeamChooser">
+          <map:parameter name="documentURI" value="content/soccer.xml"/>
+        </map:call>
+      </map:match>
+      <!-- ========================================= -->
+      <!-- Actual pages                              -->
+      <!-- ========================================= -->
+      <map:match pattern="showteam.html">
+        <map:call function="prot_showTeam"/>
+      </map:match>
+      <map:match pattern="buildteam.html">
+        <map:call function="prot_buildTeam"/>
+      </map:match>
+      <!-- ========================================= -->
+      <!-- Pipelines to display the actual pages     -->
+      <!-- ========================================= -->
+      <map:match pattern="team.form">
+        <map:generate type="jx" src="content/teamTemplate.jx"/>
+        <map:transform type="forms"/>
+        <map:transform src="../resources/forms-samples-styling.xsl">
+          <map:parameter name="resources-uri" value="resources"/>
+        </map:transform>
+        <map:transform src="context://samples/common/style/xsl/html/adding-header.xsl">
+          <map:parameter name="contextPath" value="{request:contextPath}"/>
+          <map:parameter name="servletPath" value="{request:servletPath}"/>
+          <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+          <map:parameter name="file" value="content/teamTemplate.jx"/>
+        </map:transform>
+        <map:transform type="i18n"/>
+        <map:serialize type="html"/>
+      </map:match>
+      <map:match pattern="showTeam.form">
+        <map:generate type="jx" src="content/showTeam.jx"/>
+        <map:transform src="context://samples/common/style/xsl/html/adding-header.xsl">
+          <map:parameter name="contextPath" value="{request:contextPath}"/>
+          <map:parameter name="servletPath" value="{request:servletPath}"/>
+          <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+          <map:parameter name="file" value="content/teamTemplate.jx"/>
+        </map:transform>        
+        <map:transform type="i18n"/>
+        <map:serialize type="html"/>
+      </map:match>
+      <map:match pattern="home.form">
+        <map:generate type="jx" src="content/main.jx"/>
+        <map:transform src="context://samples/common/style/xsl/html/adding-header.xsl">
+          <map:parameter name="contextPath" value="{request:contextPath}"/>
+          <map:parameter name="servletPath" value="{request:servletPath}"/>
+          <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+          <map:parameter name="file" value="content/teamTemplate.jx"/>
+        </map:transform>        
+        <map:serialize type="html"/>
+      </map:match>
+      <!-- ========================================= -->
+      <!-- images                                    -->
+      <!-- ========================================= -->
+      <map:match pattern="resources/*.gif">
+        <map:read mime-type="images/gif" src="../resources/{1}.gif"/>
+      </map:match>
+      <map:match pattern="flags/*.gif">
+        <map:read mime-type="images/gif" src="resources/flags/{1}.gif"/>
+      </map:match>
+      <!-- ========================================= -->
+      <!-- CSS stylesheets and JavaScript files      -->
+      <!-- ========================================= -->
+      <map:match pattern="local-resources/*.css">
+        <map:read mime-type="text/css" src="resources/styles/{1}.css"/>
+      </map:match>
+      <map:match pattern="resources/*.css">
+        <map:read mime-type="text/css" src="../resources/styles/{1}.css"/>
+      </map:match>
+      <map:match pattern="resources/*.js">
+        <map:read src="../resources/{1}.js"/>
+      </map:match>
+    </map:pipeline>
+  </map:pipelines>
+</map:sitemap>
+<!-- end of file -->

Mime
View raw message