vgritsenko 02/02/08 20:16:39 Modified: . build.xml src/java/org/apache/cocoon cocoon.roles src/webapp cocoon.xconf sitemap.xmap src/webapp/docs/samples/xsp logicsheet.xsp Added: src/java/org/apache/cocoon/components/language/markup/xsp JSGenerator.java src/java/org/apache/cocoon/components/language/markup/xsp/javascript request.xsl response.xsl xsp.xsl src/webapp/docs/samples/xsp-js hello.xsp request-test.xsp simple.xsp Log: Add Javascript XSP markup language Revision Changes Path 1.163 +0 -2 xml-cocoon2/build.xml Index: build.xml =================================================================== RCS file: /home/cvs/xml-cocoon2/build.xml,v retrieving revision 1.162 retrieving revision 1.163 diff -u -r1.162 -r1.163 --- build.xml 9 Feb 2002 03:34:13 -0000 1.162 +++ build.xml 9 Feb 2002 04:16:38 -0000 1.163 @@ -663,8 +663,6 @@ <exclude name="**/CompiledJavascript*" unless="rhino.compiler.present"/> - <exclude name="**/Javascript*" unless="rhino.interpreter.present"/> - <exclude name="**/javascript/**" unless="rhino.interpreter.present"/> <exclude name="**/xsp/JSGenerator**" unless="rhino.interpreter.present"/> <exclude name="**/components/resolver/ResolverImpl.java" unless="resolver.present"/> 1.8 +1 -0 xml-cocoon2/src/java/org/apache/cocoon/cocoon.roles Index: cocoon.roles =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/cocoon.roles,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- cocoon.roles 6 Feb 2002 18:22:28 -0000 1.7 +++ cocoon.roles 9 Feb 2002 04:16:38 -0000 1.8 @@ -71,6 +71,7 @@ shorthand="programming-languages" default-class="org.apache.avalon.excalibur.component.ExcaliburComponentSelector"> <hint shorthand="java-language" class="org.apache.cocoon.components.language.programming.java.JavaLanguage"/> + <hint shorthand="js-language" class="org.apache.cocoon.components.language.programming.javascript.JavascriptLanguage"/> </role> <role name="org.apache.cocoon.components.language.generator.ProgramGenerator" 1.1 xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/xsp/JSGenerator.java Index: JSGenerator.java =================================================================== /* * The Apache Software License, Version 1.1 * * * Copyright (c) 2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Apache Cocoon" and "Apache Software Foundation" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache", * nor may "Apache" appear in their name, without prior written * permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package org.apache.cocoon.components.language.markup.xsp; import org.apache.avalon.framework.activity.Initializable; import org.apache.avalon.framework.configuration.Configurable; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.ConfigurationException; import org.apache.avalon.framework.parameters.Parameters; import org.apache.cocoon.ProcessingException; import org.apache.cocoon.components.language.LanguageException; import org.apache.cocoon.environment.SourceResolver; import org.apache.cocoon.generation.AbstractServerPage; import org.apache.cocoon.xml.XMLizable; import org.mozilla.javascript.Context; import org.mozilla.javascript.ImporterTopLevel; import org.mozilla.javascript.JavaScriptException; import org.mozilla.javascript.Script; import org.mozilla.javascript.Scriptable; import org.w3c.dom.Node; import org.xml.sax.ContentHandler; import org.xml.sax.SAXException; import org.xml.sax.helpers.AttributesImpl; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Collection; import java.util.Date; import java.util.Locale; import java.util.Map; /** * Class representing interpreted XSP-generated * <code>ServerPagesGenerator</code> programs * written in Javascript language * * @author <a href="mailto:[EMAIL PROTECTED]">Vadim Gritsenko</a> * @version CVS $Id: JSGenerator.java,v 1.1 2002/02/09 04:16:38 vgritsenko Exp $ */ public class JSGenerator extends XSPGenerator implements Configurable, Initializable { /** * Javascript source file */ private File file; private Scriptable global; // FIXME: Use Store to cache compiled scripts private Script script; public void configure(Configuration configuration) throws ConfigurationException { this.file = new File(configuration.getChild("file").getValue()); AbstractServerPage.dateCreated = this.file.lastModified(); // FIXME AbstractServerPage.dependencies = new File[]{}; } public void initialize() throws Exception { Context context = Context.enter(); try { global = new ImporterTopLevel(context); global.put("page", global, Context.toObject(this, global)); global.put("logger", global, Context.toObject(getLogger(), global)); global.put("jsAttr", global, Context.toObject(new AttributesImpl(), global)); context.setOptimizationLevel(-1); if (getLogger().isDebugEnabled()) { getLogger().debug("Compiling script " + file); } System.out.println("Compiling script " + file); script = context.compileReader(global, new FileReader(file), file.toString(), 1, null); } finally { Context.exit(); } } public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par) throws ProcessingException, SAXException, IOException { super.setup(resolver, objectModel, src, par); Context context = Context.enter(); try { global.put("objectModel", global, Context.toObject(this.objectModel, global)); global.put("request", global, Context.toObject(this.request, global)); global.put("response", global, Context.toObject(this.response, global)); global.put("context", global, Context.toObject(this.context, global)); global.put("resolver", global, Context.toObject(this.resolver, global)); global.put("parameters", global, Context.toObject(this.parameters, global)); } finally { Context.exit(); } } public void generate() throws IOException, ProcessingException { Context context = Context.enter(); try { global.put("contentHandler", global, Context.toObject(this.contentHandler, global)); context.setOptimizationLevel(-1); if (getLogger().isDebugEnabled()) { getLogger().debug("Executing script " + file); } System.out.println("Executing script " + file); script.exec(context, global); } catch (JavaScriptException e) { throw new ProcessingException("generate: Got Javascript exception", e); } finally { Context.exit(); } } public void recycle() { global.delete("contentHandler"); global.delete("objectModel"); global.delete("request"); global.delete("response"); global.delete("context"); global.delete("resolver"); global.delete("parameters"); super.recycle(); } public void dispose() { script = null; global = null; } // Helper methods accessible from script /** * Add an attribute * * @param attr The attribute list to add to * @param name The attribute name * @param value The attribute value */ public void jsAttribute(AttributesImpl attr, String name, String value) { attr.addAttribute("", name, name, "CDATA", value); } /** * Start an element * * @param name The element name * @param attr The element attributes */ public void jsStart(String name, AttributesImpl attr) throws SAXException { this.contentHandler.startElement("", name, name, attr); attr.clear(); } /** * End an element * * @param name The element name */ public void jsEnd(String name) throws SAXException { this.contentHandler.endElement("", name, name); } /** * Add character data * * @param data The character data */ public void jsCharacters(String data) throws SAXException { this.contentHandler.characters(data.toCharArray(), 0, data.length()); } /** * Add a comment * * @param comment The comment data */ public void jsComment(String data) throws SAXException { this.lexicalHandler.comment(data.toCharArray(), 0, data.length()); } // XSPObjectHelper public void jsExpr(Object v) throws SAXException { if (v == null || v instanceof String) { XSPObjectHelper.xspExpr(this.contentHandler, (String) v); } else if (v instanceof Collection) { XSPObjectHelper.xspExpr(this.contentHandler, (Collection) v); } else if (v instanceof XMLizable) { XSPObjectHelper.xspExpr(this.contentHandler, (XMLizable) v); } else if (v instanceof Node) { XSPObjectHelper.xspExpr(this.contentHandler, (Node) v); } else if (v instanceof Object) { XSPObjectHelper.xspExpr(this.contentHandler, (Object) v); } } // XSPRequestHelper public void getLocale() throws SAXException { XSPRequestHelper.getLocale(this.objectModel, this.contentHandler); } public Locale[] getLocalesAsArray() { return XSPRequestHelper.getLocales(this.objectModel); } public void getLocalesAsXML() throws SAXException { XSPRequestHelper.getLocale(this.objectModel, this.contentHandler); } public String getParameter(String name, String defaultValue) { return XSPRequestHelper.getParameter(this.objectModel, name, defaultValue); } public String getParameter(String name, String defaultValue, String form_encoding, String container_encoding) { return XSPRequestHelper.getParameter(this.objectModel, name, defaultValue, form_encoding, container_encoding); } public void getParameterAsXML(String name, String defaultValue, String form_encoding, String container_encoding) throws SAXException { XSPRequestHelper.getParameter(this.objectModel, this.contentHandler, name, defaultValue, form_encoding, container_encoding); } public void getParameterValuesAsXML(String name, String form_encoding, String container_encoding) throws SAXException { XSPRequestHelper.getParameterValues(this.objectModel, this.contentHandler, name, form_encoding, container_encoding); } public String[] getParameterValues(String name, String form_encoding, String container_encoding) { return XSPRequestHelper.getParameterValues(this.objectModel, name, form_encoding, container_encoding); } public String[] getParameterNames() { return XSPRequestHelper.getParameterNames(this.objectModel); } public void getParameterNamesAsXML() throws SAXException { XSPRequestHelper.getParameterNames(this.objectModel, this.contentHandler); } public void getHeaderNamesAsXML() throws SAXException { XSPRequestHelper.getHeaderNames(this.objectModel, this.contentHandler); } public String[] getHeaderNames() { return XSPRequestHelper.getHeaderNames(this.objectModel); } public String[] getHeaders(String name) { return XSPRequestHelper.getHeaders(this.objectModel, name); } public void getHeadersAsXML(String name) throws SAXException { XSPRequestHelper.getHeaders(this.objectModel, name, this.contentHandler); } public Date getDateHeader(String name) { return XSPRequestHelper.getDateHeader(this.objectModel, name); } public String getDateHeader(String name, String format) { return XSPRequestHelper.getDateHeader(this.objectModel, name, format); } public void getAttributeNames(ContentHandler contentHandler) throws SAXException { XSPRequestHelper.getAttributeNames(this.objectModel, contentHandler); } public String[] getAttributeNames() { return XSPRequestHelper.getAttributeNames(this.objectModel); } public String getRequestedURL() { return XSPRequestHelper.getRequestedURL(this.objectModel); } // XSPResponseHelper public void setHeader(String name, String value) { XSPResponseHelper.setHeader(this.objectModel, name, value); } public void addHeader(String name, String value) { XSPResponseHelper.addHeader(this.objectModel, name, value); } public String encodeURL(String input) { return XSPResponseHelper.encodeURL(this.objectModel, input); } } 1.1 xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/xsp/javascript/request.xsl Index: request.xsl =================================================================== <?xml version="1.0"?> <!-- ***************************************************************************** * Copyright (C) The Apache Software Foundation. All rights reserved. * * _________________________________________________________________________ * * This software is published under the terms of the Apache Software License * * version 1.1, a copy of which has been included with this distribution in * * the LICENSE file. * ***************************************************************************** --> <!-- * @author <a href="mailto:[EMAIL PROTECTED]>Ricardo Rocha</a> * @author <a href="mailto:[EMAIL PROTECTED]>Vadim Gritsenko</a> * @version CVS $Revision: 1.1 $ $Date: 2002/02/09 04:16:38 $ --> <!-- XSP Request logicsheet for the Javascript language --> <xsl:stylesheet version="1.0" xmlns:xsp="http://apache.org/xsp" xmlns:xsp-request="http://apache.org/xsp/request/2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="xsp-request:get-uri"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>(request.getRequestURI())</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <!-- <xsp-request:uri> --> <xsp:element name="xsp-request:uri"> <xsp:expr>request.getRequestURI()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-sitemap-uri"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>(request.getSitemapURI())</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <!-- <xsp-request:sitemap-uri> --> <xsp:element name="xsp-request:sitemap-uri"> <xsp:expr>request.getSitemapURI()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-scheme"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>(request.getScheme())</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:scheme"> <xsp:expr>request.getScheme()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-character-encoding"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>(request.getCharacterEncoding())</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:character-encoding"> <xsp:expr>request.getCharacterEncoding()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-content-length"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'int'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'int'"> <xsp:expr>(request.getContentLength())</xsp:expr> </xsl:when> <xsl:when test="$as = 'string'"> <xsp:expr>String(request.getContentLength())</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:content-length"> <xsp:expr>request.getContentLength()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-content-type"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>request.getContentType()</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:content-type"> <xsp:expr>request.getContentType()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-locale"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'object'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'object'"> <xsp:expr>(request.getLocale())</xsp:expr> </xsl:when> <xsl:when test="$as = 'string'"> <xsp:expr>String(request.getLocale())</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:logic> page.getLocale(); </xsp:logic> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-locales"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'xml'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'array'"> <xsp:expr>page.getLocalesAsArray()</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:logic> page.getLocalesAsXML(); </xsp:logic> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-parameter"> <xsl:variable name="name"> <xsl:call-template name="value-for-name"/> </xsl:variable> <xsl:variable name="default"> <xsl:choose> <xsl:when test="@default">"<xsl:value-of select="@default"/>"</xsl:when> <xsl:when test="xsp-request:default"> <xsl:call-template name="get-nested-content"> <xsl:with-param name="content" select="xsp-request:default"/> </xsl:call-template> </xsl:when> <xsl:otherwise>null</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="form-encoding"> <xsl:call-template name="value-for-form-encoding"/> </xsl:variable> <xsl:variable name="container-encoding"> <xsl:call-template name="value-for-container-encoding"/> </xsl:variable> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr> (page.getParameter(<xsl:copy-of select="$name"/>, <xsl:copy-of select="$default"/>, <xsl:copy-of select="$form-encoding"/>, <xsl:copy-of select="$container-encoding"/>)) </xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <!-- <xsp-request:parameter name="..."> --> <xsp:logic> page.getParameterAsXML(<xsl:copy-of select="$name"/>, <xsl:copy-of select="$default"/>, <xsl:copy-of select="$form-encoding"/>, <xsl:copy-of select="$container-encoding"/>); </xsp:logic> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-parameter-values"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'xml'"/> </xsl:call-template> </xsl:variable> <xsl:variable name="name"> <xsl:call-template name="value-for-name"/> </xsl:variable> <xsl:variable name="form-encoding"> <xsl:call-template name="value-for-form-encoding"/> </xsl:variable> <xsl:variable name="container-encoding"> <xsl:call-template name="value-for-container-encoding"/> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'array'"> <xsp:expr> (page.getParameterValues(<xsl:copy-of select="$name"/>, <xsl:copy-of select="$form-encoding"/>, <xsl:copy-of select="$container-encoding"/>)) </xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <!-- <xsp-request:parameter-values name="..."> --> <xsp:logic> page.getParameterValuesAsXML(<xsl:copy-of select="$name"/>, <xsl:copy-of select="$form-encoding"/>, <xsl:copy-of select="$container-encoding"/>); </xsp:logic> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-parameter-names"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'xml'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'array'"> <xsp:expr> (page.getParameterNames()) </xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:logic> page.getParameterNamesAsXML(); </xsp:logic> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-header"> <xsl:variable name="name"> <xsl:call-template name="value-for-name"/> </xsl:variable> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>request.getHeader(<xsl:copy-of select="$name"/>)</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:header"> <xsp:attribute name="name"> <xsp:expr><xsl:copy-of select="$name"/></xsp:expr> </xsp:attribute> <xsp:expr>request.getHeader(<xsl:copy-of select="$name"/>)</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-int-header"> <xsl:variable name="name"> <xsl:call-template name="value-for-name"/> </xsl:variable> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'int'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'int'"> <xsp:expr>request.getIntHeader(<xsl:copy-of select="$name"/>)</xsp:expr> </xsl:when> <xsl:when test="$as = 'string'"> <xsp:expr>String(request.getIntHeader(<xsl:copy-of select="$name"/>))</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:int-header"> <xsp:attribute name="name"> <xsp:expr><xsl:copy-of select="$name"/></xsp:expr> </xsp:attribute> <xsp:expr>request.getIntHeader(<xsl:copy-of select="$name"/>)</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-date-header"> <xsl:variable name="name"> <xsl:call-template name="value-for-name"/> </xsl:variable> <xsl:variable name="format"> <xsl:call-template name="value-for-format"/> </xsl:variable> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'object'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'object'"> <xsp:expr>page.getDateHeader(<xsl:copy-of select="$name"/>)</xsp:expr> </xsl:when> <xsl:when test="$as = 'long'"> <xsp:expr>request.getDateHeader(<xsl:copy-of select="$name"/>)</xsp:expr> </xsl:when> <xsl:when test="$as = 'string'"> <xsp:expr>page.getDateHeader(<xsl:copy-of select="$name"/>, <xsl:copy-of select="$format"/>))</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:date-header"> <xsp:attribute name="name"> <xsp:expr><xsl:copy-of select="$name"/></xsp:expr> </xsp:attribute> <xsp:expr>page.getDateHeader(<xsl:copy-of select="$name"/>, <xsl:copy-of select="$format"/>))</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-header-names"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'xml'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'array'"> <xsp:expr>(page.getHeaderNames())</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:logic> page.getHeaderNamesAsXML(); </xsp:logic> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-headers"> <xsl:variable name="name"> <xsl:call-template name="value-for-name"/> </xsl:variable> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'xml'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'array'"> <xsp:expr> (page.getHeaders(<xsl:copy-of select="$name"/>)) </xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:logic> page.getHeadersAsXML(<xsl:copy-of select="$name"/>); </xsp:logic> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-attribute"> <xsl:variable name="name"> <xsl:call-template name="value-for-name"/> </xsl:variable> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'object'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'object'"> <xsp:expr>request.getAttribute(<xsl:copy-of select="$name"/>)</xsp:expr> </xsl:when> <xsl:when test="$as = 'string'"> <xsp:expr> String(request.getAttribute(<xsl:copy-of select="$name"/>)) </xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:attribute"> <xsp:attribute name="name" value="{$name}"/> <xsp:expr>request.getAttribute(<xsl:copy-of select="$name"/>)</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:set-attribute"> <xsl:variable name="name"> <xsl:call-template name="value-for-name"/> </xsl:variable> <xsl:variable name="content"> <xsl:call-template name="get-nested-content"> <xsl:with-param name="content" select="*|text()"/> </xsl:call-template> </xsl:variable> <xsp:logic> request.setAttribute(String(<xsl:copy-of select="$name"/>), <xsl:copy-of select="$content"/>); </xsp:logic> </xsl:template> <xsl:template match="xsp-request:get-attribute-names"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'xml'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'array'"> <xsp:expr> (page.getAttributeNames()) </xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:logic> page.getAttributeNames(this.contentHandler); </xsp:logic> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:remove-attribute"> <xsl:variable name="name"> <xsl:call-template name="value-for-name"/> </xsl:variable> <xsp:logic> request.removeAttribute(<xsl:copy-of select="$name"/>); </xsp:logic> </xsl:template> <xsl:template match="xsp-request:get-requested-url"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>page.getRequestedURL()</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:requested-url"> <xsp:expr>page.getRequestedURL()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-remote-address"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>request.getRemoteAddr()</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:remote-addres"> <xsp:expr>request.getRemoteAddr()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-remote-user"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>request.getRemoteUser()</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:remote-user"> <xsp:expr>request.getRemoteUser()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-context-path"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>request.getContextPath()</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:context-path"> <xsp:expr>request.getContextPath()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-path-info"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>request.getPathInfo()</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:path-info"> <xsp:expr>request.getPathInfo()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-server-name"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>request.getServerName()</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:server-name"> <xsp:expr>request.getServerName()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-server-port"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'int'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'int'"> <xsp:expr>request.getServerPort()</xsp:expr> </xsl:when> <xsl:when test="$as = 'string'"> <xsp:expr>String(request.getServerPort())</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:server-port"> <xsp:expr>request.getServerPort()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-method"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>request.getMethod()</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:method"> <xsp:expr>request.getMethod()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-query-string"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>request.getQueryString()</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:query-string"> <xsp:expr>request.getQueryString()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-protocol"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>request.getProtocol()</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:protocol"> <xsp:expr>request.getProtocol()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-remote-host"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>request.getRemoteHost()</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:remote-host"> <xsp:expr>request.getRemoteHost()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:is-secure"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'boolean'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'boolean'"> <xsp:expr>request.isSecure()</xsp:expr> </xsl:when> <xsl:when test="$as = 'string'"> <xsp:expr>String(request.isSecure())</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:secure"> <xsp:expr>request.isSecure()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-path-translated"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>request.getPathTranslated()</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:path-translated"> <xsp:expr>request.getPathTranslated()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-servlet-path"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>request.getServletPath()</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:servlet-path"> <xsp:expr>request.getServletPath()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-user-principal"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'object'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>String(request.getUserPrincipal())</xsp:expr> </xsl:when> <xsl:when test="$as = 'object'"> <xsp:expr>request.getUserPrincipal()</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:user-principal"> <xsp:expr>request.getUserPrincipal()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-auth-type"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>request.getAuthType()</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:auth-type"> <xsp:expr>request.getAuthType()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:is-user-in-role"> <xsl:variable name="role"> <xsl:call-template name="value-for-role"/> </xsl:variable> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'boolean'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'boolean'"> <xsp:expr>request.isUserInRole(<xsl:copy-of select="$role"/>)</xsp:expr> </xsl:when> <xsl:when test="$as = 'string'"> <xsp:expr>String(request.isUserInRole(<xsl:copy-of select="$role"/>))</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:user-in-role"> <xsp:attribute name="role"> <xsp:expr><xsl:copy-of select="$role"/></xsp:expr> </xsp:attribute> <xsp:expr>request.isUserInRole(<xsl:copy-of select="$role"/>)</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-requested-session-id"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>request.getRequestedSessionId()</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <xsp:element name="xsp-request:requested-session-id"> <xsp:expr>request.getRequestedSessionId()</xsp:expr> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <!-- ============== Session Related ============== --> <xsl:template match="xsp-request:get-session-attribute"> <xsl:variable name="name"> <xsl:call-template name="value-for-name"/> </xsl:variable> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:variable name="default"> <xsl:choose> <xsl:when test="@default">"<xsl:value-of select="@default"/>"</xsl:when> <xsl:when test="xsp-request:default"> <xsl:call-template name="get-nested-content"> <xsl:with-param name="content" select="xsp-request:default"/> </xsl:call-template> </xsl:when> <xsl:otherwise>null</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr> (page.getSessionAttribute(<xsl:copy-of select="$name"/>, <xsl:copy-of select="$default"/>)) </xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <!-- <xsp-request:session-attribute name="..."> --> <xsp:logic> page.getSessionAttribute(this.contentHandler, <xsl:copy-of select="$name"/>, <xsl:copy-of select="$default"/>); </xsp:logic> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="xsp-request:get-session-id"> <xsl:variable name="as"> <xsl:call-template name="value-for-as"> <xsl:with-param name="default" select="'string'"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$as = 'string'"> <xsp:expr>(page.getSessionId())</xsp:expr> </xsl:when> <xsl:when test="$as = 'xml'"> <!-- <xsp-request:session-id> --> <xsp:element name="xsp-request:session-id"> <xsp:logic> page.getSessionId(this.contentHandler); </xsp:logic> </xsp:element> </xsl:when> </xsl:choose> </xsl:template> <!-- Supporting templates --> <xsl:template name="value-for-as"> <xsl:param name="default"/> <xsl:choose> <xsl:when test="@as"><xsl:value-of select="@as"/></xsl:when> <xsl:otherwise><xsl:value-of select="$default"/></xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="value-for-name"> <xsl:choose> <xsl:when test="@name">"<xsl:value-of select="@name"/>"</xsl:when> <xsl:when test="xsp-request:name"> <xsl:call-template name="get-nested-content"> <xsl:with-param name="content" select="xsp-request:name"/> </xsl:call-template> </xsl:when> <xsl:otherwise>null</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="value-for-role"> <xsl:choose> <xsl:when test="@role">"<xsl:value-of select="@role"/>"</xsl:when> <xsl:when test="xsp-request:role"> <xsl:call-template name="get-nested-content"> <xsl:with-param name="content" select="xsp-request:role"/> </xsl:call-template> </xsl:when> <xsl:otherwise>null</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="value-for-format"> <xsl:choose> <xsl:when test="@format">"<xsl:value-of select="@format"/>"</xsl:when> <xsl:when test="xsp-request:format"> <xsl:call-template name="get-nested-content"> <xsl:with-param name="content" select="xsp-request:format"/> </xsl:call-template> </xsl:when> <xsl:otherwise>null</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="value-for-form-encoding"> <xsl:choose> <xsl:when test="@form-encoding">"<xsl:value-of select="@form-encoding"/>"</xsl:when> <xsl:when test="xsp-request:form-encoding"> <xsl:call-template name="get-nested-content"> <xsl:with-param name="content" select="xsp-request:form-encoding"/> </xsl:call-template> </xsl:when> <xsl:otherwise>null</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="value-for-container-encoding"> <xsl:choose> <xsl:when test="@container-encoding">"<xsl:value-of select="@container-encoding"/>"</xsl:when> <xsl:when test="xsp-request:container-encoding"> <xsl:call-template name="get-nested-content"> <xsl:with-param name="content" select="xsp-request:container-encoding"/> </xsl:call-template> </xsl:when> <xsl:otherwise>null</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="get-nested-content"> <xsl:param name="content"/> <xsl:choose> <xsl:when test="$content/*"> <xsl:apply-templates select="$content/*"/> </xsl:when> <xsl:otherwise>"<xsl:value-of select="$content"/>"</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="@*|*|text()|processing-instruction()"> <xsl:copy> <xsl:apply-templates select="@*|*|text()|processing-instruction()"/> </xsl:copy> </xsl:template> <xsl:template match="xsp-request:name"/> <xsl:template match="xsp-request:default"/> <xsl:template match="xsp-request:form-encoding"/> <xsl:template match="xsp-request:container-encoding"/> </xsl:stylesheet> 1.1 xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/xsp/javascript/response.xsl Index: response.xsl =================================================================== <?xml version="1.0"?> <!-- ***************************************************************************** * Copyright (C) The Apache Software Foundation. All rights reserved. * * _________________________________________________________________________ * * This software is published under the terms of the Apache Software License * * version 1.1, a copy of which has been included with this distribution in * * the LICENSE file. * ***************************************************************************** --> <!-- * @author <a href="mailto:[EMAIL PROTECTED]>Vadim Gritsenko</a> * @version CVS $Revision: 1.1 $ $Date: 2002/02/09 04:16:38 $ --> <!-- XSP Response logicsheet for the Javascript language --> <xsl:stylesheet version="1.0" xmlns:xsp="http://apache.org/xsp" xmlns:xsp-response="http://apache.org/xsp/response/2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:template match="xsp-response:set-header"> <xsl:variable name="name"> <xsl:choose> <xsl:when test="@name">"<xsl:value-of select="@name"/>"</xsl:when> <xsl:when test="xsp-response:name"> <xsl:call-template name="get-nested-content"> <xsl:with-param name="content" select="xsp-response:name"/> </xsl:call-template> </xsl:when> </xsl:choose> </xsl:variable> <xsl:variable name="value"> <xsl:choose> <xsl:when test="@value">"<xsl:value-of select="@value"/>"</xsl:when> <xsl:when test="xsp-response:value"> <xsl:call-template name="get-nested-content"> <xsl:with-param name="content" select="xsp-response:value"/> </xsl:call-template> </xsl:when> <xsl:otherwise>""</xsl:otherwise> </xsl:choose> </xsl:variable> <xsp:logic> page.setHeader(<xsl:value-of select="$name"/>, <xsl:value-of select="$value"/>); </xsp:logic> </xsl:template> <xsl:template name="get-nested-content"> <xsl:param name="content"/> <xsl:choose> <xsl:when test="$content/*"> <xsl:apply-templates select="$content/*"/> </xsl:when> <xsl:otherwise>"<xsl:value-of select="$content"/>"</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="@*|*|text()|processing-instruction()"> <xsl:copy> <xsl:apply-templates select="@*|*|text()|processing-instruction()"/> </xsl:copy> </xsl:template> </xsl:stylesheet> 1.1 xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/xsp/javascript/xsp.xsl Index: xsp.xsl =================================================================== <?xml version="1.0"?> <!-- ***************************************************************************** * Copyright (C) The Apache Software Foundation. All rights reserved. * * _________________________________________________________________________ * * This software is published under the terms of the Apache Software License * * version 1.1, a copy of which has been included with this distribution in * * the LICENSE file. * ***************************************************************************** --> <!-- * @author <a href="mailto:[EMAIL PROTECTED]>Vadim Gritsenko</a> * @version CVS $Revision: 1.1 $ $Date: 2002/02/09 04:16:38 $ --> <!-- XSP Core logicsheet for the JavaScript language --> <xsl:stylesheet version="1.0" xmlns:xsp="http://apache.org/xsp" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:XSLTExtension="org.apache.cocoon.components.language.markup.xsp.java.XSLTExtension"> <xsl:output method="text"/> <xsl:variable name="xsp-uri" select="'http://apache.org/xsp'"/> <!-- this variable holds the instance of extension class to properly escape text into Java strings ovidiu: use the class name as the namespace to identify the class. This is supposedly portable across XSLT implementations. --> <xsl:variable name="extension" select="XSLTExtension:new()" xmlns:XSLTExtension="org.apache.cocoon.components.language.markup.xsp.java.XSLTExtension"/> <xsl:template match="/"> <code xml:space="preserve">// $Cocoon extends: org.apache.cocoon.components.language.markup.xsp.JSGenerator$ <xsl:apply-templates select="xsp:page"/> </code> </xsl:template> <xsl:template match="xsp:page"> // Generated by XSP. Edit at your own risk, :-) function getDependencies() { <xsl:text>return "</xsl:text> <xsl:for-each select="//xsp:dependency"> <xsl:value-of select="translate(., '\','/')"/><xsl:text>;</xsl:text> </xsl:for-each> <xsl:text>";</xsl:text> } /* Built-in beans not available for use */ // page - "this" in Java // logger - Logger // contentHandler - page.contentHandler // jsAttr - AttributesImpl /* Built-in parameters available for use */ // objectModel - Map // context - ServletContext // request - Request // response - Response // resolver - SourceResolver // parameters - Parameters defined in the sitemap // User Class "Declarations" <xsl:apply-templates select="xsp:logic"/> // User Class Initialization <xsl:value-of select="xsp:init-page"/> contentHandler.startDocument(); <!-- Generate top-level processing instructions --> <xsl:apply-templates select="/processing-instruction()"/> <!-- Process only 1st non-XSP element as generated root --> <xsl:call-template name="process-first-element"> <xsl:with-param name="content" select="*[not(namespace-uri(.) = $xsp-uri)][1]"/> </xsl:call-template> contentHandler.endDocument(); </xsl:template> <xsl:template name="process-first-element"> <xsl:param name="content"/> <!-- Generate top-level namespaces declarations --> <xsl:variable name="parent-element" select="$content/.."/> <xsl:for-each select="$content/namespace::*"> <xsl:variable name="ns-prefix" select="local-name(.)"/> <xsl:variable name="ns-uri" select="string(.)"/> <!-- Declare namespaces that also exist on the parent (i.e. not locally declared), and filter out "xmlns:xmlns" namespace produced by Xerces+Saxon --> <xsl:if test="($ns-prefix != 'xmlns') and $parent-element/namespace::*[local-name(.) = $ns-prefix and string(.) = $ns-uri]"> contentHandler.startPrefixMapping("<xsl:value-of select="$ns-prefix"/>", "<xsl:value-of select="$ns-uri"/>"); </xsl:if> </xsl:for-each> <!-- Generate content --> <xsl:apply-templates select="$content"/> <!-- Close top-level namespaces declarations--> <xsl:for-each select="$content/namespace::*"> <xsl:variable name="ns-prefix" select="local-name(.)"/> <xsl:variable name="ns-uri" select="string(.)"/> <xsl:if test="($ns-prefix != 'xmlns') and $parent-element/namespace::*[local-name(.) = $ns-prefix and string(.) = $ns-uri]"> contentHandler.endPrefixMapping("<xsl:value-of select="local-name(.)"/>"); </xsl:if> </xsl:for-each> </xsl:template> <xsl:template match="xsp:element"> <xsl:variable name="uri"> <xsl:call-template name="get-parameter"> <xsl:with-param name="name">uri</xsl:with-param> </xsl:call-template> </xsl:variable> <xsl:variable name="prefix"> <xsl:call-template name="get-parameter"> <xsl:with-param name="name">prefix</xsl:with-param> </xsl:call-template> </xsl:variable> <xsl:variable name="name"> <xsl:call-template name="get-parameter"> <xsl:with-param name="name">name</xsl:with-param> <xsl:with-param name="required">true</xsl:with-param> </xsl:call-template> </xsl:variable> <xsl:variable name="raw-name"> <xsl:if test=" ($uri = '""' and $prefix != '""') or ($uri != '""' and $prefix = '""') "> <xsl:call-template name="error"> <xsl:with-param name="message">[<xsp:element>] Either both 'uri' and 'prefix' or none of them must be specified </xsl:with-param> </xsl:call-template> </xsl:if> <xsl:choose> <xsl:when test="$prefix = '""'"> <xsl:copy-of select="$name"/> </xsl:when> <xsl:otherwise> (<xsl:copy-of select="$prefix"/> + ":" + <xsl:copy-of select="$name"/>) </xsl:otherwise> </xsl:choose> </xsl:variable> <!-- Declare namespaces that are not already present on the parent element. Note : we could use "../../namespace::*[...]" to get parent element namespaces but Xalan 2.0.1 retunrs only the first namespace (Saxon is OK). That's why we store the parent element in a variable --> <xsl:variable name="parent-element" select=".."/> <xsl:for-each select="namespace::*"> <xsl:variable name="ns-prefix" select="local-name(.)"/> <xsl:variable name="ns-uri" select="string(.)"/> <xsl:if test="not($parent-element/namespace::*[local-name(.) = $ns-prefix and string(.) = $ns-uri])"> contentHandler.startPrefixMapping("<xsl:value-of select="local-name(.)"/>", "<xsl:value-of select="."/>"); </xsl:if> </xsl:for-each> <xsl:apply-templates select="xsp:attribute | xsp:logic[xsp:attribute]"/> contentHandler.startElement(<xsl:copy-of select="$uri"/>, <xsl:copy-of select="$name"/>, <xsl:copy-of select="$raw-name"/>, jsAttr); jsAttr.clear(); <xsl:apply-templates select="node()[not( (namespace-uri(.) = $xsp-uri and local-name(.) = 'attribute') or (namespace-uri(.) = $xsp-uri and local-name(.) = 'logic' and ./xsp:attribute) )]"/> contentHandler.endElement(<xsl:copy-of select="$uri"/>, <xsl:copy-of select="$name"/>, <xsl:copy-of select="$raw-name"/>); <xsl:for-each select="namespace::*"> <xsl:variable name="ns-prefix" select="local-name(.)"/> <xsl:variable name="ns-uri" select="string(.)"/> <xsl:if test="not($parent-element/namespace::*[local-name(.) = $ns-prefix and string(.) = $ns-uri])"> contentHandler.endPrefixMapping("<xsl:value-of select="local-name(.)"/>"); </xsl:if> </xsl:for-each> </xsl:template> <xsl:template match="xsp:attribute"> <xsl:variable name="uri"> <xsl:call-template name="get-parameter"> <xsl:with-param name="name">uri</xsl:with-param> </xsl:call-template> </xsl:variable> <xsl:variable name="prefix"> <xsl:call-template name="get-parameter"> <xsl:with-param name="name">prefix</xsl:with-param> </xsl:call-template> </xsl:variable> <xsl:variable name="name"> <xsl:call-template name="get-parameter"> <xsl:with-param name="name">name</xsl:with-param> <xsl:with-param name="required">true</xsl:with-param> </xsl:call-template> </xsl:variable> <xsl:variable name="raw-name"> <xsl:if test=" ($uri = '""' and $prefix != '""') or ($uri != '""' and $prefix = '""') "> <xsl:call-template name="error"> <xsl:with-param name="message">[<xsp:attribute>] Either both 'uri' and 'prefix' or none of them must be specified </xsl:with-param> </xsl:call-template> </xsl:if> <xsl:choose> <xsl:when test="$prefix = '""'"> <xsl:copy-of select="$name"/> </xsl:when> <xsl:otherwise> (<xsl:copy-of select="$prefix"/> + ":" + <xsl:copy-of select="$name"/>) </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="content"> <xsl:for-each select="text()|xsp:expr|xsp:text"> <xsl:if test="position() > 1"> + </xsl:if> <xsl:choose> <xsl:when test="namespace-uri(.) = $xsp-uri and local-name(.) = 'expr'"> (<xsl:value-of select="."/>) </xsl:when> <xsl:otherwise> "<xsl:value-of select="."/>" </xsl:otherwise> </xsl:choose> </xsl:for-each> <xsl:if test="not(text()|xsp:expr|xsp:text)"> "" </xsl:if> </xsl:variable> jsAttr.addAttribute(<xsl:copy-of select="$uri"/>, <xsl:copy-of select="$name"/>, <xsl:copy-of select="$raw-name"/>, "CDATA", <xsl:value-of select="normalize-space($content)"/>); </xsl:template> <xsl:template match="xsp:expr"> <xsl:choose> <xsl:when test="namespace-uri(..) = $xsp-uri and local-name(..) != 'content' and local-name(..) != 'element'"> <!-- Expression is nested inside another XSP tag: preserve its Java type --> (<xsl:value-of select="."/>) </xsl:when> <xsl:when test="string-length(.) = 0"> <!-- Do nothing --> </xsl:when> <xsl:otherwise> <!-- Output the value as elements or character data depending on its type --> page.jsExpr(<xsl:value-of select="."/>); </xsl:otherwise> </xsl:choose> </xsl:template> <!-- FIXME: Is this _really_ necessary? --> <xsl:template match="xsp:content"> <xsl:apply-templates/> </xsl:template> <xsl:template match="xsp:logic"> <xsl:apply-templates/> </xsl:template> <xsl:template match="xsp:pi"> <xsl:variable name="target"> <xsl:call-template name="get-parameter"> <xsl:with-param name="name">target</xsl:with-param> </xsl:call-template> </xsl:variable> <xsl:variable name="content"> <xsl:for-each select="text()|xsp:expr"> <xsl:choose> <xsl:when test="namespace-uri(.) = $xsp-uri and local-name(.) = 'expr'"> String(<xsl:value-of select="."/>) </xsl:when> <xsl:otherwise> "<xsl:value-of select="."/>" </xsl:otherwise> </xsl:choose> <xsp:text> + </xsp:text> </xsl:for-each> "" </xsl:variable> contentHandler.processingInstruction(<xsl:copy-of select="$target"/>, <xsl:value-of select="normalize-space($content)"/>); </xsl:template> <!-- FIXME: How to create comments in SAX? --> <xsl:template match="xsp:comment"> page.jsComment("<xsl:value-of select="."/>"); </xsl:template> <xsl:template match="*[not(namespace-uri(.) = $xsp-uri)]"> <xsl:variable name="parent-element" select=".."/> <xsl:for-each select="namespace::*"> <xsl:variable name="ns-prefix" select="local-name(.)"/> <xsl:variable name="ns-uri" select="string(.)"/> <xsl:if test="not($parent-element/namespace::*[local-name(.) = $ns-prefix and string(.) = $ns-uri])"> contentHandler.startPrefixMapping("<xsl:value-of select="local-name(.)"/>", "<xsl:value-of select="."/>"); </xsl:if> </xsl:for-each> <xsl:apply-templates select="@*"/> <xsl:apply-templates select="xsp:attribute | xsp:logic[xsp:attribute]"/> contentHandler.startElement("<xsl:value-of select="namespace-uri(.)"/>", "<xsl:value-of select="local-name(.)"/>", "<xsl:value-of select="name(.)"/>", jsAttr); jsAttr.clear(); <xsl:apply-templates select="node()[not( (namespace-uri(.) = $xsp-uri and local-name(.) = 'attribute') or (namespace-uri(.) = $xsp-uri and local-name(.) = 'logic' and ./xsp:attribute) )]"/> contentHandler.endElement("<xsl:value-of select="namespace-uri(.)"/>", "<xsl:value-of select="local-name(.)"/>", "<xsl:value-of select="name(.)"/>"); <xsl:for-each select="namespace::*"> <xsl:variable name="ns-prefix" select="local-name(.)"/> <xsl:variable name="ns-uri" select="string(.)"/> <xsl:if test="not($parent-element/namespace::*[local-name(.) = $ns-prefix and string(.) = $ns-uri])"> contentHandler.endPrefixMapping("<xsl:value-of select="local-name(.)"/>"); </xsl:if> </xsl:for-each> </xsl:template> <xsl:template match="@*"> <!-- Filter out namespace declaration attributes --> <xsl:if test="not(starts-with(name(.), 'xmlns:'))"> jsAttr.addAttribute("<xsl:value-of select="namespace-uri(.)"/>", "<xsl:value-of select="local-name(.)"/>", "<xsl:value-of select="name(.)"/>", "CDATA", "<xsl:value-of select="."/>"); </xsl:if> </xsl:template> <xsl:template match="text()"> <xsl:choose> <xsl:when test="namespace-uri(..) = $xsp-uri and (local-name(..) = 'logic' or local-name(..) = 'expr')"> <xsl:value-of select="."/> </xsl:when> <xsl:otherwise> page.jsCharacters("<xsl:value-of select="XSLTExtension:escape($extension, .)"/>"); </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="text()" mode="value"> <xsl:value-of select="."/> </xsl:template> <xsl:template match="processing-instruction()"> contentHandler.processingInstruction("<xsl:value-of select="name()"/>", "<xsl:value-of select="."/>"); </xsl:template> <!-- Utility templates --> <xsl:template name="get-parameter"> <xsl:param name="name"/> <xsl:param name="default"/> <xsl:param name="required">false</xsl:param> <xsl:choose> <xsl:when test="@*[name(.) = $name]">"<xsl:value-of select="@*[name(.) = $name]"/>"</xsl:when> <xsl:when test="(*[namespace-uri(.)=$xsp-uri and local-name(.) = 'param'])[@name = $name]"> <xsl:call-template name="get-nested-content"> <xsl:with-param name="content" select="(*[namespace-uri(.)=$xsp-uri and local-name(.) = 'param'])[@name = $name]"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:choose> <xsl:when test="string-length($default) = 0"> <xsl:choose> <xsl:when test="$required = 'true'"> <xsl:call-template name="error"> <xsl:with-param name="message">[Logicsheet processor] Parameter '<xsl:value-of select="$name"/>' missing in dynamic tag <<xsl:value-of select="name(.)"/>> </xsl:with-param> </xsl:call-template> </xsl:when> <xsl:otherwise>""</xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise><xsl:copy-of select="$default"/></xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="get-nested-content"> <xsl:param name="content"/> <xsl:choose> <xsl:when test="$content/*"> <xsl:apply-templates select="$content/*"/> </xsl:when> <xsl:otherwise>"<xsl:value-of select="$content"/>"</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="error"> <xsl:param name="message"/> <xsl:message terminate="yes"><xsl:value-of select="$message"/></xsl:message> </xsl:template> <!-- Ignored elements --> <xsl:template match="xsp:logicsheet|xsp:dependency|xsp:param"/> </xsl:stylesheet> 1.25 +22 -2 xml-cocoon2/src/webapp/cocoon.xconf Index: cocoon.xconf =================================================================== RCS file: /home/cvs/xml-cocoon2/src/webapp/cocoon.xconf,v retrieving revision 1.24 retrieving revision 1.25 diff -u -r1.24 -r1.25 --- cocoon.xconf 9 Feb 2002 03:13:03 -0000 1.24 +++ cocoon.xconf 9 Feb 2002 04:16:39 -0000 1.25 @@ -188,8 +188,7 @@ <parameter name="xscript:value-of" value="resource://org/apache/cocoon/components/xscript/xslt/value-of.xsl"/> </xscript> - <!-- Programming Languages: - --> + <!-- Programming Languages: --> <programming-languages> <java-language name="java" logger="core.language.java"> <!-- Compiler parameter specifies which class to use to compile Java. @@ -206,6 +205,10 @@ <!-- A singleton-like implementation of a ClassLoader --> <parameter name="class-loader" value="org.apache.cocoon.components.classloader.ClassLoaderManagerImpl"/> </java-language> + + <!-- Interpreted JavaScript language --> + <js-language name="js" logger="core.language.js"/> + </programming-languages> <!-- Class loader: @@ -329,6 +332,23 @@ </builtin-logicsheet> </target-language> + + <target-language name="js"> + <parameter name="core-logicsheet" value="resource://org/apache/cocoon/components/language/markup/xsp/javascript/xsp.xsl"/> + + <builtin-logicsheet> + <parameter name="prefix" value="xsp-request"/> + <parameter name="uri" value="http://apache.org/xsp/request/2.0"/> + <parameter name="href" value="resource://org/apache/cocoon/components/language/markup/xsp/javascript/request.xsl"/> + </builtin-logicsheet> + + <builtin-logicsheet> + <parameter name="prefix" value="xsp-response"/> + <parameter name="uri" value="http://apache.org/xsp/response/2.0"/> + <parameter name="href" value="resource://org/apache/cocoon/components/language/markup/xsp/javascript/response.xsl"/> + </builtin-logicsheet> + </target-language> + </xsp-language> <!-- Defines Sitemap Core logicsheet for the Java language --> 1.25 +11 -0 xml-cocoon2/src/webapp/sitemap.xmap Index: sitemap.xmap =================================================================== RCS file: /home/cvs/xml-cocoon2/src/webapp/sitemap.xmap,v retrieving revision 1.24 retrieving revision 1.25 diff -u -r1.24 -r1.25 --- sitemap.xmap 4 Feb 2002 02:30:35 -0000 1.24 +++ sitemap.xmap 9 Feb 2002 04:16:39 -0000 1.25 @@ -909,6 +909,17 @@ <map:serialize/> </map:match> + <map:match pattern="xsp-js/*"> + <!-- XSP pages written in Javascript --> + <map:generate type="serverpages" src="docs/samples/xsp-js/{1}.xsp"> + <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> + <map:serialize/> + </map:match> + <map:match pattern="xsp-plain/*"> <map:generate type="serverpages" src="docs/samples/xsp/{1}.xsp"/> <map:serialize/> 1.2 +7 -1 xml-cocoon2/src/webapp/docs/samples/xsp/logicsheet.xsp Index: logicsheet.xsp =================================================================== RCS file: /home/cvs/xml-cocoon2/src/webapp/docs/samples/xsp/logicsheet.xsp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- logicsheet.xsp 3 Feb 2002 01:22:55 -0000 1.1 +++ logicsheet.xsp 9 Feb 2002 04:16:39 -0000 1.2 @@ -2,8 +2,10 @@ <!-- XSP can be assotiated with the logicsheet using processing instruction xml-logicsheet or the xsp:logicsheet element. + Do not use both methods! <?xml-logicsheet href="logicsheets/hello.xsl"?> + --> <xsp:page language="java" @@ -12,8 +14,12 @@ xmlns:xsp-hello="http://apache.org/xsp/hello/1.0" ><xsp:logicsheet location="logicsheets/hello.xsl"/> -<!-- Context URL can be used: +<!-- Context URL also can be used: + <xsp:logicsheet location="context://logicsheets/hello.xsl"/> + + URL relative to the current sitemap CAN NOT be used, as + logicsheet is the global object, shared between all sitemaps. --> <page> 1.1 xml-cocoon2/src/webapp/docs/samples/xsp-js/hello.xsp Index: hello.xsp =================================================================== <?xml version="1.0" encoding="ISO-8859-1"?> <xsp:page language="javascript" xmlns:xsp="http://apache.org/xsp"> <page> <title>A Simple XSP Page</title> <content> <para>Hi there! I'm a simple dynamic page generated by XSP (eXtensible Server Pages).</para> </content> </page> </xsp:page> 1.1 xml-cocoon2/src/webapp/docs/samples/xsp-js/request-test.xsp Index: request-test.xsp =================================================================== <?xml version="1.0" encoding="ISO-8859-1"?> <xsp:page language="jsxsp" xmlns:xsp="http://apache.org/xsp" xmlns:xsp-request="http://apache.org/xsp/request/2.0"> <page> <xsp-request:set-attribute name="attr">Test Attribute Value</xsp-request:set-attribute> <h1>xsp-request logicsheet output</h1> <table border="1"> <tr> <th>Logicsheet tag</th><th>Output</th><th>Java method</th><th>Output</th></tr> <tr> <td>get-uri</td><td><xsp-request:get-uri/></td> <td>getRequestURI</td><td><xsp:expr>request.getRequestURI()</xsp:expr></td> </tr> <tr> <td>get-sitemap-uri</td><td><xsp-request:get-sitemap-uri/></td> </tr> <tr> <td>get-scheme</td><td><xsp-request:get-scheme/></td> <td>getScheme</td><td><xsp:expr>request.getScheme()</xsp:expr></td> </tr> <tr> <td>get-character-encoding</td><td><xsp-request:get-character-encoding/></td> <td>getCharacterEncoding</td><td><xsp:expr>request.getCharacterEncoding()</xsp:expr></td> </tr> <tr> <td>get-content-length</td><td><xsp-request:get-content-length/></td> <td>getContentLength</td><td><xsp:expr>request.getContentLength()</xsp:expr></td> </tr> <tr> <td>get-content-type</td><td><xsp-request:get-content-type/></td> <td>getContentType</td><td><xsp:expr>request.getContentType()</xsp:expr></td> </tr> <tr> <td>get-locale</td><td><xsp-request:get-locale/></td> <td>getLocale</td><td><xsp:expr>request.getLocale()</xsp:expr></td> </tr> <tr> <td>get-locales</td><td><xsp:expr>String(<xsp-request:get-locales as="array"/>)</xsp:expr></td> <td>getLocales</td><td><xsp:expr>String(request.getLocales())</xsp:expr></td> </tr> <tr> <td>get-parameter</td><td><xsp-request:get-parameter name="param"/></td> <td>getParameter</td><td><xsp:expr>request.getParameter("param")</xsp:expr></td> </tr> <tr> <td>get-parameter with default </td><td><xsp-request:get-parameter name="param" default="default"/></td> </tr> <tr> <td>get-parameter-values (as array)</td><td><xsp:expr>String(<xsp-request:get-parameter-values name="param" as="array"/>)</xsp:expr></td> <td>getParameterValues</td><td><xsp:expr>String(request.getParameterValues("param"))</xsp:expr></td> </tr> <tr> <td>get-parameter-names (as array)</td><td><xsp:expr>String(<xsp-request:get-parameter-names as="array"/>)</xsp:expr></td> <td>getParameterNames</td><td><xsp:expr>String(request.getParameterNames())</xsp:expr></td> </tr> <tr> <td>get-header accept</td><td><xsp-request:get-header name="accept"/></td> <td>getHeader</td><td><xsp:expr>request.getHeader("accept")</xsp:expr></td> </tr> <tr> <td>get-header user-agent</td><td><xsp-request:get-header name="user-agent"/></td> <td>getHeader</td><td><xsp:expr>request.getHeader("user-agent")</xsp:expr></td> </tr> <!-- get-int-header get-date-header --> <tr> <td>get-headers accept-language (as array)</td><td><xsp:expr>String(<xsp-request:get-headers name="accept-language" as="array"/>)</xsp:expr></td> <td>getHeaders</td><td><xsp:expr>request.getHeaders("accept-language")</xsp:expr></td> </tr> <tr> <td>get-header-names (as array)</td><td><xsp:expr>String(<xsp-request:get-header-names as="array"/>)</xsp:expr></td> <td>getHeaderNames</td><td><xsp:expr>String(request.getHeaderNames())</xsp:expr></td> </tr> <tr> <td>get-attribute attr</td><td><xsp-request:get-attribute name="attr"/></td> <td>getAttribute</td><td><xsp:expr>request.getAttribute("attr")</xsp:expr></td> </tr> <tr> <td>get-attribute-names (as array)</td><td><xsp:expr>String(<xsp-request:get-attribute-names as="array"/>)</xsp:expr></td> <td>getAttributeNames</td><td><xsp:expr>String(request.getAttributeNames())</xsp:expr></td> </tr> <tr> <td>get-requested-url</td><td><xsp-request:get-requested-url/></td> </tr> <tr> <td>get-remote-address</td><td><xsp-request:get-remote-address/></td> <td>getRemoteAddr</td><td><xsp:expr>request.getRemoteAddr()</xsp:expr></td> </tr> <tr> <td>get-remote-user</td><td><xsp-request:get-remote-user/></td> <td>getRemoteUser</td><td><xsp:expr>request.getRemoteUser()</xsp:expr></td> </tr> <tr> <td>get-context-path</td><td><xsp-request:get-context-path/></td> <td>getContextPath</td><td><xsp:expr>request.getContextPath()</xsp:expr></td> </tr> <tr> <td>get-path-info</td><td><xsp-request:get-path-info/></td> <td>getPathInfo</td><td><xsp:expr>request.getPathInfo()</xsp:expr></td> </tr> <tr> <td>get-server-name</td><td><xsp-request:get-server-name/></td> <td>getServerName</td><td><xsp:expr>request.getServerName()</xsp:expr></td> </tr> <tr> <td>get-server-port</td><td><xsp-request:get-server-port/></td> <td>getServerPort</td><td><xsp:expr>request.getServerPort()</xsp:expr></td> </tr> <tr> <td>get-method</td><td><xsp-request:get-method/></td> <td>getMethod</td><td><xsp:expr>request.getMethod()</xsp:expr></td> </tr> <tr> <td>get-query-string</td><td><xsp-request:get-query-string/></td> <td>getQueryString</td><td><xsp:expr>request.getQueryString()</xsp:expr></td> </tr> <tr> <td>get-protocol</td><td><xsp-request:get-protocol/></td> <td>getProtocol</td><td><xsp:expr>request.getProtocol()</xsp:expr></td> </tr> <tr> <td>get-remote-host</td><td><xsp-request:get-remote-host/></td> <td>getRemoteHost</td><td><xsp:expr>request.getRemoteHost()</xsp:expr></td> </tr> <tr> <td>is-secure</td><td><xsp-request:is-secure/></td> <td>isSecure</td><td><xsp:expr>request.isSecure()</xsp:expr></td> </tr> <tr> <td>get-servlet-path</td><td><xsp-request:get-servlet-path/></td> <td>getServletPath</td><td><xsp:expr>request.getServletPath()</xsp:expr></td> </tr> <tr> <td>get-user-principal</td><td><xsp-request:get-user-principal/></td> <td>getUserPrincipal</td><td><xsp:expr>request.getUserPrincipal()</xsp:expr></td> </tr> <tr> <td>get-auth-type</td><td><xsp-request:get-auth-type/></td> <td>getAuthType</td><td><xsp:expr>request.getAuthType()</xsp:expr></td> </tr> <tr> <td>is-user-in-role</td><td><xsp-request:is-user-in-role role="admin"/></td> <td>isUserInRole</td><td><xsp:expr>request.isUserInRole("admin")</xsp:expr></td> </tr> <tr> <td>get-requested-session-id</td><td><xsp-request:get-requested-session-id/></td> <td>getRequestedSessionId</td><td><xsp:expr>request.getRequestedSessionId()</xsp:expr></td> </tr> </table> <h1>xsp-request logicsheet output (as xml)</h1> <textarea cols="100" rows="30"> get-uri <xsp-request:get-uri as="xml"/> get-sitemap-uri <xsp-request:get-sitemap-uri as="xml"/> get-scheme <xsp-request:get-scheme as="xml"/> get-character-encoding <xsp-request:get-character-encoding as="xml"/> get-content-length <xsp-request:get-content-length as="xml"/> get-content-type <xsp-request:get-content-type as="xml"/> get-locale <xsp-request:get-locale as="xml"/> get-locales <xsp-request:get-locales as="xml"/> get-parameter <xsp-request:get-parameter name="param" as="xml"/> get-parameter with default <xsp-request:get-parameter name="param" default="default" as="xml"/> get-parameter-values <xsp-request:get-parameter-values name="param" as="xml"/> get-parameter-names <xsp-request:get-parameter-names as="xml"/> get-header accept <xsp-request:get-header name="accept" as="xml"/> get-header user-agent <xsp-request:get-header name="user-agent" as="xml"/> get-header-names <xsp-request:get-header-names as="xml"/> get-int-header - no sample get-date-header - no sample get-headers - no sample get-headers <xsp-request:get-headers name="accept-language" as="xml"/> get-attribute attr <xsp-request:get-attribute name="attr" as="xml"/> get-attribute-names <xsp-request:get-attribute-names as="xml"/> get-requested-url <xsp-request:get-requested-url as="xml"/> get-remote-address <xsp-request:get-remote-address as="xml"/> get-remote-user <xsp-request:get-remote-user as="xml"/> get-context-path <xsp-request:get-context-path as="xml"/> get-path-info <xsp-request:get-path-info as="xml"/> get-server-name <xsp-request:get-server-name as="xml"/> get-server-port <xsp-request:get-server-port as="xml"/> get-method <xsp-request:get-method as="xml"/> get-query-string <xsp-request:get-query-string as="xml"/> get-protocol <xsp-request:get-protocol as="xml"/> get-remote-host <xsp-request:get-remote-host as="xml"/> is-secure <xsp-request:is-secure as="xml"/> get-servlet-path <xsp-request:get-servlet-path as="xml"/> get-user-principal <xsp-request:get-user-principal as="xml"/> get-auth-type <xsp-request:get-auth-type as="xml"/> is-user-in-role <xsp-request:is-user-in-role role="admin" as="xml"/> get-requested-session-id <xsp-request:get-requested-session-id as="xml"/> </textarea> <xsp-request:remove-attribute name="attr"/> <h2>Links</h2> <a href="request-test?param=value&a=b&x=y">Get</a> <br/> <form method="post" action="request-test"> <input name="param"/> <input type="submit" value="Post"/> </form> </page> </xsp:page> 1.1 xml-cocoon2/src/webapp/docs/samples/xsp-js/simple.xsp Index: simple.xsp =================================================================== <?xml version="1.0" encoding="ISO-8859-1"?> <xsp:page language="javascript" xmlns:xsp="http://apache.org/xsp"> <page> <title>A Simple XSP Page</title> <content> <para>Hi there! I'm a simple dynamic page generated by XSP (eXtensible Server Pages).</para> <para> Testing Javascript: <ul> <li> <xsp:logic> i = 1; <xsp:content>Integer in Javascript: <xsp:expr>i</xsp:expr> </xsp:content> </xsp:logic> </li> <li> <xsp:logic> s = "Test Javascript String"; <xsp:content>String in Javascript: <xsp:expr>s</xsp:expr> </xsp:content> </xsp:logic> </li> <li> Java 'page' object: <xsp:expr>page</xsp:expr> </li> <li> Java 'request' object: <xsp:expr>request</xsp:expr> </li> <li> Request locale object: <xsp:expr>request.getLocale()</xsp:expr> </li> <li> Java Null object: <xsp:expr>request.getUserPrincipal()</xsp:expr> </li> </ul> </para> </content> </page> </xsp:page>
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]