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]