haul 2003/01/31 08:40:40
Modified: src/webapp/samples sitemap.xmap
src/webapp/samples/chaperon sitemap.xmap
src/webapp/samples/common/style/xsl/html
simple-samples2html.xsl
src/webapp/samples/docs/samples sample-apps.xml
src/webapp/samples/docs/samples/xsp cacheable.xsp
src/webapp/samples/hello-world sitemap.xmap
src/webapp/samples/jsp sitemap.xmap
src/webapp/samples/linkstatus sitemap.xmap
src/webapp/samples/misc sitemap.xmap
src/webapp/samples/poi sitemap.xmap
src/webapp/samples/profiler sitemap.xmap
src/webapp/samples/protected sitemap.xmap
src/webapp/samples/search sitemap.xmap
src/webapp/samples/stylesheets/page simple-page2html.xsl
src/webapp/samples/sub sitemap.xmap
Added: src/webapp/samples/common/style/css samples.css
src/webapp/samples/simpleform ERROR.xsp OK.xsp
descriptor.xml sform.xml sitemap.xmap success.xml
Removed: src/webapp/samples/docs/samples/formvalidation ERROR.xsp
OK.xsp descriptor.xml
Log:
sample cosmetics
Revision Changes Path
1.27 +126 -46 xml-cocoon2/src/webapp/samples/sitemap.xmap
Index: sitemap.xmap
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/sitemap.xmap,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- sitemap.xmap 17 Jan 2003 17:28:53 -0000 1.26
+++ sitemap.xmap 31 Jan 2003 16:40:25 -0000 1.27
@@ -55,7 +55,13 @@
<map:transformers default="xslt"/>
<map:readers default="resource"/>
<map:serializers default="html"/>
- <map:matchers default="wildcard"/>
+ <map:matchers default="wildcard">
+ <map:matcher logger="sitemap.matcher.header" name="filename"
src="org.apache.cocoon.matching.modular.CachingRegexpMatcher">
+ <input-module name="request-param">
+ <parameter>filename</parameter>
+ </input-module>
+ </map:matcher>
+ </map:matchers>
<map:selectors default="browser"/>
<!--
@@ -125,8 +131,12 @@
<map:resource name="dynamic-page">
<map:generate src="{target}.xsp" type="serverpages"/>
- <map:transform src="stylesheets/dynamic-page2html.xsl">
- <map:parameter name="view-source" value="{target}.xsp"/>
+ <map:transform src="context://samples/stylesheets/dynamic-page2html.xsl">
+ <map:parameter name="servletPath" value="{request:servletPath}"/>
+ <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ <map:parameter name="file" value="{target}.xsp"/>
+ <map:parameter name="remove" value="{remove}"/>
</map:transform>
<map:serialize/>
</map:resource>
@@ -146,6 +156,7 @@
-->
<map:call resource="dynamic-page">
<map:parameter name="target"
value="{../target}/state{../../../0}{../../0}"/>
+ <map:parameter name="remove" value="{../remove}"/>
</map:call>
</map:act>
</map:resource>
@@ -155,14 +166,19 @@
<map:parameter name="new-state" value="1"/>
<map:call resource="dynamic-page">
<map:parameter name="target" value="{../target}1"/>
+ <map:parameter name="remove" value="{../remove}"/>
</map:call>
</map:act>
</map:resource>
<map:resource name="simple-page">
<map:generate src="{target}.xml" type="file"/>
- <map:transform src="stylesheets/page/simple-page2html.xsl">
- <map:parameter name="view-source" value="{target}.xml"/>
+ <map:transform src="context://samples/stylesheets/page/simple-page2html.xsl">
+ <map:parameter name="servletPath" value="{request:servletPath}"/>
+ <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ <map:parameter name="file" value="{target}.xml"/>
+ <map:parameter name="remove" value="{remove}"/>
</map:transform>
<map:serialize/>
</map:resource>
@@ -228,7 +244,9 @@
<map:match pattern="welcome">
<map:generate src="samples.xml"/>
- <map:transform type="xalan"
src="common/style/xsl/html/simple-samples2html.xsl"/>
+ <map:transform
src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
<map:serialize/>
</map:match>
</map:pipeline>
@@ -308,8 +326,11 @@
<map:generate src="docs/samples/xsp-js/{1}.xsp" type="serverpages">
<map:parameter name="programming-language" value="js"/>
</map:generate>
- <map:transform src="stylesheets/dynamic-page2html.xsl">
- <map:parameter name="view-source" value="docs/samples/xsp-js/{1}.xsp"/>
+ <map:transform src="context://samples/stylesheets/dynamic-page2html.xsl">
+ <map:parameter name="servletPath" value="{request:servletPath}"/>
+ <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ <map:parameter name="file" value=".xsp"/>
</map:transform>
<map:serialize/>
</map:match>
@@ -349,19 +370,30 @@
<!--
<map:select>
<map:when test="wap">
- <map:transform src="stylesheets/simple-samples2html.xsl"/>
+ <map:transform
src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
</map:when>
<map:when test="netscape">
- <map:transform src="stylesheets/simple-samples2html.xsl"/>
+ <map:transform
src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
</map:when>
<map:otherwise>
- <map:transform src="stylesheets/simple-samples2html.xsl"/>
+ <map:transform
src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
</map:otherwise>
</map:select>
-->
- <map:transform type="xslt" src="stylesheets/simple-samples2html.xsl"/>
+ <map:transform type="xslt"
src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
<!-- uncomment the following if you want to use Xalan's interpreter as the XSLT
processor -->
- <!-- <map:transform type="xalan" src="stylesheets/simple-samples2html.xsl"/> -->
+ <!-- <map:transform type="xalan"
src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
+ -->
<!--
These events are consumed by the default transformer, which
uses "stylesheets/simple-samples2html.xsl" as parameter. Since
@@ -383,7 +415,9 @@
<map:match pattern="sample-*">
<map:generate src="docs/samples/sample-{1}.xml"/>
- <map:transform src="stylesheets/simple-samples2html.xsl"/>
+ <map:transform
src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
<map:serialize/>
</map:match>
@@ -448,7 +482,13 @@
<map:match pattern="hello.html">
<map:generate src="docs/samples/hello-page.xml"/>
- <map:transform src="stylesheets/page/simple-page2html.xsl"/>
+ <map:transform src="context://samples/stylesheets/page/simple-page2html.xsl">
+ <map:parameter name="servletPath" value="{request:servletPath}"/>
+ <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ <map:parameter name="file" value="docs/samples/hello-page.xml"/>
+ <map:parameter name="remove" value="{0}"/>
+ </map:transform>
<map:serialize type="html"/>
</map:match>
@@ -593,16 +633,26 @@
<map:match pattern="scripts/*">
<map:generate src="docs/samples/scripts/{1}" type="script"/>
- <map:transform src="stylesheets/page/simple-page2html.xsl"/>
+ <map:transform src="context://samples/stylesheets/page/simple-page2html.xsl">
+ <map:parameter name="servletPath" value="{request:servletPath}"/>
+ <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ <map:parameter name="file" value="docs/samples/scripts/{1}"/>
+ <map:parameter name="remove" value="{0}"/>
+ </map:transform>
<map:serialize type="html"/>
</map:match>
<map:match pattern="templates/*">
<map:generate src="templates/{1}" type="velocity">
- <map:parameter name="name" value="Velocity"/>
- <map:parameter name="project" value="Cocoon"/>
+ <map:parameter name="name" value="Velocity"/>
+ <map:parameter name="project" value="Cocoon"/>
</map:generate>
- <map:transform src="stylesheets/page/simple-page2html.xsl"/>
+ <map:transform src="context://samples/stylesheets/page/simple-page2html.xsl">
+ <map:parameter name="servletPath" value="{request:servletPath}"/>
+ <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
<map:serialize type="html"/>
</map:match>
@@ -643,8 +693,12 @@
<!-- =========================== Dynamic ================================ -->
<map:match pattern="xsp/*">
<map:generate src="docs/samples/xsp/{1}.xsp" type="serverpages"/>
- <map:transform src="stylesheets/dynamic-page2html.xsl">
- <map:parameter name="view-source" value="samples/docs/samples/xsp/{1}.xsp"/>
+ <map:transform src="context://samples/stylesheets/dynamic-page2html.xsl">
+ <map:parameter name="servletPath" value="{request:servletPath}"/>
+ <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ <map:parameter name="file" value="docs/samples/xsp/{1}.xsp"/>
+ <map:parameter name="remove" value="{0}"/>
<!--
Run-time configuration is done through these
<map:parameter/> elements. Again, let's have a look at the
@@ -662,20 +716,6 @@
<map:serialize/>
</map:match>
- <!-- ======================= FormValidation ============================= -->
-
- <map:match pattern="formvalidation/test">
- <map:act type="form-validator">
- <map:parameter name="descriptor"
value="docs/samples/formvalidation/descriptor.xml"/>
- <map:parameter name="validate-set" value="car-reservation"/>
- <map:call resource="dynamic-page">
- <map:parameter name="target" value="docs/samples/formvalidation/OK"/>
- </map:call>
- </map:act>
- <map:call resource="dynamic-page">
- <map:parameter name="target" value="docs/samples/formvalidation/ERROR"/>
- </map:call>
- </map:match>
<!-- ========================== session state =================================
-->
@@ -696,12 +736,14 @@
<map:match pattern="1" type="next-page">
<map:call resource="dynamic-page1">
<map:parameter name="target" value="docs/samples/session-state"/>
+ <map:parameter name="remove" value="session-state/example"/>
</map:call>
<!-- by calling this resource, the rest of this fragment here is
irrelevant -->
</map:match>
<map:match pattern="2" type="next-page">
<map:call resource="dynamic-page1">
<map:parameter name="target" value="docs/samples/session-state"/>
+ <map:parameter name="remove" value="session-state/example"/>
</map:call>
</map:match>
</map:match>
@@ -710,42 +752,49 @@
<map:match pattern="1" type="next-page">
<map:call resource="dynamic-page1">
<map:parameter name="target" value="docs/samples/session-state"/>
+ <map:parameter name="remove" value="session-state/example"/>
</map:call>
</map:match>
<map:match pattern="2" type="next-page">
<map:call resource="dynamic-page1">
<map:parameter name="target" value="docs/samples/session-state"/>
+ <map:parameter name="remove" value="session-state/example"/>
</map:call>
</map:match>
</map:match>
<map:call resource="dynamic-page2">
<map:parameter name="target" value="docs/samples/session-state/state0"/>
+ <map:parameter name="remove" value="session-state/example"/>
</map:call>
</map:act>
<!-- end if session is valid -->
<map:call resource="dynamic-page">
<map:parameter name="target" value="docs/samples/session-state/start"/>
+ <map:parameter name="remove" value="session-state/example"/>
</map:call>
</map:match>
<!-- ========================== referer ================================= -->
<map:match pattern="referer/*">
- <map:match pattern="http://*/cocoon/referer/a" type="referer-match">
+ <map:match pattern="http://*/cocoon/samples/referer/a" type="referer-match">
<map:call resource="simple-page">
<map:parameter name="target" value="docs/samples/referer/a/{../1}"/>
+ <map:parameter name="remove" value="{../0}"/>
</map:call>
</map:match>
- <map:match pattern="http://*/cocoon/referer/b" type="referer-match">
+ <map:match pattern="http://*/cocoon/samples/referer/b" type="referer-match">
<map:call resource="simple-page">
<map:parameter name="target" value="docs/samples/referer/b/{../1}"/>
+ <map:parameter name="remove" value="{../0}"/>
</map:call>
</map:match>
<map:call resource="simple-page">
<map:parameter name="target" value="docs/samples/referer/a/a"/>
+ <map:parameter name="remove" value="{0}"/>
</map:call>
</map:match>
@@ -759,7 +808,12 @@
<map:match pattern="Order">
<map:generate src="docs/samples/stream/OrderPage.xml"/>
- <map:transform src="stylesheets/dynamic-page2html.xsl"/>
+ <map:transform src="context://samples/stylesheets/dynamic-page2html.xsl">
+ <map:parameter name="servletPath" value="{request:servletPath}"/>
+ <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ <map:parameter name="file" value=".xsp"/>
+ </map:transform>
<map:serialize type="html"/>
</map:match>
@@ -773,6 +827,16 @@
<map:serialize/>
</map:match>
+ <map:match pattern="view-file">
+ <!-- colourize files that are known to be XML -->
+ <map:match type="filename" pattern="((xml)|(xsp)|(xmap)|(xconf))$">
+ <map:generate src="docs/samples/slides/view-source.xsp" type="serverpages"/>
+ <map:serialize/>
+ </map:match>
+ <!-- all other files are just send as text -->
+ <map:read mime-type="text/plain" src="../{request-param:filename}"/>
+ </map:match>
+
<!-- ========================== SOAP ============================== -->
<map:match pattern="soap/*">
<map:generate src="docs/samples/soap/{1}.xml" type="serverpages"/>
@@ -783,16 +847,24 @@
<map:match pattern="xscript/soap-getquote1">
<map:generate src="docs/samples/xscript/soap-getquote1.xsp"
type="serverpages"/>
<map:transform src="docs/samples/xscript/soap-getquote1.xsl"/>
- <map:transform src="stylesheets/dynamic-page2html.xsl">
- <map:parameter name="view-source"
value="docs/samples/xscript/soap-getquote1.xsp"/>
+ <map:transform src="context://samples/stylesheets/dynamic-page2html.xsl">
+ <map:parameter name="servletPath" value="{request:servletPath}"/>
+ <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ <map:parameter name="file" value="docs/samples/{0}.xsp"/>
+ <map:parameter name="remove" value="{0}"/>
</map:transform>
<map:serialize/>
</map:match>
<map:match pattern="xscript/*">
<map:generate src="docs/samples/xscript/{1}.xsp" type="serverpages"/>
- <map:transform src="stylesheets/dynamic-page2html.xsl">
- <map:parameter name="view-source" value="docs/samples/xscript/{1}.xsp"/>
+ <map:transform src="context://samples/stylesheets/dynamic-page2html.xsl">
+ <map:parameter name="servletPath" value="{request:servletPath}"/>
+ <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ <map:parameter name="file" value="docs/samples/{0}.xsp"/>
+ <map:parameter name="remove" value="{0}"/>
</map:transform>
<map:serialize/>
</map:match>
@@ -819,7 +891,9 @@
<map:match pattern="generror">
<map:generate src="docs/samples/error-giving-page.xml"/>
- <map:transform src="stylesheets/simple-samples2html.xsl"/>
+ <map:transform
src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
<map:serialize/>
</map:match>
@@ -885,19 +959,25 @@
<map:match pattern="welcome">
<map:generate src="samples.xml"/>
- <map:transform type="xalan"
src="common/style/xsl/html/simple-samples2html.xsl"/>
+ <map:transform
src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
<map:serialize/>
</map:match>
<map:match pattern="scratchpad">
<map:generate src="scratchpad-samples.xml"/>
- <map:transform type="xalan"
src="common/style/xsl/html/simple-samples2html.xsl"/>
+ <map:transform
src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
<map:serialize/>
</map:match>
<map:match pattern="blocks">
<map:generate src="block-samples.xml"/>
- <map:transform type="xalan"
src="common/style/xsl/html/simple-samples2html.xsl"/>
+ <map:transform
src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
<map:serialize/>
</map:match>
1.5 +3 -1 xml-cocoon2/src/webapp/samples/chaperon/sitemap.xmap
Index: sitemap.xmap
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/chaperon/sitemap.xmap,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- sitemap.xmap 17 Jan 2003 11:29:23 -0000 1.4
+++ sitemap.xmap 31 Jan 2003 16:40:29 -0000 1.5
@@ -98,7 +98,9 @@
<map:match pattern="welcome">
<map:generate src="misc/samples.xml"/>
- <map:transform
src="context://samples/common/style/xsl/html/simple-samples2html.xsl"/>
+ <map:transform
src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
<map:serialize/>
</map:match>
1.1 xml-cocoon2/src/webapp/samples/common/style/css/samples.css
Index: samples.css
===================================================================
<!-- $Id: samples.css,v 1.1 2003/01/31 16:40:31 haul Exp $ -->
body { background-color: white;
}
p { text-align: left;
font-style: italic;
}
h2 { color: navy;
text-align: center
}
h1 { color: navy;
text-align: center
}
div.resources, div.footer { background-color: #c0d0f0; }
div.footer { font-size: small; }
div.footer > table { font-size: small; }
td.doc { background-color: #e0ffff; }
td.file { background-color: #d0f0ff; }
a:link { color: blue; }
a:visited { color: blue; }
a:hover { color: red; }
1.7 +19 -7
xml-cocoon2/src/webapp/samples/common/style/xsl/html/simple-samples2html.xsl
Index: simple-samples2html.xsl
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/webapp/samples/common/style/xsl/html/simple-samples2html.xsl,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- simple-samples2html.xsl 17 Jan 2003 11:29:23 -0000 1.6
+++ simple-samples2html.xsl 31 Jan 2003 16:40:33 -0000 1.7
@@ -4,6 +4,8 @@
<!-- Author: Christian Haul "[EMAIL PROTECTED]" -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xsl:param name="contextPath" select="string('/cocoon')"/>
+
<xsl:template match="/">
<html>
<head>
@@ -14,7 +16,7 @@
<table border="0" cellspacing="2" cellpadding="2" align="center" width="100%">
<tr>
<td width="*"><font face="arial,helvetica,sanserif" color="#000000">The
Apache Software Foundation is proud to present...</font></td>
- <td width="40%" align="center"><img border="0"
src="/cocoon/samples/images/cocoon.gif"/></td>
+ <td width="40%" align="center"><img border="0"
src="{concat($contextPath,'/samples/images/cocoon.gif')}"/></td>
<td width="30%" align="center"><font face="arial,helvetica,sanserif"
color="#000000"><b>version @version@</b></font></td>
</tr>
<tr>
@@ -179,12 +181,22 @@
</xsl:template>
<xsl:template match="sample">
- <tr>
- <td width="100%" bgcolor="#ffffff" align="left">
- <font size="+0" face="arial,helvetica,sanserif" color="#000000">
- <a href="{@href}"><xsl:value-of select="@name"/></a><xsl:text> - </xsl:text>
- <xsl:value-of select="."/>
- </font>
+ <xsl:variable name="link">
+ <xsl:choose>
+ <xsl:when test="starts-with(@href,'/')">
+ <xsl:value-of select="concat($contextPath,@href)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@href"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <tr>
+ <td width="100%" bgcolor="#ffffff" align="left">
+ <font size="+0" face="arial,helvetica,sanserif" color="#000000">
+ <a href="{$link}"><xsl:value-of select="@name"/></a><xsl:text> - </xsl:text>
+ <xsl:value-of select="."/>
+ </font>
</td>
</tr>
</xsl:template>
1.4 +6 -2 xml-cocoon2/src/webapp/samples/docs/samples/sample-apps.xml
Index: sample-apps.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/docs/samples/sample-apps.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- sample-apps.xml 17 Jan 2003 11:29:22 -0000 1.3
+++ sample-apps.xml 31 Jan 2003 16:40:34 -0000 1.4
@@ -44,7 +44,11 @@
<xlink:a href="http://java.sun.com/products/javabeans/">JavaBeans</xlink:a>
and
<xlink:a href="http://www.w3.org/DOM/">DOM</xlink:a> instances.
</sample>
- <sample name="Form Validation" href="formvalidation/test" xlink:role="dynamic">
+ <sample name="Simple Form Validation - Transformer" href="simpleform/sform"
xlink:role="dynamic">
+ This example demonstrates the use of an action to validate user
+ input and report validation errors to the user through a transfomer.
+ </sample>
+ <sample name="Simple Form Validation - Logicsheet" href="simpleform/formval"
xlink:role="dynamic">
This example demonstrates the use of an action to validate user
input and report validation errors to the user through a taglib.
</sample>
1.2 +9 -8 xml-cocoon2/src/webapp/samples/docs/samples/xsp/cacheable.xsp
Index: cacheable.xsp
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/docs/samples/xsp/cacheable.xsp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- cacheable.xsp 2 Jul 2002 13:06:39 -0000 1.1
+++ cacheable.xsp 31 Jan 2003 16:40:36 -0000 1.2
@@ -7,9 +7,7 @@
xmlns:xsp-request="http://apache.org/xsp/request/2.0">
<xsp:structure>
-<xsp:include>org.apache.cocoon.caching.CacheValidity</xsp:include>
-<xsp:include>org.apache.cocoon.caching.DeltaTimeCacheValidity</xsp:include>
-<xsp:include>org.apache.cocoon.util.HashUtil</xsp:include>
+<xsp:include>org.apache.excalibur.source.SourceValidity</xsp:include>
</xsp:structure>
<xsp:logic>
@@ -21,10 +19,10 @@
* @return The generated key or 0 if the component
* is currently not cacheable.
*/
- public long generateKey()
+ public java.io.serializable generateKey()
{
// Generate unique key; add parameters' values here
- return HashUtil.hash("" + request.getParameter("param"));
+ return super.generateKey()+request.getParameter("param");
}
/**
@@ -35,9 +33,12 @@
* @return The generated validity object or null if the
* component is currently not cacheable.
*/
- public CacheValidity generateValidity() {
+ public SourceValidity generateValidity() {
// Check all dependencies here
- return new DeltaTimeCacheValidity(0, 5);
+ java.util.Calendar cal = new java.util.GregorianCalendar();
+ cal.add(java.util.Calendar.SECOND, +5); // valid for 5 seconds
+ return new
+
org.apache.excalibur.source.impl.validity.TimeStampValidity(cal.getTimeInMillis());
}
</xsp:logic>
1.9 +14 -2 xml-cocoon2/src/webapp/samples/hello-world/sitemap.xmap
Index: sitemap.xmap
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/hello-world/sitemap.xmap,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- sitemap.xmap 20 Oct 2002 12:25:45 -0000 1.8
+++ sitemap.xmap 31 Jan 2003 16:40:39 -0000 1.9
@@ -95,7 +95,13 @@
<map:pipeline>
<map:match pattern="hello.html">
<map:generate src="content/xml/hello-page.xml"/>
- <map:transform src="style/xsl/simple-page2html.xsl"/>
+ <map:transform src="context://samples/stylesheets/page/simple-page2html.xsl">
+ <map:parameter name="servletPath" value="{request:servletPath}"/>
+ <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ <map:parameter name="file" value="content/xml/hello-page.xml"/>
+ <map:parameter name="remove" value="{0}"/>
+ </map:transform>
<map:serialize type="html"/>
</map:match>
@@ -116,7 +122,13 @@
<map:match pattern="hello.xhtml">
<map:generate src="content/xml/hello-page.xml"/>
- <map:transform src="style/xsl/simple-page2html.xsl"/>
+ <map:transform src="context://samples/stylesheets/page/simple-page2html.xsl">
+ <map:parameter name="servletPath" value="{request:servletPath}"/>
+ <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ <map:parameter name="file" value="content/xml/hello-page.xml"/>
+ <map:parameter name="remove" value="{0}"/>
+ </map:transform>
<map:serialize type="xhtml"/>
</map:match>
1.4 +6 -1 xml-cocoon2/src/webapp/samples/jsp/sitemap.xmap
Index: sitemap.xmap
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/jsp/sitemap.xmap,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- sitemap.xmap 20 Oct 2002 12:25:45 -0000 1.3
+++ sitemap.xmap 31 Jan 2003 16:40:39 -0000 1.4
@@ -42,7 +42,12 @@
<map:match pattern="*.jsp">
<map:generate type="jsp" src="{1}.jsp"/>
- <map:transform src="simple-page2html.xsl"/>
+ <map:transform
src="context://samples/stylesheets/dynamic-page2html.xsl">
+ <map:parameter name="servletPath" value="{request:servletPath}"/>
+ <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ <map:parameter name="file" value=".jsp"/>
+ </map:transform>
<map:serialize type="html"/>
</map:match>
1.5 +3 -1 xml-cocoon2/src/webapp/samples/linkstatus/sitemap.xmap
Index: sitemap.xmap
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/linkstatus/sitemap.xmap,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- sitemap.xmap 20 Oct 2002 12:25:45 -0000 1.4
+++ sitemap.xmap 31 Jan 2003 16:40:39 -0000 1.5
@@ -34,7 +34,9 @@
<map:match pattern="welcome">
<map:generate src="samples.xml"/>
- <map:transform src="context://samples/stylesheets/simple-samples2html.xsl"/>
+ <map:transform
src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
<map:serialize/>
</map:match>
1.4 +3 -1 xml-cocoon2/src/webapp/samples/misc/sitemap.xmap
Index: sitemap.xmap
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/misc/sitemap.xmap,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- sitemap.xmap 29 Nov 2002 07:21:42 -0000 1.3
+++ sitemap.xmap 31 Jan 2003 16:40:39 -0000 1.4
@@ -19,7 +19,9 @@
<map:match pattern="welcome">
<map:generate src="samples.xml"/>
- <map:transform src="context://samples/stylesheets/simple-samples2html.xsl"/>
+ <map:transform
src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
<map:serialize/>
</map:match>
1.4 +11 -4 xml-cocoon2/src/webapp/samples/poi/sitemap.xmap
Index: sitemap.xmap
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/poi/sitemap.xmap,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- sitemap.xmap 4 Jul 2002 05:20:43 -0000 1.3
+++ sitemap.xmap 31 Jan 2003 16:40:39 -0000 1.4
@@ -27,7 +27,9 @@
<map:match pattern="welcome">
<map:generate src="content/samples.xml"/>
- <map:transform src="context://samples/stylesheets/simple-samples2html.xsl"/>
+ <map:transform
src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
<map:serialize/>
</map:match>
@@ -88,9 +90,14 @@
<map:match pattern="xsp/*">
<map:generate src="content/dynamic/{1}.xsp" type="serverpages"/>
-<!-- <map:transform src="stylesheets/dynamic-page2html.xsl">
- <map:parameter name="view-source" value="docs/samples/xsp/{1}.xsp"/>
- </map:transform>-->
+<!--
+ <map:transform src="context://samples/stylesheets/dynamic-page2html.xsl">
+ <map:parameter name="servletPath" value="{request:servletPath}"/>
+ <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ <map:parameter name="file" value=".xsp"/>
+ </map:transform>
+-->
<map:serialize type="xml"/>
</map:match>
1.4 +3 -1 xml-cocoon2/src/webapp/samples/profiler/sitemap.xmap
Index: sitemap.xmap
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/profiler/sitemap.xmap,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- sitemap.xmap 14 Jan 2003 10:36:52 -0000 1.3
+++ sitemap.xmap 31 Jan 2003 16:40:39 -0000 1.4
@@ -81,7 +81,9 @@
<map:match pattern="welcome">
<map:generate src="samples.xml"/>
- <map:transform src="context://samples/stylesheets/simple-samples2html.xsl"/>
+ <map:transform
src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
<map:serialize/>
</map:match>
1.5 +7 -1 xml-cocoon2/src/webapp/samples/protected/sitemap.xmap
Index: sitemap.xmap
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/protected/sitemap.xmap,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- sitemap.xmap 20 Oct 2002 12:25:45 -0000 1.4
+++ sitemap.xmap 31 Jan 2003 16:40:39 -0000 1.5
@@ -45,7 +45,13 @@
<!-- ================= -->
<map:match pattern="login">
<map:generate src="docs/login.xml"/>
- <map:transform src="stylesheets/simple-page2html.xsl"/>
+ <map:transform
src="context://samples/stylesheets/page/simple-page2html.xsl">
+ <map:parameter name="servletPath" value="{request:servletPath}"/>
+ <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ <map:parameter name="file" value="docs/login.xml"/>
+ <map:parameter name="remove" value="{0}"/>
+ </map:transform>
<map:serialize/>
</map:match>
1.5 +6 -3 xml-cocoon2/src/webapp/samples/search/sitemap.xmap
Index: sitemap.xmap
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/search/sitemap.xmap,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- sitemap.xmap 13 Aug 2002 15:16:33 -0000 1.4
+++ sitemap.xmap 31 Jan 2003 16:40:39 -0000 1.5
@@ -57,9 +57,12 @@
<map:match pattern="**">
<map:generate type="serverpages" src="{1}-index.xsp"/>
- <map:transform src="context://samples/stylesheets/dynamic-page2html.xsl">
- <map:parameter name="view-source" value="search/{1}-index.xsp"/>
- </map:transform>
+ <map:transform
src="context://samples/stylesheets/dynamic-page2html.xsl">
+ <map:parameter name="servletPath" value="{request:servletPath}"/>
+ <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ <map:parameter name="file" value="-index.xsp"/>
+ </map:transform>
<map:serialize/>
</map:match>
</map:pipeline>
1.1 xml-cocoon2/src/webapp/samples/simpleform/ERROR.xsp
Index: ERROR.xsp
===================================================================
<?xml version="1.0" encoding="ISO-8859-1"?><!-- -*- sgml -*- -->
<xsp:page language="java"
xmlns:xsp="http://apache.org/xsp"
xmlns:xsp-formval="http://apache.org/xsp/form-validator/2.0"
xmlns:xsp-request="http://apache.org/xsp/request/2.0">
<page>
<resources>
<resource type="file" href="descriptor.xml">Descriptor</resource>
<resource type="doc" href="userdocs/xsp/logicsheet-forms.html">Action &
Logicsheet</resource>
</resources>
<title>Car Reservation</title>
<content>
<para>
Informal validation results <xsp:expr><xsp-formval:results/></xsp:expr>
</para>
<form method="POST">
<!-- use this to get a clue if the user had a chance to fill in
any date already. This is necessary if no validation results should be
displayed when the user first encounters the form. If the error messages
should be used to guide the user from the beginning, this is not needed.
-->
<input type="hidden" name="visited" value="true"/>
<xsp:logic>
boolean userHasSeenForm = (<xsp-request:get-parameter
name="visited"/>!=null);
</xsp:logic>
<!-- if validation constraints should be included in the error messages, a
reference to the file containing the validation rules is needed. Otherwise
it can be removed.
-->
<xsp-formval:descriptor name="descriptor.xml" constraint-set="car-reservation">
<table>
<tbody>
<!-- the first example field illustrates the simplest usage, passing the
current
validation field name every time.
-->
<tr>
<td>How many persons should the car seat?</td>
<td>
<input type="TEXT" name="persons" size="2">
<xsp:attribute name="value"><xsp-request:get-parameter name="persons"
default=""/></xsp:attribute>
</input>
</td>
<td>
<xsp:logic>
if (userHasSeenForm) {
if (<xsp-formval:is-toosmall name="persons"/> ) {
<b> The smallest available car seats <xsp-formval:get-attribute
parameter="persons" name="min"/></b>
} else if ( <xsp-formval:is-toolarge name="persons"/> ) {
<b> The largest available car seats <xsp-formval:get-attribute
parameter="persons" name="max"/></b>
} else if (<xsp-formval:is-error name="persons"/> ) {
<b> Some error occured. Your input is not correct. </b>
}
}
</xsp:logic>
</td>
</tr>
<!-- another possibility is to create a context that is used for all nested
validation tags. Note that here no validation parameter name is added to
the validation tags.
-->
<xsp-formval:validate name="deposit">
<tr>
<td>Please enter your deposit EUR</td>
<td>
<input type="TEXT" name="deposit" size="10">
<xsp:attribute name="value"><xsp-request:get-parameter name="deposit"
default=""/></xsp:attribute>
</input>
</td>
<td>
<xsp:logic>
if (userHasSeenForm) {
if ( <xsp-formval:is-null/>) {
<b> You need to specify a deposit </b>
} else if ( <xsp-formval:is-toosmall/> ) {
<b> The deposit has to be at least EUR <xsp-formval:get-attribute
name="min"/></b>
} else if ( <xsp-formval:is-toolarge/> ) {
<b> The deposit has to be at most EUR <xsp-formval:get-attribute
name="max"/></b>
} else if (<xsp-formval:is-notpresent/> ) {
<b></b>
} else if ( <xsp-formval:is-error/>) {
<b> Some error occured. Your input is not correct. </b>
}
}
</xsp:logic>
</td>
</tr>
</xsp-formval:validate>
<xsp-formval:validate name="email">
<tr>
<td>Please enter your email</td>
<td>
<input type="TEXT" name="email" size="50">
<xsp:attribute name="value"><xsp-request:get-parameter name="email"
default=""/></xsp:attribute>
</input>
</td>
<td>
<xsp:logic>
if (userHasSeenForm) {
if ( <xsp-formval:is-null/>) {
<b> You need to specify an email </b>
} else if ( <xsp-formval:is-nomatch/> ) {
<b> This does not seem to be a valid email
address. Expected
<pre><xsp-formval:get-attribute parameter="email"
name="matches-regex"/></pre>
</b>
} else if ( <xsp-formval:is-toolarge/> ) {
<b> Only addresses with up to
<xsp-formval:get-attribute parameter="email" name="max-len"/>
characters are accepted
</b>
} else if (<xsp-formval:is-notpresent/> ) {
<b></b>
} else if ( <xsp-formval:is-error/>) {
<b> Some error occured. Your input is not correct. </b>
}
}
</xsp:logic>
</td>
</tr>
</xsp-formval:validate>
<!-- less embedded java is needed when using the <xsp-formval:on-XXX/> tags.
They are
equivalent to the above "<xsp:logic>if (<xsp-formval:is-XXX/>) { ... }
</xsp:logic>"
but much cleaner.
-->
<xsp-formval:validate name="address">
<tr>
<td>Please enter the billing address</td>
<td>
<textarea rows="6" cols="40" name="address"><xsp-request:get-parameter
name="address" default=""/></textarea>
</td>
<td>
<xsp:logic>
if (userHasSeenForm) {
<xsp-formval:on-null>
<b> You need to specify an address. </b>
</xsp-formval:on-null>
<xsp-formval:on-toolarge>
<b> Only addresses with up to
<xsp-formval:get-attribute parameter="address" name="max-len"/>
characters are accepted.
</b>
</xsp-formval:on-toolarge>
<xsp-formval:on-notpresent/>
<xsp-formval:on-error>
<b> Some error occured. Your input is not correct. </b>
</xsp-formval:on-error>
}
</xsp:logic>
</td>
</tr>
</xsp-formval:validate>
</tbody>
</table>
</xsp-formval:descriptor>
<input type="submit" name="submit" value="submit"/>
</form>
</content>
</page>
</xsp:page>
1.1 xml-cocoon2/src/webapp/samples/simpleform/OK.xsp
Index: OK.xsp
===================================================================
<?xml version="1.0" encoding="ISO-8859-1"?><!-- -*- sgml -*- -->
<xsp:page
language="java"
xmlns:xsp="http://apache.org/xsp"
xmlns:xsp-formval="http://apache.org/xsp/form-validator/2.0"
xmlns:xsp-request="http://apache.org/xsp/request/2.0"
>
<page>
<resources>
<resource type="file" href="descriptor.xml">Descriptor</resource>
<resource type="doc" href="userdocs/xsp/logicsheet-forms.html">Action &
Logicsheet</resource>
</resources>
<title>Car Reservation</title>
<content>
<para>You've successfully reserved a car for
<b><xsp-request:get-parameter name="persons"/></b> with a deposit of
<b>EUR <xsp-request:get-parameter name="deposit"/></b>.</para>
<para> Details will be sent to your e-mail address
<tt><xsp-request:get-parameter name="email"/></tt></para>
<para> The bill will be sent to <pre>
<xsp-request:get-parameter name="address"/></pre></para>
<para>You can make a new reservation <a href="formval">here</a></para>
</content>
</page>
</xsp:page>
1.1 xml-cocoon2/src/webapp/samples/simpleform/descriptor.xml
Index: descriptor.xml
===================================================================
<?xml version="1.0" encoding="UTF-8"?>
<root>
<parameter name="persons" type="long" min="2" default="9" nullable="yes"/>
<parameter name="deposit" type="double" min="10.0" max="999.99"/>
<parameter name="email" type="string" max-len="50"
matches-regex="^[\d\w][\d\w\-_\.]*@([\d\w\-_]+\.)\w\w\w?$"/>
<parameter name="address" type="string" min-len="10" max-len="200" nullable="no"/>
<constraint-set name="car-reservation">
<validate name="persons"/>
<validate name="deposit" min="50.0"/>
<validate name="email"/>
<validate name="address"/>
</constraint-set>
<parameter name="person/name" type="string" max-len="10"/>
<constraint-set name="testform">
<validate name="person/name"/>
</constraint-set>
</root>
1.1 xml-cocoon2/src/webapp/samples/simpleform/sform.xml
Index: sform.xml
===================================================================
<?xml version="1.0" encoding="UTF-8"?>
<page>
<resources>
<resource type="file" href="descriptor.xml">Descriptor</resource>
<resource type="doc" href="userdocs/xsp/logicsheet-forms.html">Action &
Logicsheet</resource>
</resources>
<title>Formvalidation and -prefilling</title>
<content>
<para>
This page demonstrates the use of the following components:
<ul>
<li>FormValidatorAction</li>
<li>SimpleFormTransformer</li>
<li>SimpleFormInstanceTransformer</li>
</ul>
</para>
<para>
In general, there is no need to use this particular combination of
components to achive form validation. Actually, you should consider to
use the XMLForms components for this rather than the components listed
above. However, if you feel that XMLForms does not match your
requirements, this simpler model may be of interest to you.
</para>
<para>
more
</para>
<form name="person" method="get">
<form-instance>
<name>Doe</name>
<firstname>John</firstname>
<address>
<street>Hollywood Boulevard</street>
<place>Los Angeles</place>
</address>
</form-instance>
<para>
Please enter your name: <input type="text" size="20"
name="person/firstname"/>
<input type="text" size="20" name="person/name"/>
</para>
<para>
Your address: <input type="text" size="30" name="person/address/street"/>
</para>
<para>
<input type="text" size="30" name="person/address/place"/>
</para>
<para>
<input type="submit" name="validate" value="validate input"/>
</para>
<error name="*" when="ok"><para>All went <b>well.</b></para></error>
<error name="*" when-ge="error"><para>An <b>error</b> occurred.</para></error>
</form>
</content>
</page>
1.1 xml-cocoon2/src/webapp/samples/simpleform/sitemap.xmap
Index: sitemap.xmap
===================================================================
<?xml version="1.0" encoding="UTF-8"?>
<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
<!-- ========================= Components ================================ -->
<map:components>
<map:generators default="file"/>
<map:transformers default="xslt">
<!-- This transformer is used to extract the form instance data from the xml
document. See
the javadocs of this class for more information on the default configuration
and
configuration options.
The instance data is stored as an attribute with the same name as the form
using an
output module. Here we decide to use the RequestAttributeMap module. This
would allows
a) to store instances for several forms and b) to access a particular
instance and value
using JXPath syntax.
Per default, the map key is the name of the form as is the root node of the
new Document.
-->
<map:transformer name="sfinstance"
logger="sitemap.transformer.simpleform"
src="org.apache.cocoon.transformation.SimpleFormInstanceExtractionTransformer">
<output name="request-attr-map"/>
</map:transformer>
<!-- the SimpleFormTransformer acts upon HTML4 form element tags and replaces
their
value attribute or their content in case of the textarea element with data
obtained
from an input module attribute with the same name. In addition, it checks
the result
of the FormValidatorAction when it encounters <error/> tags and includes /
excludes
them depending on the result.
While many configuration options are available at run time, the input module
has
to be configured at declaration time. Thus a second instance of the
SimpleFormTransformer
is needed.
How is the instance data accessed?
If the user submitted data, those parameters shall be used, otherwise,
it is stored as Document (DOM) in a Map that is stored in a request
attribute.
Thus, first a request attribute is read, passing a fixed attribute name
because the name
of the map is fixed. This is the default name for attributes set by the
RequestAttributeMap
module.
Next, a JXPath expression is applied to this map. The expression is the name
attribute of the
HTML form tag currently transformed! Since both map key and root node is the
same (here: "person"),
and we don't want to reflect this in our HTML form, the simplemap input
module is used to
prepend the string "/person/" to the jxpath expression.
-->
<map:transformer name="simpleform"
logger="sitemap.transformer.simpleform"
src="org.apache.cocoon.transformation.SimpleFormTransformer">
<input-module name="chain">
<input-module name="request-param"/>
<input-module name="simplemap">
<prefix>/person/</prefix>
<input-module name="jxpath">
<!-- "jxpath" does not pass the attribute name to the module it
obtains the value to act from. Thus an additional attribute
name needs to be injected.
-->
<from-parameter>org.apache.cocoon.components.modules.output.OutputModule</from-parameter>
<input-module name="request-attr"/>
</input-module>
</input-module>
</input-module>
</map:transformer>
</map:transformers>
<map:readers default="resource"/>
<map:serializers default="html"/>
<map:matchers default="wildcard"/>
<map:selectors default="browser"/>
</map:components>
<!-- =========================== Resources ================================= -->
<map:resources>
<map:resource name="dynamic-page">
<map:generate src="{target}.xsp" type="serverpages"/>
<map:transform src="context://samples/stylesheets/dynamic-page2html.xsl">
<map:parameter name="servletPath" value="{request:servletPath}"/>
<map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
<map:parameter name="contextPath" value="{request:contextPath}"/>
<map:parameter name="file" value="{target}.xsp"/>
<map:parameter name="remove" value="{remove}"/>
</map:transform>
<map:serialize/>
</map:resource>
</map:resources>
<!-- =========================== Views =================================== -->
<map:views>
<map:view name="content" from-label="content">
<map:serialize type="xml"/>
</map:view>
<map:view name="pretty-content" from-label="data">
<map:transform
src="context://samples/common/style/xsl/html/simple-xml2html.xsl"/>
<map:serialize type="html"/>
</map:view>
<map:view name="links" from-position="last">
<map:serialize type="links"/>
</map:view>
</map:views>
<!-- =========================== Pipelines ================================= -->
<map:pipelines>
<map:pipeline>
<map:match pattern="">
<map:redirect-to uri="simpleform"/>
</map:match>
<!-- ============ form validation using xsp and logicsheet ============== -->
<map:match pattern="formval">
<map:act type="form-validator">
<map:parameter name="descriptor" value="descriptor.xml"/>
<map:parameter name="validate-set" value="car-reservation"/>
<map:call resource="dynamic-page">
<map:parameter name="target" value="OK"/>
<map:parameter name="remove" value="{../0}"/>
</map:call>
</map:act>
<map:call resource="dynamic-page">
<map:parameter name="target" value="ERROR"/>
<map:parameter name="remove" value="{0}"/>
</map:call>
</map:match>
<!-- ============ form validation using transformers ======================== -->
<map:match pattern="*">
<!-- Check the request parameters using the FormValidatorAction -->
<map:act type="form-validator">
<!-- parameters to the action -->
<!-- file that contains the validation rules and rule sets -->
<map:parameter name="descriptor" value="descriptor.xml"/>
<!-- rule set to use -->
<map:parameter name="validate-set" value="testform"/>
<!-- this is only applied if the validation has been successful -->
<!--map:generate src="success.xml"/>
<map:transform type="simpleform"/>
<map:transform src="context://samples/stylesheets/page/simple-page2html.xsl">
<map:parameter name="servletPath" value="{request:servletPath}"/>
<map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
<map:parameter name="contextPath" value="{request:contextPath}"/>
<map:parameter name="file" value=".xml"/>
</map:transform>
<map:serialize/-->
<!-- because of the above serializer the "success" pipeline ends here. -->
</map:act>
<!-- continue processing -->
<!-- since the "success" pipeline ends with a serializer, the following is only
applied if validation has not been successful.
-->
<map:generate type="file" src="{1}.xml"/>
<map:transform type="sfinstance"/> <!-- extract the instance data -->
<map:transform type="simpleform"/><!-- fill in the instance data, request
parameters, and error tags -->
<map:transform src="context://samples/stylesheets/page/simple-page2html.xsl">
<map:parameter name="servletPath" value="{request:servletPath}"/>
<map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
<map:parameter name="contextPath" value="{request:contextPath}"/>
<map:parameter name="file" value=".xml"/>
</map:transform>
<map:serialize/>
</map:match>
</map:pipeline>
</map:pipelines>
</map:sitemap>
<!-- end of file -->
1.1 xml-cocoon2/src/webapp/samples/simpleform/success.xml
Index: success.xml
===================================================================
<?xml version="1.0" encoding="UTF-8"?>
<page>
<title>Formvalidation and -prefilling</title>
<content>
<para>
The entered data successfully passed the validation stage.
</para>
<form name="testform" method="get">
<para>
<input type="text" size="20" name="person/firstname" readonly="true"/>
<input type="text" size="20" name="person/name" readonly="true"/>
</para>
<para>
<input type="text" size="30" name="person/address/street" readonly="true"/>
</para>
<para>
<input type="text" size="30" name="person/address/place" readonly="true"/>
</para>
<error name="*" when="ok"><para>All went <b>well.</b></para></error>
</form>
</content>
</page>
1.2 +84 -17
xml-cocoon2/src/webapp/samples/stylesheets/page/simple-page2html.xsl
Index: simple-page2html.xsl
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/webapp/samples/stylesheets/page/simple-page2html.xsl,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- simple-page2html.xsl 2 Jul 2002 13:06:41 -0000 1.1
+++ simple-page2html.xsl 31 Jan 2003 16:40:40 -0000 1.2
@@ -2,34 +2,101 @@
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
- <xsl:param name="view-source"/>
- <xsl:param name="path">../</xsl:param>
+ <xsl:param name="servletPath" select="string('/samples')"/>
+ <xsl:param name="sitemapURI"/>
+ <xsl:param name="file"/><!-- relative path to file or file suffix -->
+ <xsl:param name="remove"/><!-- path to remove from servletPath -->
+ <xsl:param name="contextPath" select="string('/cocoon')"/>
+
+ <xsl:variable name="realpath">
+ <xsl:choose>
+ <xsl:when test="$remove=''">
+ <xsl:value-of select="$servletPath"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="substring-before($servletPath,$remove)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="path"
select="concat($contextPath,'/samples/view-file?filename=')"/>
+ <xsl:variable name="view-source" select="concat($realpath,$file)"/>
+ <xsl:variable name="directory"
select="substring-before($servletPath,$sitemapURI)"/>
+ <!-- assume that sitemapURIs don't occur in servletPath more than once -->
+ <xsl:variable name="sitemap" select="concat($directory,'sitemap.xmap')"/>
<xsl:template match="page">
<html>
+ <link rel="stylesheet" href="{concat($contextPath,'/samples/samples.css')}"
title="Default Style"/>
<head>
<title>
<xsl:value-of select="title"/>
</title>
</head>
- <body bgcolor="white" alink="red" link="blue" vlink="blue">
- <xsl:apply-templates/>
+ <body>
+ <xsl:call-template name="resources"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="footer"/>
</body>
</html>
</xsl:template>
+ <xsl:template name="footer">
+ <div class="footer">
+ <table>
+ <tbody>
+ <tr><td>Source: </td><td>$COCOON<xsl:value-of
select="$view-source"/></td></tr>
+ <tr><td>Sitemap: </td><td>$COCOON<xsl:value-of
select="$sitemap"/></td></tr>
+ </tbody>
+ </table>
+ </div>
+ </xsl:template>
+
+ <xsl:template name="resources">
+ <div class="resources">
+ <table width="100%">
+ <tbody>
+ <tr>
+ <td>
+ <a target="_blank"
href="{concat($contextPath,$servletPath,'?cocoon-view=content')}">Content</a>
+ </td>
+ <td>
+ <a target="_blank" href="{concat($path,$view-source)}">Source</a>
+ </td>
+ <td>
+ <a target="_blank" href="{concat($path,$sitemap)}">Sitemap</a>
+ </td>
+ <xsl:for-each select="resources/resource">
+ <td class="{@type}">
+ <xsl:choose>
+ <xsl:when test="@type='file'">
+ <a target="_blank" href="{concat($path,$directory,@href)}">
+ <xsl:apply-templates/>
+ </a>
+ </xsl:when>
+ <xsl:when test="@type='doc'">
+ <a target="_blank"
href="{concat($contextPath,'/documents/',@href)}">
+ <xsl:apply-templates/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <a target="_blank" href="{concat($contextPath,'/',@href)}">
+ <xsl:apply-templates/>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </xsl:for-each>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="resources"/>
+
<xsl:template match="title">
- <h2 style="color: navy; text-align: center">
- <xsl:if test="not($view-source)">
- <xsl:apply-templates/>
- </xsl:if>
- <xsl:if test="$view-source">
- <A>
- <xsl:attribute name="HREF"><xsl:value-of
select="$path"/>view-source?filename=/<xsl:value-of
select="$view-source"/></xsl:attribute>
- <xsl:attribute name="TARGET">_blank</xsl:attribute>
- <xsl:apply-templates/>
- </A>
- </xsl:if>
+ <h2>
+ <xsl:apply-templates/>
</h2>
</xsl:template>
@@ -38,8 +105,8 @@
</xsl:template>
<xsl:template match="para">
- <p align="left">
- <i><xsl:apply-templates/></i>
+ <p>
+ <xsl:apply-templates/>
</p>
</xsl:template>
1.4 +6 -2 xml-cocoon2/src/webapp/samples/sub/sitemap.xmap
Index: sitemap.xmap
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/sub/sitemap.xmap,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- sitemap.xmap 20 Oct 2002 12:25:45 -0000 1.3
+++ sitemap.xmap 31 Jan 2003 16:40:40 -0000 1.4
@@ -24,7 +24,9 @@
<map:match pattern="welcome">
<map:generate src="docs/samples.xml"/>
- <map:transform src="stylesheets/simple-samples2html.xsl"/>
+ <map:transform
src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
<map:serialize/>
</map:match>
@@ -120,7 +122,9 @@
<!-- Test error handler in parent sitemap -->
<map:match pattern="generror">
<map:generate src="docs/error-giving-page.xml"/>
- <map:transform src="stylesheets/simple-samples2html.xsl"/>
+ <map:transform
src="context://samples/common/style/xsl/html/simple-samples2html.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ </map:transform>
<map:serialize/>
</map:match>
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]