cocoon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cross...@apache.org
Subject svn commit: r345438 [180/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/logicsheets/esql.html
URL: http://svn.apache.org/viewcvs/cocoon/site/site/2.1/userdocs/logicsheets/esql.html?rev=345438&view=auto
==============================================================================
--- cocoon/site/site/2.1/userdocs/logicsheets/esql.html (added)
+++ cocoon/site/site/2.1/userdocs/logicsheets/esql.html Thu Nov 17 20:00:02 2005
@@ -0,0 +1,2185 @@
+<!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>ESQL Taglib</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_1.2.5.4', '../../../skin/')" id="menu_1.2.5.4Title" class="menutitle">Flow</div>
+<div id="menu_1.2.5.4" class="menuitemgroup">
+<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="menuitem">
+<a href="../../../2.1/userdocs/flow/jxtemplate.html">JXTemplate</a>
+</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_selected_1.2.5.6', '../../../skin/')" id="menu_selected_1.2.5.6Title" class="menutitle" style="background-image: url('../../../skin/images/chapter_open.gif');">XSP</div>
+<div id="menu_selected_1.2.5.6" class="selectedmenuitemgroup" style="display: block;">
+<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_selected_1.2.5.6.3', '../../../skin/')" id="menu_selected_1.2.5.6.3Title" class="menutitle" style="background-image: url('../../../skin/images/chapter_open.gif');">Logicsheets</div>
+<div id="menu_selected_1.2.5.6.3" class="selectedmenuitemgroup" style="display: block;">
+<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="menupage">
+<div class="menupagetitle">ESQL</div>
+</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>ESQL Taglib</h1>
+<a name="N10007"></a><a name="Description"></a>
+<h2 class="h3">Description</h2>
+<div class="section">
+<p>The ESQL logicsheet is an XSP logicsheet that performs sql queries and
+serializes their results as XML. This allows you to work with data from a wide
+variety of different sources when using Apache Cocoon.</p>
+<p>It has a number of important advantages over the old (deprecated) SQL
+logicsheet and SQL processor. For example, it allows you to mix esql with other
+logicsheets. It also supports prepared statements (which gives you automatic
+parameter escaping), multiple encodings in a single query and even multiple
+resultsets on one statement (if supported from database)!</p>
+<p>The name was chosen merely to emphasise the fact that this is an extended
+version of the old sql logicsheet - esql still uses standard SQL syntax. In
+fact, it is just a conversion wrapper around your JDBC database driver, so it
+supports no more and no less SQL syntax than your JDBC driver supports.</p>
+</div>
+<a name="N10011"></a><a name="Installation"></a>
+<h2 class="h3">Installation</h2>
+<div class="section">
+<p>Check your <tt>cocoon.xconf</tt> for this line and add it if it's not already
+there:</p>
+<pre>
+&lt;builtin-logicsheet&gt;
+  &lt;parameter name="prefix" value="esql"/&gt;
+  &lt;parameter name="uri" value="http://apache.org/cocoon/SQL/v2"/&gt;
+  &lt;parameter name="href"
+  value="resource://org/apache/cocoon/components/language/markup/xsp/java/esql.xsl"/&gt;
+&lt;/builtin-logicsheet&gt;
+</pre>
+</div>
+<a name="N1001C"></a><a name="Configuration"></a>
+<h2 class="h3">Configuration</h2>
+<div class="section">
+<p>Map the</p>
+<pre>http://apache.org/cocoon/SQL/v2</pre>
+<p>namespace to the esql prefix. Elements in the esql taglib namespace will be
+interpreted as input to the esql taglib and will be stripped from the output.
+</p>
+<p>This is typically done like this:</p>
+<pre>
+&lt;xsp:page
+      language="java"
+      xmlns:xsp="http://apache.org/xsp"
+      xmlns:esql="http://apache.org/cocoon/SQL/v2"
+&gt;
+. . .
+&lt;/xsp:page&gt;
+</pre>
+<a name="N1002A"></a><a name="Connection"></a>
+<h3 class="h4">Connection</h3>
+<p>Esql can use connection pools configured in <tt>cocoon.xconf</tt> or
+individually set up connections.</p>
+<p>
+<tt>esql:pool</tt> gives the name of the connection pool to use.</p>
+<p>Individually configured connections use the <tt>esql:driver, esql:dburl,
+esql:username, esql:password</tt> tags. Their meaning should be obvious.</p>
+<a name="N1003C"></a><a name="Connection+Options"></a>
+<h4>Connection Options</h4>
+<p>Per default, esql will try to switch a connection to <em>autocommit</em>
+mode. This is because it prevents hanging transactions that hold locks and
+disturb further database accesses. Esql can be forced to not use autocommit, by
+giving the <tt>&lt;esql:autocommit&gt;false&lt;/esql:autocommit&gt;</tt> nested
+element to <tt>esql:connection</tt>.</p>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">Even if a connection is configured with autocommit off in
+<tt>cocoon.xconf</tt>, esql will switch autocommit on if not instructed to do
+otherwise.</div>
+</div>
+<p>Other options like limiting the size of the resultset are discussed below.
+</p>
+</div>
+<a name="N10058"></a><a name="Usage+and+Examples"></a>
+<h2 class="h3">Usage and Examples</h2>
+<div class="section">
+<p>At the moment documentation on esql is quite thin on the ground - however, it
+should be enough to get you started. In the <tt>docs/samples/xsp</tt> directory
+you will find <tt>esql.xsp</tt>, which is an example of two esql queries,
+demonstrating "nested" queries and dynamic prepared statements. However, much
+more comprehensive is the <strong>schema</strong> in <tt>esql.xsd</tt> which is
+a formal specification, written in the W3C standard language XML Schema, of
+every single esql element and attribute. It is fairly human-readable and
+includes comments for the purpose of each tag.</p>
+<p>A fairly common example is to list a query result in a table. Notice that
+esql:results and esql:no-results are mutual exclusive. So only one of them will
+be in your XML tree. This example takes a connection from a datasource defined
+in <tt>cocoon.xconf</tt>:</p>
+<pre>
+&lt;esql:connection&gt;
+  &lt;esql:pool&gt;connectionName&lt;/esql:pool&gt;
+  &lt;esql:execute-query&gt;
+    &lt;esql:query&gt;SELECT mycolumn1,mycolumn2 FROM table&lt;/esql:query&gt;
+    &lt;esql:results&gt;
+      &lt;table&gt;
+        &lt;esql:row-results&gt;
+          &lt;tr&gt;
+             &lt;td&gt;&lt;esql:get-string column="mycolumn1"/&gt;&lt;/td&gt;
+             &lt;td&gt;&lt;esql:get-string column="mycolumn2"/&gt;&lt;/td&gt;
+          &lt;/tr&gt;
+        &lt;/esql:row-results&gt;
+      &lt;/table&gt;
+    &lt;/esql:results&gt;
+    &lt;esql:no-results&gt;
+       &lt;p&gt;Sorry, no results!&lt;/p&gt;
+    &lt;/esql:no-results&gt;
+  &lt;/esql:execute-query&gt;
+&lt;/esql:connection&gt;
+</pre>
+<a name="N10071"></a><a name="Dynamic+Queries"></a>
+<h3 class="h4">Dynamic Queries</h3>
+<p>When a query contains dynamic parts, e.g. a value that is to be matched, esql
+offers two different possibilities to achieve that. First, as the query is
+really a string, it can be constructed like any other string by concattenation.
+</p>
+<pre>
+    &lt;xsp:logic&gt;
+       String orderBy = null;
+       switch(type) {
+       case 1: orderBy = "order by name"; break;
+       case 2: orderBy = "order by salary"; break;
+       default: orderBy = "";
+       }
+    &lt;/xsp:logic&gt;
+
+    &lt;!-- ... --&gt;
+
+    &lt;esql:query&gt;&lt;xsp:expr&gt;"SELECT name, salary FROM employee "+orderBy&lt;/xsp:expr&gt;&lt;/esql:query&gt;
+
+</pre>
+<p>Note, however, that here any string will be part of the actual statement. In
+this example it does no harm as the value for the <tt>orderBy</tt> variable is
+completely under the control of your code. Any malicious attacker could not
+inject his or her own code. Thus this technique should not be used when values
+returned from the client have to be used.</p>
+<p>The second variant is to use a PreparedStatement for dynamic parameters.
+Since the driver is supposed to keep parameters distinct from the statement, no
+code can be injected this way. In addition, your DBMS puts more effort into
+optimizing the statement. PreparedStatements are created whenever a
+<tt>&lt;esql:parameter/&gt;</tt> tag appears in a query.</p>
+<pre>
+    &lt;esql:query&gt;SELECT name, salary FROM employee 
+                WHERE name=&lt;esql:parameter&gt;&lt;xsp:expr&gt;name&lt;/xsp:expr&gt;&lt;/esql:parameter&gt;&lt;/esql:query&gt;
+
+   </pre>
+<a name="N10085"></a><a name="Refering+to+Results"></a>
+<h3 class="h4">Refering to Results</h3>
+<p>A select query usually returns one ResultSet. This case is handled by the
+<tt>esql:results</tt> tag and its content. However, many special cases exist,
+e.g. an error occurs or an update query is used. Esql provides different tags
+for these cases.</p>
+<p>If an empty result set is returned, the <tt>esql:no-results</tt> block is
+used.</p>
+<a name="N10093"></a><a name="Errors"></a>
+<h4>Errors</h4>
+<p>In case of an error, usually signalled by an Exception during setup or
+execution of a query, the <tt>esql:error-results</tt> block is evaluated. If no
+such tag exists, the exception is rethrown and processing is stopped. Withing
+the tag, <tt>esql:get-message</tt>, <tt>esql:get-stacktrace</tt>, and
+<tt>esql:to-string</tt> allow access to the error message.</p>
+<a name="N100A5"></a><a name="Limiting+the+number+of+rows+returned"></a>
+<h4>Limiting the number of rows returned</h4>
+<p>Esql allows to display only a part of the result set using the
+<tt>esql:use-limit-clause</tt>. If your DBMS is supported, the DBMS generates
+only the indicated rows, otherwise a number of rows are skipped and retrieval is
+stopped after a given number of rows. It works like a fixed-size window to the
+result set, paging through it.</p>
+<p>These parameters are set for a connection.</p>
+<p>If the <tt>esql:use-limit-clause</tt> is empty or set to "auto", esql tries
+to determine automatically which method to use, depending on the connection URL.
+</p>
+<p>
+<tt>esql:skip-rows</tt> and <tt>esql:max-rows</tt> tags specify how many rows
+should be skipped at the beginning and how many rows should be retrieved at
+maximum.</p>
+<p>In this context the <tt>esql:previous-results</tt> and
+<tt>esql:more-results</tt> blocks hold code and content that is only used if
+this sliding window has previous or following windows.</p>
+<pre>
+&lt;esql:connection&gt;
+  &lt;esql:pool&gt;connectionName&lt;/esql:pool&gt;
+  &lt;esql:execute-query&gt;
+    &lt;esql:query&gt;SELECT mycolumn1,mycolumn2 FROM table&lt;/esql:query&gt;
+    &lt;esql:use-limit-clause&gt;auto&lt;/esql:use-limit-clause&gt;
+    &lt;esql:skip-rows&gt;&lt;xsp:expr&gt;skiprows&lt;/xsp:expr&gt;&lt;/esql:skip-rows&gt;
+    &lt;esql:max-rows&gt;10&lt;/esql:max-rows&gt;
+    &lt;esql:results&gt;
+      &lt;table&gt;
+        &lt;esql:row-results&gt;
+        &lt;esql:previous-results&gt;previous rows available&lt;/esql:previous-results&gt;
+        &lt;esql:more-results&gt;more rows available&lt;/esql:more-results&gt;
+          &lt;tr&gt;
+             &lt;td&gt;&lt;esql:get-string column="mycolumn1"/&gt;&lt;/td&gt;
+             &lt;td&gt;&lt;esql:get-string column="mycolumn2"/&gt;&lt;/td&gt;
+          &lt;/tr&gt;
+        &lt;/esql:row-results&gt;
+      &lt;/table&gt;
+    &lt;/esql:results&gt;
+    &lt;esql:error-results&gt;An error occurred&lt;/esql:error-results&gt;
+    &lt;esql:no-results&gt;
+       &lt;p&gt;Sorry, no results!&lt;/p&gt;
+    &lt;/esql:no-results&gt;
+  &lt;/esql:execute-query&gt;
+&lt;/esql:connection&gt;
+</pre>
+<a name="N100C6"></a><a name="Updates"></a>
+<h4>Updates</h4>
+<p>In JDBC, updates, inserts, and deletes are "update queries". For those, no
+results are available but an update count is returned, indicating, how many rows
+were affected.</p>
+<p>Code or content that depends on this has to be placed inside the
+<tt>esql:update-results</tt> tag. It is used whenever at least one row was
+affected. The update count can be accessed through the
+<tt>esql:get-update-count</tt> tag.</p>
+<p>If no rows where affected, the <tt>esql:no-results</tt> block is used.</p>
+<pre>
+&lt;esql:connection&gt;
+  &lt;esql:pool&gt;connectionName&lt;/esql:pool&gt;
+  &lt;esql:execute-query&gt;
+    &lt;esql:query&gt;update table set price=price*1.17&lt;/esql:query&gt;
+    &lt;esql:error-results&gt;An error occurred&lt;/esql:error-results&gt;
+    &lt;esql:update-results&gt;
+       &lt;esql:get-update-count/&gt; prices adjusted.
+    &lt;/esql:update-results&gt;
+    &lt;esql:no-results&gt;
+       &lt;p&gt;Sorry, no prices adjusted!&lt;/p&gt;
+    &lt;/esql:no-results&gt;
+  &lt;/esql:execute-query&gt;
+&lt;/esql:connection&gt;
+</pre>
+<a name="N100DB"></a><a name="Groups"></a>
+<h3 class="h4">Groups</h3>
+<p>For more complex lists, often nested queries are needed. Esql allows
+arbitrary nesting of queries. However, you can do table joins and then insert a
+header whenever a "watched" column value changes using the
+<tt>&lt;esql:group/&gt;</tt> and <tt>&lt;esql:member/&gt;</tt> tags. It follows
+the nesting ideology of <tt>&lt;xsp:logic&gt; ...
+&lt;xsp:content&gt;&lt;/&gt;&lt;/&gt;</tt>You can nest
+<tt>&lt;esql:group&gt;</tt> and <tt>&lt;esql:member&gt;</tt> indefinately.
+<tt>group-on</tt> can be an attribute of <tt>group</tt> or a text node. The
+value of the text node has precedence over the attribute. The value can be the
+column name or the column number.</p>
+<pre>
+&lt;esql:execute-query&gt;
+  &lt;esql:query&gt;
+    select committeeName, title, firstName, middleName, lastName, suffix, status 
+    from committeeMember left join directoryInformation using(userid)
+         left join committee on committee.id=committeeMember.committeeid 
+    order by committeeName asc
+  &lt;/esql:query&gt;
+  &lt;esql:results&gt;
+    &lt;esql:row-results&gt;
+      &lt;esql:group group-on="committeeName"&gt;
+        &lt;h2&gt;&lt;esql:get-string column="committeeName"/&gt;&lt;/h2&gt;
+        &lt;ul&gt;
+          &lt;esql:member&gt;
+            &lt;li&gt;
+              &lt;esql:get-string column="title"/&gt;
+              &lt;esql:get-string column="firstName"/&gt;
+              &lt;esql:get-string column="middleName"/&gt;
+              &lt;esql:get-string column="lastName"/&gt;
+              &lt;esql:get-string column="suffix"/&gt;
+            &lt;/li&gt;
+          &lt;/esql:member&gt;
+        &lt;/ul&gt;
+      &lt;/esql:group&gt;
+    &lt;/esql:row-results&gt;
+  &lt;/esql:results&gt;
+&lt;/esql:execute-query&gt;
+    </pre>
+<p>One important limitation of the grouping feature is, that <em>no access to a
+column may appear after closing a group.</em> The value will belong to the
+following row or cause an error if no next row exists. If this is needed,
+consider swapping columns using XSLT or embedded JAVA. Hence the following
+example is illegal:</p>
+<pre>
+&lt;esql:execute-query&gt;
+  &lt;esql:query&gt;
+    select committeeName, committeeTitle, title, firstName, middleName, 
+           lastName, suffix, status 
+    from committeeMember left join directoryInformation using(userid)
+         left join committee on committee.id=committeeMember.committeeid 
+    order by committeeName asc
+  &lt;/esql:query&gt;
+  &lt;esql:results&gt;
+    &lt;esql:row-results&gt;
+      &lt;esql:group group-on="committeeName"&gt;
+        &lt;h2&gt;&lt;esql:get-string column="committeeName"/&gt;&lt;/h2&gt;
+        &lt;ul&gt;
+          &lt;esql:member&gt;
+            &lt;li&gt;
+              &lt;esql:get-string column="title"/&gt;
+              &lt;esql:get-string column="firstName"/&gt;
+              &lt;esql:get-string column="middleName"/&gt;
+              &lt;esql:get-string column="lastName"/&gt;
+              &lt;esql:get-string column="suffix"/&gt;
+            &lt;/li&gt;
+          &lt;/esql:member&gt;
+        &lt;/ul&gt;
+      &lt;/esql:group&gt;
+      &lt;esql:get-string column="committeeTitle"/&gt;&lt;!-- illegal !! --&gt;
+    &lt;/esql:row-results&gt;
+  &lt;/esql:results&gt;
+&lt;/esql:execute-query&gt;
+    </pre>
+<a name="N100FF"></a><a name="Stored+Procedure+Support"></a>
+<h3 class="h4">Stored Procedure Support</h3>
+<p>In order to use stored procedures replace <tt>&lt;esql:query/&gt;</tt> with
+<tt>&lt;esql:call/&gt;</tt>, use either DBMS specific syntax or JDBC escape
+syntax <tt>{? = foo(?)}</tt>. If your jdbc driver requires to use the
+<tt>executeQuery()</tt> method instead of the <tt>execute()</tt> method (like
+e.g. INFORMIX does), set <tt>needs-query="true"</tt> attribute.</p>
+<p>If a result set is returned through the (only) return parameter of a stored
+procedure, e.g. <tt>resultset-from-object="1"</tt> as attribute to
+<tt>&lt;esql:call/&gt;</tt>to automatically use this result set. For a more
+general alternative see further below.</p>
+<p>Parameters for a stored procedure call may be of
+<tt>direction="in|out|inout"</tt> with the usual JDBC meaning. In addition a
+<tt>type</tt> needs to be supplied for "out" and "inout" parameters. This would
+be the same "XXX" as used in a <tt>get-XXX</tt> JDBC-method call. Alternatively,
+you can use a fully qualified field name, e.g. "java.sql.Types.CHAR"</p>
+<p>
+<tt>&lt;esql:call-results/&gt;</tt> (child of
+<tt>&lt;esql:execute-query/&gt;</tt>) may contain code that will always be
+executed whether the query returned a result or not. For example most stored
+procedures will not return a result set but several out parameters.</p>
+<p>All <tt>&lt;esql:get-xxx/&gt;</tt> tags accept a new attribute
+<tt>from-call="yes"</tt> to indicate that the value is retrieved from the
+CallableStatement rather than the current ResultSet. Obviously, this only works
+after a call to a stored procedure.</p>
+<p>Retrieve a ResultSet from any column and use it like the result of a nested
+query with the <tt>esql:use-results</tt> tag. It behaves exactly like nesting
+queries. Thus the <tt>ancestor</tt> attribute can be used to access e.g. the
+original query.</p>
+<p>Example:</p>
+<pre>
+&lt;esql:call&gt;{? = foo(&lt;esql:parameter direction="in"
+  type="Int"&gt;&lt;xsp:expr&gt;1&lt;/xsp:expr&gt;&lt;/esql:parameter&gt;)}
+&lt;/esql:call&gt;
+&lt;esql:call-results&gt;
+  &lt;esql:use-results&gt;
+    &lt;esql:result&gt;&lt;xsp:expr&gt;(ResultSet)&lt;esql:get-object column="1" from-call="true"/&gt;&lt;/xsp:expr&gt;&lt;/esql:result&gt;
+    &lt;esql:results&gt;
+      &lt;esql:row-results&gt;
+        &lt;esql:get-string column="1"/&gt;
+      &lt;/esql:row-results&gt;
+    &lt;/esql:results&gt;
+  &lt;/esql:use-results&gt;
+&lt;/esql:call-results&gt;
+</pre>
+<p>Example:</p>
+<pre>
+&lt;esql:query&gt;select name, list_of_aliases from table&lt;/esql:query&gt;
+&lt;esql:results&gt;
+  &lt;esql:row-results&gt;
+    &lt;p&gt;
+      &lt;esql:get-string column="name"/&gt;: 
+      &lt;esql:use-results&gt;
+        &lt;esql:result&gt;&lt;xsp:expr&gt;&lt;esql:get-array column="list_of_aliases"/&gt;.getResultSet()&lt;/xsp:expr&gt;&lt;/esql:result&gt;
+        &lt;esql:results&gt;
+          &lt;esql:row-results&gt;
+            &lt;esql:get-string column="1"/&gt;
+          &lt;/esql:row-results&gt;
+        &lt;/esql:results&gt;
+      &lt;/esql:use-results&gt;
+    &lt;/p&gt;
+  &lt;/esql:row-results&gt;
+&lt;/esql:results&gt;
+</pre>
+<a name="N10149"></a><a name="Multiple+Results"></a>
+<h3 class="h4">Multiple Results</h3>
+<p>If multiple results are returned from a stored procedure or a query, the
+<tt>esql:results</tt> block is reused. However, it is supported to have
+different blocks for each result. Since a result can either be a ResultSet or an
+UpdateCount, both are counted independently. The nth ResultSet will be handled
+by the nth <tt>esql:results</tt> block, or - if there are fewer blocks - the
+last one.</p>
+<p>The same holds true for <tt>esql:update-results</tt> and
+<tt>esql:no-results</tt> blocks as well.</p>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">Support for multiple results is not widely available with DBMSs.
+Therefore support is disabled by default. Use the
+<tt>&lt;esql:allow-multiple-results&gt;yes&lt;/esql:allow-multiple-results&gt;</tt>
+parameter to the &lt;esql:connection/&gt;.</div>
+</div>
+<p>Example: Suppose stored procedure <tt>bar</tt> returns an update count,
+another update count, a result set, an update count, and a last result set.</p>
+<pre>
+&lt;esql:call&gt;{? = bar(&lt;esql:parameter direction="in"
+type="Int"&gt;&lt;xsp:expr&gt;1&lt;/xsp:expr&gt;&lt;/esql:parameter&gt;)}
+&lt;/esql:call&gt;
+&lt;esql:results&gt;
+  &lt;!-- this is used for the first result set --&gt;
+&lt;/esql:results&gt;
+&lt;esql:results&gt;
+  &lt;!-- this is used for the second and 
+       all following result sets --&gt;
+&lt;/esql:results&gt;
+&lt;esql:update-results&gt;
+  &lt;!-- this is used for the first update count --&gt;
+&lt;/esql:update-results&gt;
+&lt;esql:no-results&gt;
+  &lt;!-- this is used for the first update count --&gt;
+&lt;/esql:no-results&gt;
+&lt;esql:update-results&gt;
+  &lt;!-- this is used for the second and 
+       all following update counts --&gt;
+&lt;/esql:update-results&gt;
+&lt;esql:no-results&gt;
+  &lt;!-- this is used for the second and 
+       all following update counts --&gt;
+&lt;/esql:no-results&gt;
+</pre>
+<p>The ultimate reference, is of course the source code, which is an XSLT
+logicsheet contained in the file
+<tt>src/org/apache/cocoon/components/language/markup/xsp/java/esql.xsl</tt>
+</p>
+<p>Of course, we would be very grateful for any improvements on this
+documentation or further examples - please send them to
+<a href="mailto:users.at.cocoon.apache.org">users.at.cocoon.apache.org</a>!</p>
+</div>
+<a name="N10179"></a><a name="Template+Descriptions"></a>
+<h2 class="h3">Template Descriptions</h2>
+<div class="section">
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+
+<tr>
+
+<th>
+
+<p>Tag</p>
+
+</th>
+<th>
+
+<p>Description</p>
+
+</th>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:row-results//esql:get-columns</p>
+
+</td>
+<td>
+
+<p>results in a set of elements whose names are the names of the columns. the
+elements each have one text child, whose value is the value of the column
+interpreted as a string. No special formatting is allowed here. If you want to
+mess around with the names of the elements or the value of the text field, use
+the type-specific get methods and write out the result fragment yourself. For
+Cocoon 2 only, this outputs structured types as well. Here sql-list or sql-set
+contains several sql-list-item or sql-set-item element that again contain the
+actual data.</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:row-results//esql:get-string</p>
+
+</td>
+<td>
+
+<p>returns the value of the given column as a string</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:row-results//esql:get-date</p>
+
+</td>
+<td>
+
+<p>returns the value of the given column as a date. if a format attribute
+exists, its value is taken to be a date format string as defined in
+java.text.SimpleDateFormat, and the result is formatted accordingly.</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:row-results//esql:get-time</p>
+
+</td>
+<td>
+
+<p>returns the value of the given column as a time. if a format attribute
+exists, its value is taken to be a date format string as defined in
+java.text.SimpleDateFormat, and the result is formatted accordingly.</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:row-results//esql:get-timestamp</p>
+
+</td>
+<td>
+
+<p>returns the value of the given column as a timestamp. if a format attribute
+exists, its value is taken to be a date format string as defined in
+java.text.SimpleDateFormat, and the result is formatted accordingly.</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:row-results//esql:get-boolean</p>
+
+</td>
+<td>
+
+<p>returns the value of the given column as true or false</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:row-results//esql:get-double</p>
+
+</td>
+<td>
+
+<p>returns the value of the given column as a double. if a format attribute
+exists, its value is taken to be a decimal format string as defined in
+java.text.DecimalFormat, and the result is formatted accordingly.</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:row-results//esql:get-float</p>
+
+</td>
+<td>
+
+<p>returns the value of the given column as a float. if a format attribute
+exists, its value is taken to be a decimal format string as defined in
+java.text.DecimalFormat, and the result is formatted accordingly.</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:row-results//esql:get-int</p>
+
+</td>
+<td>
+
+<p>returns the value of the given column as an integer</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:row-results//esql:get-long</p>
+
+</td>
+<td>
+
+<p>returns the value of the given column as a long</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:row-results//esql:get-short</p>
+
+</td>
+<td>
+
+<p>returns the value of the given column as a short</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:row-results//esql:get-ascii</p>
+
+</td>
+<td>
+
+<p>returns the value of the given column as a clob</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:row-results//esql:get-object</p>
+
+</td>
+<td>
+
+<p>returns the value of the given column as an object</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:row-results//esql:get-array</p>
+
+</td>
+<td>
+
+<p>returns the value of the given column as an java.sql.Array. This is
+frequently used for collection datatypes like lists, sets, bags etc.</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:row-results//esql:get-struct</p>
+
+</td>
+<td>
+
+<p>returns the value of the given column as a java.sql.Struct. This is
+frequently used for row types.</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:row-results//esql:get-xml</p>
+
+</td>
+<td>
+
+<p>returns the value of the given column interpreted as an xml fragment. The
+fragment is parsed by the default xsp parser and the document element is
+returned. If a root attribute exists, its value is taken to be the name of an
+element to wrap around the contents of the fragment before parsing.</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:results//esql:get-column-count</p>
+
+</td>
+<td>
+
+<p>returns the number of columns in the resultset.</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:row-results//esql:get-row-position|esql:results//esql:get-row-position
+</p>
+
+</td>
+<td>
+
+<p>returns the position of the current row in the result set</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:row-results//esql:get-column-name</p>
+
+</td>
+<td>
+
+<p>returns the name of the given column. the column must be specified by number,
+not name.</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:row-results//esql:get-column-label</p>
+
+</td>
+<td>
+
+<p>returns the label of the given column. the column must be specified by
+number, not name.</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:row-results//esql:get-column-type-name</p>
+
+</td>
+<td>
+
+<p>returns the name of the type of the given column. the column must be
+specified by number, not name.</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:row-results//esql:is-null</p>
+
+</td>
+<td>
+
+<p>allows null-column testing. Evaluates to a Java expression, which is true
+when the referred column contains a null-value for the current resultset row</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:error-results//esql:get-message</p>
+
+</td>
+<td>
+
+<p>returns the message of the current exception</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:error-results//esql:to-string</p>
+
+</td>
+<td>
+
+<p>returns the current exception as a string</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:error-results//esql:get-stacktrace</p>
+
+</td>
+<td>
+
+<p>returns the stacktrace of the current exception</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:results/esql:get-metadata</p>
+
+</td>
+<td>
+
+<p>returns the metadata associated with the current resultset</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:results/esql:get-resultset</p>
+
+</td>
+<td>
+
+<p>returns the current resultset</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:group</p>
+
+</td>
+<td>
+
+<p>Allows header elements around groups of consecutive records with identical
+values in column named by @group-on. Facilitates a single query with joins to be
+used in lieu of some nested queries.</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>esql:member</p>
+
+</td>
+<td>
+
+<p>Used in conjunction with and nested inside esql:group. Formatting for
+individual records goes within esql:member. Header stuff goes in between group
+and member.</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td>
+
+<p>@*|node()</p>
+
+</td>
+<td>
+
+<p>used internally to determine which column is the given column. if a column
+attribute exists and its value is a number, it is taken to be the column's
+position. if the value is not a number, it is taken to be the column's name. if
+a column attribute does not exist, an esql:column element is assumed to exist
+and to render as a string (after all of the xsp instructions have been
+evaluated), which is taken to be the column's name.</p>
+
+</td>
+
+</tr>
+
+</table>
+<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/503">
+                  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/logicsheets/esql.html">dev@cocoon.apache.org</a>
+</div>
+<!--+
+    |end bottomstrip
+    +-->
+</div>
+</body>
+</html>

Propchange: cocoon/site/site/2.1/userdocs/logicsheets/esql.html
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message