You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by vg...@apache.org on 2002/02/09 05:16:39 UTC
cvs commit: xml-cocoon2/src/webapp/docs/samples/xsp-js hello.xsp request-test.xsp simple.xsp
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 apache@apache.org.
*
* 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:vgritsenko@apache.org">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:ricardo@apache.org>Ricardo Rocha</a>
* @author <a href="mailto:vgritsenko@apache.org>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:vgritsenko@apache.org>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:vgritsenko@apache.org>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: webmaster@xml.apache.org
To unsubscribe, e-mail: cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org