cocoon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cross...@apache.org
Subject svn commit: r345438 [157/286] - in /cocoon/site/site/2.1: ./ developing/ developing/portal/ developing/portal/coplets/ developing/webapps/ developing/webapps/authentication/ faq/ howto/ installing/ plan/ plan/documentation/ plan/otherplanning/ plan/ove...
Date Fri, 18 Nov 2005 04:13:22 GMT
Added: cocoon/site/site/2.1/userdocs/flow/jxtemplate.html
URL: http://svn.apache.org/viewcvs/cocoon/site/site/2.1/userdocs/flow/jxtemplate.html?rev=345438&view=auto
==============================================================================
--- cocoon/site/site/2.1/userdocs/flow/jxtemplate.html (added)
+++ cocoon/site/site/2.1/userdocs/flow/jxtemplate.html Thu Nov 17 20:00:02 2005
@@ -0,0 +1,1964 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta content="Apache Forrest" name="Generator">
+<meta name="Forrest-version" content="0.8-dev">
+<meta name="Forrest-skin-name" content="pelt">
+<title>Advanced Control Flow - JXTemplate</title>
+<link type="text/css" href="../../../skin/basic.css" rel="stylesheet">
+<link media="screen" type="text/css" href="../../../skin/screen.css" rel="stylesheet">
+<link media="print" type="text/css" href="../../../skin/print.css" rel="stylesheet">
+<link type="text/css" href="../../../skin/profile.css" rel="stylesheet">
+<script src="../../../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../../../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../../../skin/fontsize.js" language="javascript" type="text/javascript"></script>
+<link rel="shortcut icon" href="../../../images/cocoon.ico">
+</head>
+<body onload="init()">
+<script type="text/javascript">ndeSetTextSize();</script>
+<div id="top">
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+<a href="http://www.apache.org/">apache</a> &gt; <a href="http://cocoon.apache.org/">cocoon</a><script src="../../../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
+</div>
+<!--+
+    |header
+    +-->
+<div class="header">
+<!--+
+    |start group logo
+    +-->
+<div class="grouplogo">
+<a href="http://www.apache.org/"><img class="logoImage" alt="Apache" src="../../../images/cocoon-project-logo.png" title="The Apache Software Foundation"></a>
+</div>
+<!--+
+    |end group logo
+    +-->
+<!--+
+    |start Project Logo
+    +-->
+<div class="projectlogo">
+<a href="http://cocoon.apache.org/"><img class="logoImage" alt="Apache Cocoon" src="../../../images/cocoon-logo.gif" title="Apache Cocoon"></a>
+</div>
+<!--+
+    |end Project Logo
+    +-->
+<!--+
+    |start Search
+    +-->
+<div class="searchbox">
+<form action="http://www.google.com/search" method="get" class="roundtopsmall">
+<input value="cocoon.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google">&nbsp; 
+                    <input name="Search" value="Search" type="submit">
+</form>
+</div>
+<!--+
+    |end search
+    +-->
+<!--+
+    |start Tabs
+    +-->
+<ul id="tabs">
+<li>
+<a class="base-not-selected" href="../../../2.1/index.html">Home</a>
+</li>
+</ul>
+<!--+
+    |end Tabs
+    +-->
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<!--+
+    |start Subtabs
+    +-->
+<div id="level2tabs"></div>
+<!--+
+    |end Endtabs
+    +-->
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+//  --></script>
+</div>
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+             
+             &nbsp;
+           </div>
+<!--+
+    |start Menu, mainarea
+    +-->
+<!--+
+    |start Menu
+    +-->
+<div id="menu">
+<div onclick="SwitchMenu('menu_1.1', '../../../skin/')" id="menu_1.1Title" class="menutitle">About</div>
+<div id="menu_1.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/features.html">Features</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/news.html">News</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/license.html">License</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/mirror.cgi">Download</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.2', '../../../skin/')" id="menu_selected_1.2Title" class="menutitle" style="background-image: url('../../../skin/images/chapter_open.gif');">Documentation</div>
+<div id="menu_selected_1.2" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../../2.1/introduction.html">Introduction</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.2', '../../../skin/')" id="menu_1.2.2Title" class="menutitle">Tracks</div>
+<div id="menu_1.2.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/tracks/index.html">Introduction</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/tracks/first-steps-track.html">First steps</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/tracks/web-publishing-track.html">Web publishing</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.3', '../../../skin/')" id="menu_1.2.3Title" class="menutitle">Installation</div>
+<div id="menu_1.2.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="http://cocoon.apache.org/mirror.cgi">Download</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/installing/index.html">Intro</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/installing/requirements.html">System requirements</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/installing/updating-older.html">Updating to version 2.1.5</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/installing/jars.html">Jars</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/installing/tests.html">Overview</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/overview.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.2.5', '../../../skin/')" id="menu_selected_1.2.5Title" class="menutitle" style="background-image: url('../../../skin/images/chapter_open.gif');">User Guide</div>
+<div id="menu_selected_1.2.5" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/index.html">User Documentation</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.2', '../../../skin/')" id="menu_1.2.5.2Title" class="menutitle">Concepts</div>
+<div id="menu_1.2.5.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/index.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.2.2', '../../../skin/')" id="menu_1.2.5.2.2Title" class="menutitle">Sitemap</div>
+<div id="menu_1.2.5.2.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/sitemap.html">Section Home</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/sitemap/sitemap-examples.html">Example sitemap snippets</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/views.html">Views</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/caching.html">Caching</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/actions.html">Actions</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/matchers_selectors.html">Matchers and Selectors</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/catalog.html">Entity Catalogs</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/mrustore.html">MRUMemoryStore</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/persistence.html">Persistence</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/storejanitor.html">StoreJanitor</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/xmlsearching.html">XML Searching</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/validation.html">XML Validation</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/databases.html">Databases</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/modules.html">Modules</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/modules-ref.html">Modules Reference</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/redirection.html">Redirection</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/profiler.html">Profiler</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/errorhandling.html">Error Handling</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3', '../../../skin/')" id="menu_1.2.5.3Title" class="menutitle">Sitemap Components</div>
+<div id="menu_1.2.5.3" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.2.5.3.1', '../../../skin/')" id="menu_1.2.5.3.1Title" class="menutitle">Generators</div>
+<div id="menu_1.2.5.3.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/generators.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.1.2', '../../../skin/')" id="menu_1.2.5.3.1.2Title" class="menutitle">Default</div>
+<div id="menu_1.2.5.3.1.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/default/file-generator.html">File Generator</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.1.3', '../../../skin/')" id="menu_1.2.5.3.1.3Title" class="menutitle">Core</div>
+<div id="menu_1.2.5.3.1.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/calendar-generator.html">Calendar Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/directory-generator.html">Directory Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/file-generator.html">File Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/imagedirectory-generator.html">Imagedirectory Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/jx-generator.html">Jx Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/linkstatus-generator.html">Linkstatus Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/mp3directory-generator.html">MP3directory Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/error-generator.html">Notifying Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/request-generator.html">Request Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/sessionattribute-generator.html">SessionAttribute Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/status-generator.html">Status Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/stream-generator.html">Stream Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xpathdirectory-generator.html">Xpathdirectory Generator</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.1.4', '../../../skin/')" id="menu_1.2.5.3.1.4Title" class="menutitle">Optional</div>
+<div id="menu_1.2.5.3.1.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/extractor-generator.html">Fragment Extractor Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/html-generator.html">HTML Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/jsp-generator.html">JSP Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/php-generator.html">PHP Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/profile-generator.html">Profile Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/script-generator.html">Script Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/search-generator.html">Search Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/serverpages-generator.html">Server Pages Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/velocity-generator.html">Velocity Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/wsproxy-generator.html">Web Service Proxy Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xmldbcollection-generator.html">XML:DB Collection Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xmldb-generator.html">XML:DB Generator</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.2', '../../../skin/')" id="menu_1.2.5.3.2Title" class="menutitle">Transformers</div>
+<div id="menu_1.2.5.3.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/transformers.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.2.2', '../../../skin/')" id="menu_1.2.5.3.2.2Title" class="menutitle">Default</div>
+<div id="menu_1.2.5.3.2.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/default/xslt-transformer.html">XSLT Transformer</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.2.3', '../../../skin/')" id="menu_1.2.5.3.2.3Title" class="menutitle">Core</div>
+<div id="menu_1.2.5.3.2.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/extractor-transformer.html">Fragment Extractor Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/i18nTransformer.html">I18n Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/jpath-transformer.html">JPath Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/log-transformer.html">Log Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/filter-transformer.html">Filter Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/readdomsession-transformer.html">Read DOM Session Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/rolefilter-transformer.html">RoleFilter Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/simpleform-transformer.html">SimpleForm Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/simpleforminstance-transformer.html">SimpleFormInstance Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/writedomsession-transformer.html">Write DOM Session Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xinclude-transformer.html">Xinclude Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/cinclude-transformer.html">Cinclude Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/encodeurl-transformer.html">EncodeUrl Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/sourcewriting-transformer.html">Sourcewriting Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/augment-transformer.html">Augment Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/jx-template-transformer.html">JX Template Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xslt-transformer.html">XSLT Transformer</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.2.4', '../../../skin/')" id="menu_1.2.5.3.2.4Title" class="menutitle">Optional</div>
+<div id="menu_1.2.5.3.2.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/ldap-transformer.html">LDAP Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/lexer-transformer.html">Lexical Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/parser-transformer.html">Parser Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/pattern-transformer.html">Pattern Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/session.html">Session Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/sql-transformer.html">SQL Transformer</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.3', '../../../skin/')" id="menu_1.2.5.3.3Title" class="menutitle">Serializers</div>
+<div id="menu_1.2.5.3.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/serializers.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.3.2', '../../../skin/')" id="menu_1.2.5.3.3.2Title" class="menutitle">Default</div>
+<div id="menu_1.2.5.3.3.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/default/html-serializer.html">HTML Serializer</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.3.3', '../../../skin/')" id="menu_1.2.5.3.3.3Title" class="menutitle">Core</div>
+<div id="menu_1.2.5.3.3.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/html-serializer.html">HTML Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xhtml-serializer.html">XHTML Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xml-serializer.html">XML Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/text-serializer.html">Text Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/wap-serializer.html">WAP/WML Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/svg-serializer.html">SVG Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/svgxml-serializer.html">SVG/XML Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/svgjpeg-serializer.html">SVG/JPEG Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/svgpng-serializer.html">SVG/PNG Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/svgtiff-serializer.html">SVG/TIFF Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/vrml-serializer.html">VRML Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/link-serializer.html">Link Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/ziparchive-serializer.html">Zip archive Serializer</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.3.4', '../../../skin/')" id="menu_1.2.5.3.3.4Title" class="menutitle">Optional</div>
+<div id="menu_1.2.5.3.3.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/pdf-serializer.html">PDF Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/ps-serializer.html">PS Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/pcl-serializer.html">PCL Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xls-serializer.html">HSSF (XLS) Serializer</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.4', '../../../skin/')" id="menu_1.2.5.3.4Title" class="menutitle">Matchers</div>
+<div id="menu_1.2.5.3.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/matchers.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.4.2', '../../../skin/')" id="menu_1.2.5.3.4.2Title" class="menutitle">Default</div>
+<div id="menu_1.2.5.3.4.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/default/wildcarduri-matcher.html">WildCard URI Matcher</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.4.3', '../../../skin/')" id="menu_1.2.5.3.4.3Title" class="menutitle">Core</div>
+<div id="menu_1.2.5.3.4.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/core/wildcarduri-matcher.html">WildCard URI Matcher</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/core/wildcardheader-matcher.html">WildCard Header Matcher</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.4.4', '../../../skin/')" id="menu_1.2.5.3.4.4Title" class="menutitle">Optional</div>
+<div id="menu_1.2.5.3.4.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/optional/template-matcher.html">Template Matcher</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.5', '../../../skin/')" id="menu_1.2.5.3.5Title" class="menutitle">Selectors</div>
+<div id="menu_1.2.5.3.5" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/selectors.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.5.2', '../../../skin/')" id="menu_1.2.5.3.5.2Title" class="menutitle">Default</div>
+<div id="menu_1.2.5.3.5.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/default/browser-selector.html">Browser Selector</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.5.3', '../../../skin/')" id="menu_1.2.5.3.5.3Title" class="menutitle">Core</div>
+<div id="menu_1.2.5.3.5.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/browser-selector.html">Browser Selector</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/host-selector.html">Host Selector</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/parameter-selector.html">Parameter Selector</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/requestattribute-selector.html">Request Attribute Selector</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/requestmethod-selector.html">Request Method Selector</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/requestparameter-selector.html">Request Parameter Selector</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/resourceexists-selector.html">Resource Exists Selector</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/regular-expression-header-selector.html">Regular-expression Header Selector</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.5.4', '../../../skin/')" id="menu_1.2.5.3.5.4Title" class="menutitle">Scratchpad</div>
+<div id="menu_1.2.5.3.5.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/scratchpad/date-selector.html">Date Selector</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.6', '../../../skin/')" id="menu_1.2.5.3.6Title" class="menutitle">Actions</div>
+<div id="menu_1.2.5.3.6" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/actions.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/database-actions.html">Database</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.6.3', '../../../skin/')" id="menu_1.2.5.3.6.3Title" class="menutitle">Optional</div>
+<div id="menu_1.2.5.3.6.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/optional/sendmail-action.html">Sendmail Action</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/optional/session-action.html">Session Action</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/optional/script-action.html">Script Action</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.7', '../../../skin/')" id="menu_1.2.5.3.7Title" class="menutitle">Readers</div>
+<div id="menu_1.2.5.3.7" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/readers.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.7.2', '../../../skin/')" id="menu_1.2.5.3.7.2Title" class="menutitle">Default</div>
+<div id="menu_1.2.5.3.7.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/default/resource-reader.html">Resource Reader</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.7.3', '../../../skin/')" id="menu_1.2.5.3.7.3Title" class="menutitle">Core</div>
+<div id="menu_1.2.5.3.7.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/core/image-reader.html">Image Reader</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/core/resource-reader.html">Resource Reader</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.7.4', '../../../skin/')" id="menu_1.2.5.3.7.4Title" class="menutitle">Optional</div>
+<div id="menu_1.2.5.3.7.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/optional/axisrpc-reader.html">AxisRPC Reader</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/optional/database-reader.html">Database Reader</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/optional/jsp-reader.html">JSP Reader</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.7.5', '../../../skin/')" id="menu_1.2.5.3.7.5Title" class="menutitle">Scratchpad</div>
+<div id="menu_1.2.5.3.7.5" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/scratchpad/directoryziparchiver-reader.html">Directory ZIP Archiver</a>
+</div>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.2.5.4', '../../../skin/')" id="menu_selected_1.2.5.4Title" class="menutitle" style="background-image: url('../../../skin/images/chapter_open.gif');">Flow</div>
+<div id="menu_selected_1.2.5.4" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/index.html">Introduction</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/continuations.html">Continuations</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/how-does-it-work.html">How does it work?</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/using.html">Usage</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/tutor.html">Tutorial</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/sitemap.html">Sitemap</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/api.html">Flowscript</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/java.html">Calling Java</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/views.html">Views</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">JXTemplate</div>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/jpath.html">JPath</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/velocity.html">Velocity</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.5', '../../../skin/')" id="menu_1.2.5.5Title" class="menutitle">Cocoon Forms</div>
+<div id="menu_1.2.5.5" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.2.5.5.1', '../../../skin/')" id="menu_1.2.5.5.1Title" class="menutitle">Basics</div>
+<div id="menu_1.2.5.5.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/basics/index.html">Introduction</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/basics/sample.html">Sample</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/basics/improving_sample.html">Improving the sample</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.5.2', '../../../skin/')" id="menu_1.2.5.5.2Title" class="menutitle">Widgets</div>
+<div id="menu_1.2.5.5.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_form.html">form</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_field.html">field</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_multivaluefield.html">multivaluefield</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_booleanfield.html">booleanfield</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_repeater.html">repeater</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_output.html">output</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_submit.html">submit</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_action.html">action</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_repeater_action.html">repeater-action</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_row_action.html">row-action</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_aggregatefield.html">aggregatefield</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_upload.html">upload</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_messages.html">messages</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_imagemap.html">imagemap</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_tree.html">tree</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_group.html">group/struct</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_union.html">union</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_class.html">class/new</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.5.3', '../../../skin/')" id="menu_1.2.5.5.3Title" class="menutitle">Widget Concepts</div>
+<div id="menu_1.2.5.5.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgetconcepts/validation.html">Validation</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgetconcepts/eventhandling.html">Event Handling</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgetconcepts/datatypes.html">Datatypes</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgetconcepts/selectionlists.html">Selection lists</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgetconcepts/widgetstates.html">Widget states</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.5.4', '../../../skin/')" id="menu_1.2.5.5.4Title" class="menutitle">Form Publishing</div>
+<div id="menu_1.2.5.5.4" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.2.5.5.4.1', '../../../skin/')" id="menu_1.2.5.5.4.1Title" class="menutitle">Templating</div>
+<div id="menu_1.2.5.5.4.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/publishing/templating.html">Section Home</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/publishing/templating/templategenerator.html">Template Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/publishing/templating/templatetransformer.html">Template Transformer</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/publishing/formsgenerator.html">Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/publishing/xslt.html">XSLT</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/binding.html">Binding Framework</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xmlbinding.html">Simple XML Binding</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.5.7', '../../../skin/')" id="menu_1.2.5.5.7Title" class="menutitle">API</div>
+<div id="menu_1.2.5.5.7" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/api/api_javascript.html">Javascript (Flowscript)</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/api/api_java.html">Java</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/formlibraries.html">Form libraries</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/ajax.html">Ajax</a>
+</div>
+<div class="menuitem">
+<a href="http://wiki.apache.org/cocoon/Forms">Forms @ Wiki</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.6', '../../../skin/')" id="menu_1.2.5.6Title" class="menutitle">XSP</div>
+<div id="menu_1.2.5.6" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/index.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.6.2', '../../../skin/')" id="menu_1.2.5.6.2Title" class="menutitle">XSP</div>
+<div id="menu_1.2.5.6.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xsp.html">Section Home</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xsp/logicsheet.html">XSP Guide</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xsp/xsp-internals.html">XSP Internals</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xsp/logicsheet-concepts.html">XSP Logicsheets</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xsp/sessions.html">Sessions</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.6.3', '../../../skin/')" id="menu_1.2.5.6.3Title" class="menutitle">Logicsheets</div>
+<div id="menu_1.2.5.6.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/logicsheets/request.html">Request</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/logicsheets/session.html">Session</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/logicsheets/esql.html">ESQL</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/logicsheets/logicsheet-forms.html">Forms</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/logicsheets/sendmail.html">Sendmail</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.7', '../../../skin/')" id="menu_1.2.5.7Title" class="menutitle">Offline</div>
+<div id="menu_1.2.5.7" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/offline/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/offline/cli.html">Command Line</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/offline/configuration.html">CLI Configuration</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/offline/ant.html">Ant</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/offline/bean.html">Cocoon Bean</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.6', '../../../skin/')" id="menu_1.2.6Title" class="menutitle">Developer's Guide</div>
+<div id="menu_1.2.6" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/developing/index.html">Index</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.6.2', '../../../skin/')" id="menu_1.2.6.2Title" class="menutitle">Concepts</div>
+<div id="menu_1.2.6.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/developing/httprequest.html">Internals</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/extending.html">Extending</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/avalon.html">Avalon</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/source.html">Source Handling</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/stores.html">Stores</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/datasources.html">Using Databases</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/parent-component-manager.html">Parent CM</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/deliquick.html">DELI Quick Start</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/deli.html">DELI</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.6.3', '../../../skin/')" id="menu_1.2.6.3Title" class="menutitle">Developing Webapps</div>
+<div id="menu_1.2.6.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/session.html">Sessions</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/contexts.html">Session Contexts</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.6.3.4', '../../../skin/')" id="menu_1.2.6.3.4Title" class="menutitle">Authentication</div>
+<div id="menu_1.2.6.3.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/authentication.html">Section Home</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/authentication/authentication-handler.html">The Authentication Handler</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/authentication/authenticating_user.html">Authenticating a User</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/authentication/user_management.html">User Management</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/authentication/application_management.html">Application Management</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/authentication/module_management.html">Module Management</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/authentication/user_administration.html">User Administration</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/authentication/summary.html">Configuration Summary</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/authentication/pipeline_patterns.html">Pipeline Patterns</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/forms.html">Simple Forms</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/portal.html">Portal FW</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.6.4', '../../../skin/')" id="menu_1.2.6.4Title" class="menutitle">Building a portal using the Portal Engine</div>
+<div id="menu_1.2.6.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/portal-block.html">Portal Engine</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.6.4.3', '../../../skin/')" id="menu_1.2.6.4.3Title" class="menutitle">Configuring Coplets</div>
+<div id="menu_1.2.6.4.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/coplets.html">Section Home</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/coplets/uricoplet.html">The URICoplet</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/coplets/cachinguricoplet.html">The CachingURICoplet</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/layout_skins.html">Layout and Skins</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/events.html">Event Handling</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/profiles.html">Profiles</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/wsrp.html">WSRP Support</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/authentication.html">Authentication</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/forms.html">Form handling</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/basket.html">A Basket</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/web3.html">Connect to SAP R/3</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/2.1/apidocs/index.html">API (Javadoc)</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.7', '../../../skin/')" id="menu_1.2.7Title" class="menutitle">Tutorials</div>
+<div id="menu_1.2.7" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/tutorial/index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/tutorial/tutorial-develop-webapp.html">WebApp</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/tutorial/tutorial-generator.html">Custom Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/tutorial/tutorial-shots.html">Tutorial screenshots</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/tutorial/tutorial-rmi-generator.html">RMIServer</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.8', '../../../skin/')" id="menu_1.2.8Title" class="menutitle">FAQ</div>
+<div id="menu_1.2.8" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/faq/index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-install.html">Install</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-configure-environment.html">Configure</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-cvs.html">CVS/SVN</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-configure-c2.html">Configure C2</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-databases.html">Databases</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-xsp.html">XSP</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-xslt.html">XSLT</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-debugging.html">Debugging</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-sitemap.html">Sitemap</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-generators.html">Generators</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-transformers.html">Transformers</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-serializers.html">Serializers</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-matchers.html">Matchers</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-selectors.html">Selectors</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-actions.html">Actions</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-aggregators.html">Aggregators</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.9', '../../../skin/')" id="menu_1.2.9Title" class="menutitle">How Tos</div>
+<div id="menu_1.2.9" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/howto/index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/howto-explore-samples.html">Samples</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/howto-paginator-transformer.html">Paginator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/howto-html-pdf-publishing.html">HTML-PDF</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/wsproxy-generator.html">Web Syndication</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/howto-flow-debugger.html">Flow Debugger</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/howto-author-howto.html">Author How-To</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/howto-author-faq.html">Author FAQ</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/howto-author-snippet.html">Author Snippet</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/howto-author-core-docs.html">Author Docs</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/howto-patch.html">Prepare patch</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/howto-bugzilla.html">Bugzilla</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/performancetips.html">Performance</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.11', '../../../skin/')" id="menu_1.2.11Title" class="menutitle">Snippets</div>
+<div id="menu_1.2.11" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/snippet/index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/snippet/snippet-xslt-options.html">XSLT Processor Options</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/snippet/snippet-internal-pipeline.html">Internal Pipeline</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="http://wiki.apache.org/cocoon/">Wiki Docs</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.3', '../../../skin/')" id="menu_1.3Title" class="menutitle">Status</div>
+<div id="menu_1.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/changes.html">Changes</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/todo.html">To Do</a>
+</div>
+<div onclick="SwitchMenu('menu_1.3.3', '../../../skin/')" id="menu_1.3.3Title" class="menutitle">Planning Notes</div>
+<div id="menu_1.3.3" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.3.3.1', '../../../skin/')" id="menu_1.3.3.1Title" class="menutitle">Overview</div>
+<div id="menu_1.3.3.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/plan/overview/index.html">Planning Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/plan/overview/roadmap.html">Roadmap</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.3.3.2', '../../../skin/')" id="menu_1.3.3.2Title" class="menutitle">Documentation</div>
+<div id="menu_1.3.3.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/plan/documentation/doc.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/plan/documentation/linkstatus.html">Fix broken links</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.3.3.3', '../../../skin/')" id="menu_1.3.3.3Title" class="menutitle">Other Planning</div>
+<div id="menu_1.3.3.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/plan/otherplanning/release.html">Release Plan</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/plan/otherplanning/samples.html">Cocoon Samples</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/plan/otherplanning/proposed-toc.html">Proposed TOC</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/plan/otherplanning/updating.html">Updating Cocoon</a>
+</div>
+</div>
+</div>
+<div class="menuitem">
+<a href="http://issues.apache.org/jira/browse/COCOON">Patch queue</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.4', '../../../skin/')" id="menu_1.4Title" class="menutitle">Community</div>
+<div id="menu_1.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/bylaws-addendum.html">Cocoon Bylaws</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/who.html">Hall of Fame</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/community/contrib.html">Contributing</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/community/mail-lists.html">Mail Lists</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/community/mail-archives.html">Mail Archives</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.5', '../../../skin/')" id="menu_1.5Title" class="menutitle">Project</div>
+<div id="menu_1.5" class="menuitemgroup">
+<div class="menuitem">
+<a href="http://issues.apache.org/jira/browse/COCOON">Bug Database</a>
+</div>
+<div class="menuitem">
+<a href="http://svn.apache.org/viewcvs.cgi/cocoon/branches/BRANCH_2_1_X/?root=Apache-SVN">Code Repository</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/mirror.cgi#nightly">Dev Snapshots</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.6', '../../../skin/')" id="menu_1.6Title" class="menutitle">Other Releases</div>
+<div id="menu_1.6" class="menuitemgroup">
+<div class="menuitem">
+<a href="http://cocoon.apache.org/1.x/">Cocoon 1.x</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/2.0/">Cocoon 2.0</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.7', '../../../skin/')" id="menu_1.7Title" class="menutitle">External</div>
+<div id="menu_1.7" class="menuitemgroup">
+<div class="menuitem">
+<a href="http://wiki.apache.org/cocoon/GT2005Hackaton">2005 Get Together</a>
+</div>
+</div>
+<div id="credit"></div>
+<div id="roundbottom">
+<img style="display: none" class="corner" height="15" width="15" alt="" src="../../../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
+<!--+
+  |alternative credits
+  +-->
+<div id="credit2">
+<a href="http://apachecon.com/"><img border="0" title="ApacheCon US 2005" alt="ApacheCon US 2005 - logo" src="http://apache.org/images/ac2005us_blue_125x125.jpg" style="width: 125px;height: 125px;"></a>
+</div>
+</div>
+<!--+
+    |end Menu
+    +-->
+<!--+
+    |start content
+    +-->
+<div id="content">
+<h1>Advanced Control Flow - JXTemplate</h1>
+<a name="N10007"></a><a name="JXTemplate+Generator"></a>
+<h2 class="h3">JXTemplate Generator</h2>
+<div class="section">
+<p>The JXTemplate Generator is a page template processor that allows you to
+inject data from Java and JavaScript objects passed by a Cocoon Flowscript into
+a Cocoon pipeline. It provides a set of tags (similar to the
+<a class="external" href="http://java.sun.com/products/jsp/jstl/">JSTL</a> core tags) that allow
+you to iterate over Java collections (and Java or JavaScript arrays) and to test
+for the presence of optional or alternate bean properties, as well as embedded
+expressions to specify conditions and to access the properties of objects. The
+<em>JX</em>Template Generator gets its name from the embedded expression
+languages it supports, namely
+<a class="external" href="http://jakarta.apache.org/commons/jxpath">Apache <em>JX</em>Path</a>
+and <a class="external" href="http://jakarta.apache.org/commons/jexl">Apache
+<em>J</em>e<em>X</em>l</a>.</p>
+<p>To use the JXTemplate Generator, add a generator entry to your
+<a href="../../../2.1/userdocs/concepts/sitemap/../sitemap.html">sitemap</a> with the <tt>src</tt> attribute set to
+<tt>org.apache.cocoon.generation.JXTemplateGenerator</tt>, for example like
+this:</p>
+<pre>&lt;map:generators&gt;
+  &lt;map:generator label="content,data" 
+      logger="sitemap.generator.jx" name="jx" 
+         src="org.apache.cocoon.generation.JXTemplateGenerator"/&gt;
+&lt;/map:generators&gt;
+</pre>
+</div>
+<a name="N10033"></a><a name="Expression+Languages"></a>
+<h2 class="h3">Expression Languages</h2>
+<div class="section">
+<p>The JXTemplate Generator supports two embedded expression languages:
+<a class="external" href="http://jakarta.apache.org/commons/jexl">Jexl</a> and
+<a class="external" href="http://jakarta.apache.org/commons/jxpath">JXPath</a>. Apache
+<a class="external" href="http://jakarta.apache.org/commons/jexl">Jexl</a> provides an extended
+version of the expression language of the
+<a class="external" href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/JSTL.html">JSTL</a>.
+Apache <a class="external" href="http://jakarta.apache.org/commons/jxpath">JXPath</a> provides an
+interpreter of the <a class="external" href="http://www.w3.org/TR/xpath">XPath</a> expression
+language that can apply XPath expressions to graphs of Java objects of all
+kinds: JavaBeans, Maps, Servlet contexts, DOM etc, including mixtures thereof.
+</p>
+<p>Having an embedded expression language allows a page author to access an
+object using a simple syntax such as</p>
+<pre>&lt;site signOn="${accountForm.signOn}"&gt;
+</pre>
+<p>Embedded Jexl expressions are contained in <tt>${}</tt>.</p>
+<p>Embedded JXPath expressions are contained in <tt>#{}</tt>.</p>
+<p>The referenced objects may be Java Beans, DOM, or JavaScript objects from a
+Flowscript. In addition, a special <tt>cocoon</tt> object providing access to
+the Cocoon <a href="../../../2.1/">FOM</a> is available as both a JXPath and
+Jexl variable in a template.</p>
+<p>The <tt>cocoon</tt> object contains the following properties:</p>
+<ul>
+
+<li>
+<a href="../../../2.1/">request</a>: <br>
+The current Cocoon request</li>
+
+<li>
+<a href="../../../2.1/">session</a>: <br>
+The user session associated with the current request</li>
+
+<li>
+<a href="../../../2.1/">context</a>: <br>
+The Cocoon context associated with the current request</li>
+
+<li>
+<tt>parameters</tt>: <br>
+A map containing the parameters passed to the generator in the pipeline</li>
+
+<li>
+<a href="../../../2.1/">continuation</a>: <br>
+The current Web Continuation from your Flowscript</li>
+
+</ul>
+<p>Jexl Example:</p>
+<pre>The content type of the current request is ${cocoon.request.contentType}
+</pre>
+<p>JXPath Example:</p>
+<pre>The content type of the current request is #{$cocoon/request/contentType}
+</pre>
+<p>You would typically access the <tt>id</tt> of the Web Continuation:</p>
+<pre>&lt;form action="${cocoon.continuation.id}"&gt;
+</pre>
+<p>You can also reach previous continuations via its <tt>parent</tt> property:
+</p>
+<pre>&lt;form action="${cocoon.continuation.parent.id}" &gt;
+</pre>
+<p>or using an XPath expression:</p>
+<pre>&lt;form action="#{$cocoon/continuation/parent/id}" &gt;
+</pre>
+<p>Deprecated Variables:</p>
+<p>The following variables are deprecated but still supported:</p>
+<ul>
+
+<li>
+
+<a class="external" href="file:/home/daisy/tmpdocimport/documentation/apidocs/org/apache/cocoon/environment/Request.html">org.apache.cocoon.environment.Request</a>
+<tt>request</tt>: <br>
+The current Cocoon request (deprecated: use <tt>cocoon.request</tt> instead)
+</li>
+
+<li>
+
+<a class="external" href="file:/home/daisy/tmpdocimport/documentation/apidocs/org/apache/cocoon/environment/Session.html">org.apache.cocoon.environment.Session</a>
+<tt>session</tt>: <br>
+The current user session (deprecated: use <tt>cocoon.session</tt> instead)</li>
+
+<li>
+
+<a class="external" href="file:/home/daisy/tmpdocimport/documentation/apidocs/org/apache/cocoon/environment/Context.html">org.apache.cocoon.environment.Context</a>
+<tt>context</tt>: <br>
+The current context (deprecated: use <tt>cocoon.context</tt> instead)</li>
+
+<li>
+
+<a class="external" href="file:/home/daisy/tmpdocimport/documentation/apidocs/org/apache/cocoon/components/flow/WebContinuation.html">org.apache.cocoon.components.flow.WebContinuation</a>
+<tt>continuation</tt>: <br>
+The current Web Continuation (deprecated: use <tt>cocoon.continuation</tt>
+instead)</li>
+
+</ul>
+</div>
+<a name="N100F2"></a><a name="Parameters"></a>
+<h2 class="h3">Parameters</h2>
+<div class="section">
+<a name="N100F6"></a><a name="lenient-xpath"></a>
+<h3 class="h4">lenient-xpath</h3>
+<p>By default XPath evaluation throws an exception if the supplied XPath does
+not map to an existing property. This constraint can be relaxed by setting the
+parameter <tt>lenient-xpath</tt> to <tt>true</tt>. In the lenient mode
+evaluation simply returns null if the path maps to nothing.</p>
+<p>Example:</p>
+<pre>    &lt;map:match pattern="*.jx"&gt;
+      &lt;map:generate type="jx" src="documents/{1}.jx"&gt;
+           &lt;map:parameter name="lenient-xpath" value="true"/&gt;
+      &lt;/map:generate&gt;
+      &lt;map:serialize type="xhtml"/&gt;
+    &lt;/map:match&gt;
+</pre>
+</div>
+<a name="N10106"></a><a name="Tags"></a>
+<h2 class="h3">Tags</h2>
+<div class="section">
+<p>The JXTemplate Generator tags are defined in the namespace</p>
+<pre>http://apache.org/cocoon/templates/jx/1.0
+</pre>
+<a name="N1010E"></a><a name="template"></a>
+<h3 class="h4">template</h3>
+<p>The <tt>template</tt> tag defines a new template:</p>
+<pre>&lt;jx:template xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"&gt;
+   body
+&lt;/jx:template&gt;
+</pre>
+<a name="N10119"></a><a name="import"></a>
+<h3 class="h4">import</h3>
+<p>The <tt>import</tt> tag allows you to include another template within the
+current template. The content of the imported template is compiled and will be
+executed in place of the <tt>import</tt> tag:</p>
+<pre>&lt;jx:import uri="URI" [context="Expression"]/&gt;
+</pre>
+<p>The Cocoon source resolver is used to resolve <tt>uri</tt>. If
+<tt>context</tt> is present, then its value is used as the context for
+evaluating the imported template, otherwise the current context is used.</p>
+<a name="N1012F"></a><a name="set"></a>
+<h3 class="h4">set</h3>
+<p>The <tt>set</tt> tag creates a local alias of an object. The <tt>var</tt>
+attribute specifies the name of a variable to assign the object to. The
+<tt>value</tt> attribute specifies the object (defaults to <tt>body</tt> if not
+present):</p>
+<pre>&lt;jx:set var="Name" [value="Value"]&gt;
+   [body]
+&lt;/jx:set&gt;
+</pre>
+<p>If used within a <tt>macro</tt> definition (see below) variables created by
+<tt>set</tt> are only visible within the body of the <tt>macro</tt>.</p>
+<p>Jexl Example:</p>
+<pre>&lt;jx:set var="greeting" value="Hello ${user}"/&gt;
+The value of greeting is ${greeting}
+</pre>
+<p>JXPath Example:</p>
+<pre>&lt;jx:set var="greeting" value="Hello #{user}"/&gt;
+The value of greeting is #{$greeting}
+</pre>
+<a name="N10156"></a><a name="if"></a>
+<h3 class="h4">if</h3>
+<p>The <tt>if</tt> tag allows the conditional execution of its body according to
+value of its <tt>test</tt> attribute:</p>
+<pre>&lt;jx:if test="Expression"&gt;
+  body
+&lt;/jx:if&gt;
+</pre>
+<p>Jexl Example:</p>
+<pre>&lt;jx:if test="${cart.numberOfItems == 0}"&gt;
+  Your cart is empty
+&lt;/jx:if&gt;
+</pre>
+<p>JXPath Example:</p>
+<pre>&lt;jx:if test="#{cart/numberOfItems = 0}"&gt;
+  Your cart is empty
+&lt;/jx:if&gt;
+</pre>
+<a name="N1016C"></a><a name="choose"></a>
+<h3 class="h4">choose</h3>
+<p>The <tt>choose</tt> tag performs conditional block execution by its embedded
+<tt>when</tt> sub tags. It renders the body of the first <tt>when</tt> tag whose
+<tt>test</tt> condition evaluates to true. If none of the <tt>test</tt>
+conditions of its nested <tt>when</tt> tags evaluate to <tt>true</tt>, then the
+body of its <tt>otherwise</tt> tag is evaluated, if present:</p>
+<pre>&lt;jx:choose&gt;
+  &lt;jx:when test="Expression"&gt;
+    body
+  &lt;/jx:when&gt;+
+  &lt;jx:otherwise&gt;
+    body
+  &lt;/jx:otherwise&gt;?
+&lt;/jx:choose&gt;
+</pre>
+<p>Jexl Example:</p>
+<pre>&lt;jx:choose&gt;
+  &lt;jx:when test="${!user.loggedIn}"&gt;
+    &lt;jx:set var="label" value="Log in"&gt;
+  &lt;/jx:when&gt;
+  &lt;jx:otherwise&gt;
+    &lt;jx:set var="label" value="Log out"&gt;
+  &lt;/jx:otherwise&gt;
+&lt;/jx:choose&gt;
+</pre>
+<p>JXPath Example:</p>
+<pre>&lt;jx:choose&gt;
+  &lt;jx:when test="#{not(user/loggedIn)}"&gt;
+    &lt;jx:set var="label" value="Log in"&gt;
+  &lt;/jx:when&gt;
+  &lt;jx:otherwise&gt;
+    &lt;jx:set var="label" value="Log out"&gt;
+  &lt;/jx:otherwise&gt;
+&lt;/jx:choose&gt;
+</pre>
+<a name="N10194"></a><a name="out"></a>
+<h3 class="h4">out</h3>
+<p>The <tt>out</tt> tag evaluates an expression and outputs the result of the
+evaluation:</p>
+<pre>&lt;jx:out value="Expression"/&gt;
+</pre>
+<p>Jexl Example:</p>
+<pre>&lt;jx:out value="${cart.numberOfItems}"&gt;
+</pre>
+<p>JXPath Example:</p>
+<pre>&lt;jx:out value="#{cart/numberOfItems}"&gt;
+</pre>
+<a name="N101A7"></a><a name="forEach"></a>
+<h3 class="h4">forEach</h3>
+<p>The <tt>forEach</tt> tag allows you to iterate over a collection of objects:
+</p>
+<pre>&lt;jx:forEach [var="Name"] [varStatus="Name"] [items="Expression"] 
+               [begin="NumExpr"] [end="NumExpr"] [step="NumExpr"]&gt;
+  body
+&lt;/jx:forEach&gt;
+</pre>
+<p>The <tt>items</tt> attribute specifies the list of items to iterate over. The
+<tt>var</tt> attribute specifies the name of a variable to hold the current
+item. The <tt>begin</tt> attribute specifies the element to start with
+(<tt>0</tt> = first item, <tt>1</tt> = second item, ...). If unspecified it
+defaults to <tt>0</tt>. The <tt>end</tt> attribute specifies the item to end
+with (<tt>0</tt> = first item, <tt>1</tt> = second item, ...). If unspecified it
+defaults to the last item in the list. Every <tt>step</tt> items are processed
+(defaults to <tt>1</tt> if <tt>step</tt> is absent). Either <tt>items</tt> or
+both <tt>begin</tt> and <tt>end</tt> must be present.</p>
+<p>An alternate form of <tt>forEach</tt> is supported for convenience when using
+XPath (since you can specify the selection criteria for the collection using
+XPath itself):</p>
+<pre>&lt;jx:forEach select="XPathExpression"&gt;
+  body
+&lt;/jx:forEach&gt;
+</pre>
+<p>When using XPath expressions within <tt>forEach</tt> the current element is
+the context node and can be referenced with: <tt>#{.}</tt>
+</p>
+<p>Jexl Example:</p>
+<pre>&lt;jx:forEach var="item" items="${cart.cartItems}" 
+               begin="${start}" end="${count-start}" step="1"&gt;
+   &lt;td&gt;${item.productId}&lt;/td&gt;
+&lt;/jx:forEach&gt;
+</pre>
+<p>JXPath Example:</p>
+<pre>&lt;jx:forEach select="#{cart/cartItems[position() &amp;lt;= $count]}}&gt;
+   &lt;td&gt;#{./productId}&lt;/td&gt;
+&lt;/jx:forEach&gt;
+</pre>
+<p>If the <tt>varStatus</tt> attribute is present a variable will be created to
+hold information about the current loop status. The variable named by the
+<tt>varStatus</tt> attribute will hold a reference to an object with the
+following properties:</p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+
+<tbody>
+
+<tr>
+
+<th>
+
+<p>Property:</p>
+
+</th>
+<th>
+
+<p>Description:</p>
+
+</th>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>current</p>
+
+</td>
+<td>
+
+<p>The item from the collection for the current round of iteration</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>index</p>
+
+</td>
+<td>
+
+<p>The zero-based index for the current round of iteration</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>count</p>
+
+</td>
+<td>
+
+<p>The one-based count for the current round of iteration</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>first</p>
+
+</td>
+<td>
+
+<p>True if this is the first round of iteration</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>last</p>
+
+</td>
+<td>
+
+<p>True if this is the last round of iteration</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>begin</p>
+
+</td>
+<td>
+
+<p>The value of the <tt>begin</tt> attribute</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>end</p>
+
+</td>
+<td>
+
+<p>The value of the <tt>end</tt> attribute</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>step</p>
+
+</td>
+<td>
+
+<p>The value of the <tt>step</tt> attribute</p>
+
+</td>
+
+</tr>
+
+</tbody>
+
+</table>
+<p>Jexl Example:</p>
+<pre>&lt;jx:forEach items="${items}" varStatus="status"&gt;
+    index=${status.index},
+    count=${status.count},
+    current=${status.current},
+    first=${status.first},
+    last=${status.last},
+    begin=${status.begin},
+    end=${status.end}
+&lt;/jx:forEach&gt;
+</pre>
+<p>JXPath Example:</p>
+<pre>&lt;jx:forEach select="#{items}" varStatus="status"&gt;
+    index=#{$status/index},
+    count=#{$status/count},
+    current=#{$status/current},
+    first=#{$status/first},
+    last=#{$status/last},
+    begin=#{$status/begin},
+    end=#{$status/end}
+&lt;/jx:forEach&gt;
+</pre>
+<a name="N1029C"></a><a name="formatNumber"></a>
+<h3 class="h4">formatNumber</h3>
+<p>The <tt>formatNumber</tt> tag is used to display numeric data, including
+currencies and percentages, in a locale-specific manner. It determines from the
+locale, for example, whether to use a period or a comma for delimiting the
+integer and decimal portions of a number. Here is its syntax:</p>
+<pre>&lt;jx:formatNumber value="Expression"
+    [type="Type"] [pattern="Expression"]
+    [currencyCode="Expression"] [currencySymbol="Expression"]
+    [maxIntegerDigits="Expression"] [minIntegerDigits="Expression"]
+    [maxFractionDigits="Expression"] [minFractionDigits="Expression"]
+    [groupingUsed="Expression"]
+    [var="Name"] [locale="Expression"]&gt;
+</pre>
+<p>Only the <tt>value</tt> attribute is required. It is used to specify the
+numeric value that is to be formatted.</p>
+<p>The value of the <tt>type</tt> attribute should be either "number",
+"currency", or "percent", and indicates what type of numeric value is being
+formatted. The default value for this attribute is "number". The
+<tt>pattern</tt> attribute takes precedence over the <tt>type</tt> attribute and
+allows more precise formatting of numeric values following the pattern
+conventions of the <tt>java.text.DecimalFormat</tt> class.</p>
+<p>When the <tt>type</tt> attribute has a value of "currency", the
+<tt>currencyCode</tt> attribute can be used to explicitly specify the currency
+for the numerical value being displayed. As with language and country codes,
+currency codes are governed by an ISO standard. This code is used to determine
+the currency symbol to display as part of the formatted value.</p>
+<p>Alternatively, you can use the <tt>currencySymbol</tt> attribute to
+explicitly specify the currency symbol. Note that as of JDK 1.4 and the
+associated introduction of the <tt>java.util.Currency</tt> class, the
+<tt>currencyCode</tt> attribute of <tt>formatNumber</tt> takes precedence over
+the <tt>currencySymbol</tt> attribute. For earlier versions of the JDK, however,
+the <tt>currencySymbol</tt> attribute takes precedence.</p>
+<p>The <tt>maxIntegerDigits</tt>, <tt>minIntegerDigits</tt>,
+<tt>maxFractionDigits</tt>, and <tt>minFractionDigits</tt> attributes are used
+to control the number of significant digits displayed before and after the
+decimal point. These attributes require integer values.</p>
+<p>The <tt>groupingUsed</tt> attribute takes a <tt>Boolean</tt> value and
+controls whether digits before the decimal point are grouped. For example, in
+English-language locales, large numbers have their digits grouped by threes,
+with each set of three delimited by a comma. Other locales delimit such
+groupings with a period or a space. The default value for this attribute is
+<tt>true</tt>.</p>
+<a name="N102EF"></a><a name="formatDate"></a>
+<h3 class="h4">formatDate</h3>
+<p>The <tt>formatDate</tt> tag provides facilities to format Date values:</p>
+<pre>&lt;jx:formatDate value="Expression" [dateStyle="Style"] 
+  [timeStyle="Style"] [pattern="Expression"] [type="Type"] [var="Name"] 
+  [locale="Expression"]&gt;
+</pre>
+<p>Only the value attribute is required. Its value should be an instance of the
+<tt>java.util.Date</tt> class, specifying the date and/or time data to be
+formatted and displayed.</p>
+<p>The optional <tt>timeZone</tt> attribute indicates the time zone in which the
+date and/or time are to be displayed. If not present, then the JVM's default
+time zone is used (that is, the time zone setting specified for the local
+operating system).</p>
+<p>The <tt>type</tt> attribute indicates which fields of the specified
+<tt>Date</tt> instance are to be displayed, and should be either "time", "date",
+or "both". The default value for this attribute is "date", so if no
+<tt>type</tt> attribute is present, the <tt>formatDate</tt> tag -- true to its
+name -- will only display the date information associated with the <tt>Date</tt>
+instance, specified using the tag's value attribute.</p>
+<p>The <tt>dateStyle</tt> and <tt>timeStyle</tt> attributes indicate how the
+date and time information should be formatted, respectively. Valid styles are
+"default", "short", "medium", "long", and "full". The default value is,
+naturally, "default", indicating that a locale-specific style should be used.
+The semantics for the other four style values are as defined by the
+java.text.DateFormat class.</p>
+<p>Rather than relying on the built-in styles, you can use the pattern attribute
+to specify a custom style. When present, the value of the pattern attribute
+should be a pattern string following the conventions of the
+java.text.SimpleDateFormat class. These patterns are based on replacing
+designated characters within the pattern with corresponding date and time
+fields. For example, the pattern MM/dd/yyyy indicates that two-digit month and
+date values and a four-digit year value should be displayed, separated by
+forward slashes.</p>
+<p>If the <tt>var</tt> attribute is specified, then a String value containing
+the formatted date is assigned to the named variable. Otherwise, the
+<tt>formatDate</tt> tag will write out the formatting results.</p>
+<a name="N10327"></a><a name="macro"></a>
+<h3 class="h4">macro</h3>
+<p>The <tt>macro</tt> tag allows you define a new custom tag.</p>
+<pre>&lt;jx:macro name="Name" [targetNamespace="Namespace"]&gt;
+  &lt;jx:parameter name="Name" [optional="Boolean"] [default="Value"]/&gt;*
+  body
+&lt;/jx:macro&gt;
+</pre>
+<p>For example:</p>
+<pre>&lt;jx:macro name="d"&gt;
+  &lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
+&lt;/jx:macro&gt;
+</pre>
+<p>The tag being defined in this example is <tt>&lt;d&gt;</tt> and it can be
+used like any other tag:</p>
+<pre>&lt;d/&gt;
+</pre>
+<p>However, when this tag is used it will be replaced with a row containing a
+single empty data cell.</p>
+<p>When such a tag is used, the attributes and content of the tag become
+available as variables in the body of the <tt>macro</tt>'s definition, for
+example:</p>
+<pre>&lt;jx:macro name="tablerows"&gt;
+  &lt;jx:parameter name="list"/&gt;
+  &lt;jx:parameter name="color"/&gt;
+  &lt;jx:forEach var="item" items="${list}"&gt;
+    &lt;tr&gt;&lt;td bgcolor="${color}"&gt;${item}&lt;/td&gt;&lt;/tr&gt;
+  &lt;/jx:forEach&gt;
+&lt;/jx:macro&gt;
+</pre>
+<p>The <tt>parameter</tt> tags in the macro definition define formal parameters,
+which are replaced with the actual attribute values of the tag when it is used.
+</p>
+<p>Assuming you had this code in your flowscript:</p>
+<pre>var greatlakes = ["Superior", "Michigan", "Huron", "Erie", "Ontario"];
+   sendPage(uri, {greatlakes: greatlakes});</pre>
+<p>and a template like this:</p>
+<pre>&lt;table&gt;
+   &lt;tablerows list="${greatlakes}" color="blue"/&gt;
+&lt;/table&gt;
+</pre>
+<p>When the <tt>tablerows</tt> tag is used in this situation the following
+output would be generated:</p>
+<pre>&lt;table&gt;
+  &lt;tr&gt;&lt;td bgcolor="blue"&gt;Superior&lt;/td&gt;&lt;/tr&gt;
+  &lt;tr&gt;&lt;td bgcolor="blue"&gt;Michigan&lt;/td&gt;&lt;/tr&gt;
+  &lt;tr&gt;&lt;td bgcolor="blue"&gt;Huron&lt;/td&gt;&lt;/tr&gt;
+  &lt;tr&gt;&lt;td bgcolor="blue"&gt;Erie&lt;/td&gt;&lt;/tr&gt;
+  &lt;tr&gt;&lt;td bgcolor="blue"&gt;Ontario&lt;/td&gt;&lt;/tr&gt;
+&lt;/table&gt;
+</pre>
+<a name="N1035A"></a><a name="evalBody"></a>
+<h3 class="h4">evalBody</h3>
+<p>Within the body of a macro the <tt>evalBody</tt> tag treats the content of
+the macro tag invocation as a <em>JX</em>Template and executes it. For example,
+the below macro uses this facility to implement the
+<a class="external" href="http://java.sun.com/products/jsp/jstl/">JSTL</a> <tt>forTokens</tt>
+tag:</p>
+<pre>&lt;jx:macro name="forTokens"&gt;
+  &lt;jx:parameter name="var"/&gt;
+  &lt;jx:parameter name="items"/&gt;
+  &lt;jx:parameter name="delims"/&gt;
+  &lt;jx:forEach var="${var}" 
+         items="${java.util.StringTokenizer(items, delims)}"&gt;
+    &lt;jx:evalBody/&gt;
+  &lt;/jx:forEach&gt;
+&lt;/jx:macro&gt;
+ </pre>
+<p>The tag produced by this macro can be used like this:</p>
+<pre>&lt;forTokens var="letter" items="a,b,c,d,e,f,g" delims=","&gt;
+  letter = ${letter} &lt;br/&gt;
+&lt;/forTokens&gt;
+ </pre>
+<p>which would create the following output:</p>
+<pre>  letter = a  &lt;br/&gt;  
+  letter = b  &lt;br/&gt;  
+  letter = c  &lt;br/&gt;  
+  letter = d  &lt;br/&gt;  
+  letter = e  &lt;br/&gt;  
+  letter = f  &lt;br/&gt;  
+  letter = g  &lt;br/&gt;  
+ </pre>
+<a name="N10377"></a><a name="eval"></a>
+<h3 class="h4">eval</h3>
+<p>The <tt>eval</tt> tag permits dynamic evaluation of custom tags.</p>
+<pre>&lt;jx:eval select="Expression"/&gt;
+</pre>
+<p>Within the body of a macro, information about the current invocation is
+available via a special variable <tt>macro</tt>. This variable contains the
+following properties:</p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+
+<tbody>
+
+<tr>
+
+<th>
+
+<p>Property:</p>
+
+</th>
+<th>
+
+<p>Description:</p>
+
+</th>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>arguments</p>
+
+</td>
+<td>
+
+<p>A map containing the all of the attributes from the tag invocation</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>body</p>
+
+</td>
+<td>
+
+<p>A reference to the content of the tag invocation</p>
+
+</td>
+
+</tr>
+
+</tbody>
+
+</table>
+<p>You can store the value of <tt>body</tt> in another variable and invoke it
+later using <tt>jx:eval</tt>. The <tt>select</tt> attribute of <tt>jx:eval</tt>
+specifies an expression that must evaluate to a macro invocation. For example:
+</p>
+<pre>
+&lt;jx:set var="tags" value="${java.util.HashMap()}"/&gt;
+
+&lt;jx:macro name="dynamic-tag"&gt;
+  &lt;jx:parameter name="id"/&gt;
+  &lt;jx:set var="ignored" value="${tags.put(id, macro.body)}"/&gt;
+&lt;/jx:macro&gt;
+
+&lt;dynamic-tag id="example"&gt;
+  &lt;em&gt;This tag was invoked dynamically&lt;/em&gt;
+&lt;/dynamic-tag&gt;
+
+&lt;p&gt;I'm about to invoke a dynamic tag:&lt;/p&gt;
+&lt;jx:eval select="${tags.example}"/&gt; 
+
+ 
+
+</pre>
+<p>The above template produces the following output:</p>
+<pre>&lt;p&gt;I'm about to invoke a dynamic tag:&lt;/p&gt;
+
+  
+&lt;em&gt;This tag was invoked dynamically&lt;/em&gt;
+ 
+</pre>
+<div class="daisy-edit-link">
+<p>
+<em>Errors and Improvements?</em>
+                 If you see any errors or potential improvements in this document
+                 please help us:
+                <a class="external" href="http://cocoon.zones.apache.org/daisy/legacydocs/511">
+                  View, Edit or comment on
+                </a> the latest development version (registration required).
+              </p>
+</div>
+</div>
+</div>
+<!--+
+    |end content
+    +-->
+<div class="clearboth">&nbsp;</div>
+</div>
+<div id="footer">
+<!--+
+    |start bottomstrip
+    +-->
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+//  --></script>
+</div>
+<div class="copyright">
+        Copyright &copy;
+         1999-2005 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+</div>
+<div id="feedback">
+    Send feedback about the website to:
+  <a id="feedbackto" href="mailto:dev@cocoon.apache.org?subject=[WEBSITE]%C2%A02.1/userdocs/flow/jxtemplate.html">dev@cocoon.apache.org</a>
+</div>
+<!--+
+    |end bottomstrip
+    +-->
+</div>
+</body>
+</html>

Propchange: cocoon/site/site/2.1/userdocs/flow/jxtemplate.html
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message