nicolaken 02/04/08 01:09:17
Added: src/scratchpad/src/org/apache/cocoon/transformation/constrained
AbstractConstrainedTransformer.java
ContainerElementEndEvent.java
ElementEventAdapter.java ElementEventListener.java
ElementValueEvent.java XmlTreeConstraint.java
src/scratchpad/webapp/mount/charts/content/static
bar3Dchart.xml barchart.xml linechart.xml
testapplet.xml
src/scratchpad/src/org/apache/cocoon/transformation
Chart2SvgTransformer.java
src/scratchpad/lib krysalis-wings-0.1.0-dev-2.jar
LICENSE.krysalis-wings
src/scratchpad/webapp/mount/charts/content samples.xml
src/scratchpad/webapp/mount/charts/stylesheets
simple-samples2html.xsl
src/scratchpad/webapp/mount/charts sitemap.xmap
Log:
Adding my charting stuff to scratchpad.
It builds; it doesn't work.
It used to work in an early version of C2, and adaption to latest C2 isn't finished.
Patches welcome.
Revision Changes Path
1.1
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/transformation/constrained/AbstractConstrainedTransformer.java
Index: AbstractConstrainedTransformer.java
===================================================================
/*
============================================================================
The Apache Software License, Version 1.1
============================================================================
Copyright (C) 1999-2002 The Apache Software Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without modifica-
tion, 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 (INCLU-
DING, 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 and was originally created by
Stefano Mazzocchi <[EMAIL PROTECTED]>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.
*/
package org.apache.cocoon.transformation.constrained;
import java.io.IOException;
import java.util.Map;
import java.util.Properties;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.ListIterator;
import java.util.TooManyListenersException;
import java.util.EventListener;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.xml.XMLConsumer;
import org.apache.cocoon.xml.XMLProducer;
import org.apache.cocoon.transformation.*;
import org.xml.sax.ContentHandler;
import org.xml.sax.EntityResolver;
import org.xml.sax.Attributes;
import org.xml.sax.helpers.AttributesImpl;
import org.xml.sax.SAXException;
import org.xml.sax.Locator;
import org.xml.sax.ext.LexicalHandler;
/**
* This class is an abstract class from which you can extend your Transformer
* and write it in a way similar to AWT & Swing Event Handling.
* Part of this code is from the SQLTransformer of Donald Ball.
* @author <a href="mailto:[EMAIL PROTECTED]">Nicola Ken Barozzi</a>
*/
public abstract class AbstractConstrainedTransformer
extends AbstractTransformer {
private String my_uri;
private String my_prefix = "unknown";
private String my_name;
private ArrayList myUriOpenElements = new ArrayList();
private ArrayList globalOpenElements = new ArrayList();
private ArrayList globalOpenElementsAttributes = new ArrayList();
private String lastOpenElementRaw = "";
private ArrayList registeredListeners = new ArrayList();
private ArrayList registeredListenerConstraints = new ArrayList();
private StringBuffer current_value =
new StringBuffer();
protected XMLConsumer xml_consumer;
protected LexicalHandler lexical_handler;
public abstract void init(Parameters parameters);
public abstract String getUri();
public abstract String getName();
public final void setup(
EntityResolver resolver, Map objectModel, String source, Parameters
parameters)
throws ProcessingException, SAXException, IOException {
my_uri = getUri();
getLogger().debug(my_uri);
my_name = getName();
getLogger().debug(my_name);
init(parameters);
}
public void addEventListener(
ElementEventListener l, XmlTreeConstraint constraint){
registeredListeners.add(l);
registeredListenerConstraints.add(constraint);
}
public void setDocumentLocator(Locator locator) {
if (super.contentHandler != null) {
super.contentHandler.setDocumentLocator(locator);
}
}
public void startElement(
String uri, String name, String raw, Attributes attributes)
throws SAXException {
System.out.println("Start"+uri+name+raw+attributes);
lastOpenElementRaw = raw;
boolean isMyUri = false;
if (uri.equals(my_uri)) {
isMyUri = true;
if (getLogger().isDebugEnabled())
getLogger().debug(raw+" isMyUri!!!");
myUriOpenElements.add(name);
current_value.delete(0, current_value.length());
globalOpenElements.add(name);
globalOpenElementsAttributes.add(attributes);
ListIterator constraintsIter =
this.registeredListenerConstraints.listIterator();
while (constraintsIter.hasNext()) {
if (((XmlTreeConstraint) constraintsIter.next())
.isAllowed(new Boolean(isMyUri), this.myUriOpenElements,
this.globalOpenElements)) {
return;
}
}
}
else{
super.startElement(uri, name, raw, attributes);
}
}
public void endElement(String uri, String name, String raw)
throws SAXException {
try {
boolean isMyUri = false;
if (uri.equals(my_uri)) {
isMyUri = true;
ListIterator constraintsIter =
this.registeredListenerConstraints.listIterator();
XmlTreeConstraint currentConstraint;
boolean isAllowed;
boolean isElementTag = lastOpenElementRaw.equals(raw);
while (constraintsIter.hasNext()) {
currentConstraint =
(XmlTreeConstraint) constraintsIter.next();
isAllowed =
currentConstraint.isAllowed(new Boolean(isMyUri),
this.myUriOpenElements,
this.globalOpenElements);
if (isAllowed) {
EventListener el =
(EventListener) (registeredListeners
.get(constraintsIter.previousIndex()));
if(isElementTag)//it's an element
{
((ElementEventListener)el).elementValueRecieved(
new ElementValueEvent(
this, name, current_value.toString(),
(Attributes) this.globalOpenElementsAttributes
.get(globalOpenElementsAttributes.size()
- 1)));
}
else {//it's a container
((ElementEventListener)el).containerElementEnded(
new ContainerElementEndEvent(
this, name));
}
if (uri.equals(my_uri)) {
myUriOpenElements.remove(myUriOpenElements.size()
- 1);
}
globalOpenElements.remove(globalOpenElements.size() - 1);
globalOpenElementsAttributes
.remove(globalOpenElementsAttributes.size() - 1);
current_value.delete(0, current_value.length());
return;
}
}
if (globalOpenElements.size() > 0) {
globalOpenElements.remove(globalOpenElements.size() - 1);
globalOpenElementsAttributes
.remove(globalOpenElementsAttributes.size() - 1);
}
if (uri.equals(my_uri) && (myUriOpenElements.size() > 0)) {
myUriOpenElements.remove(myUriOpenElements.size() - 1);
}
}
else{
super.endElement(uri, name, raw);
}
current_value.delete(0, current_value.length());
} catch (Exception t) {
throw new SAXException("Exception in transformer "
+ this.getName() + " with uri "
+ this.getUri()
+ " while ending element.", t);
}
}
/***************************************/
/* Utility methods also for subclasses */
/***************************************/
public class RipperListener extends ElementEventAdapter {
public void elementValueRecieved(ElementValueEvent e) {
//do nothing so that element doesn't pass through
}
}
public void characters(char ary[], int start, int length)
throws SAXException {
if (this.globalOpenElements.isEmpty()) {
super.characters(ary, start, length);
} else {
current_value.append(ary, start, length);
}
}
protected void start(String name, AttributesImpl attr)
throws SAXException {
super.contentHandler.startElement(getUri(), name, name, attr);
attr.clear();
}
protected void start(String name) throws SAXException {
super.contentHandler.startElement(getUri(), name, name,
new AttributesImpl());
}
protected void end(String name) throws SAXException {
super.contentHandler.endElement(getUri(), name, name);
}
protected void data(String data) throws SAXException {
if (data != null) {
super.contentHandler.characters(data.toCharArray(), 0,
data.length());
}
}
protected static String getStringValue(Object object) {
if (object instanceof byte[]) {
return new String((byte[]) object);
} else if (object instanceof char[]) {
return new String((char[]) object);
} else if (object != null) {
return object.toString();
} else {
return "";
}
}
}
1.1
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/transformation/constrained/ContainerElementEndEvent.java
Index: ContainerElementEndEvent.java
===================================================================
/*
============================================================================
The Apache Software License, Version 1.1
============================================================================
Copyright (C) 1999-2002 The Apache Software Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without modifica-
tion, 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 (INCLU-
DING, 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 and was originally created by
Stefano Mazzocchi <[EMAIL PROTECTED]>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.
*/
package org.apache.cocoon.transformation.constrained;
import java.util.EventObject;
import org.xml.sax.Attributes;
import org.apache.cocoon.xml.XMLProducer;
/**
*
* @author <a href="mailto:[EMAIL PROTECTED]">Nicola Ken Barozzi</a>
*/
public class ContainerElementEndEvent extends EventObject {
private String elementName;
public ContainerElementEndEvent(
Object source, String elementName) {
super(source);
this.elementName = elementName;
}
public Object getSource() {
return source;
}
public String getElementName() {
return elementName;
}
}
1.1
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/transformation/constrained/ElementEventAdapter.java
Index: ElementEventAdapter.java
===================================================================
/*
============================================================================
The Apache Software License, Version 1.1
============================================================================
Copyright (C) 1999-2002 The Apache Software Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without modifica-
tion, 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 (INCLU-
DING, 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 and was originally created by
Stefano Mazzocchi <[EMAIL PROTECTED]>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.
*/
package org.apache.cocoon.transformation.constrained;
import java.util.EventListener;
import org.xml.sax.SAXException;
/**
*
* @author <a href="mailto:[EMAIL PROTECTED]">Nicola Ken Barozzi</a>
*/
public abstract class ElementEventAdapter implements ElementEventListener {
public void containerElementEnded(ContainerElementEndEvent e) throws Exception{}
public void elementValueRecieved(ElementValueEvent e) throws Exception{}
}
1.1
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/transformation/constrained/ElementEventListener.java
Index: ElementEventListener.java
===================================================================
/*
============================================================================
The Apache Software License, Version 1.1
============================================================================
Copyright (C) 1999-2002 The Apache Software Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without modifica-
tion, 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 (INCLU-
DING, 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 and was originally created by
Stefano Mazzocchi <[EMAIL PROTECTED]>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.
*/
package org.apache.cocoon.transformation.constrained;
import java.util.EventListener;
import org.xml.sax.SAXException;
/**
*
* @author <a href="mailto:[EMAIL PROTECTED]">Nicola Ken Barozzi</a>
*/
public interface ElementEventListener extends EventListener {
public void containerElementEnded(ContainerElementEndEvent e) throws Exception;
public void elementValueRecieved(ElementValueEvent e) throws Exception;
}
1.1
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/transformation/constrained/ElementValueEvent.java
Index: ElementValueEvent.java
===================================================================
/*
============================================================================
The Apache Software License, Version 1.1
============================================================================
Copyright (C) 1999-2002 The Apache Software Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without modifica-
tion, 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 (INCLU-
DING, 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 and was originally created by
Stefano Mazzocchi <[EMAIL PROTECTED]>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.
*/
package org.apache.cocoon.transformation.constrained;
import java.util.EventObject;
import org.xml.sax.Attributes;
/**
*
* @author <a href="mailto:[EMAIL PROTECTED]">Nicola Ken Barozzi</a>
*/
public class ElementValueEvent extends ContainerElementEndEvent {
private String elementValue;
private Attributes elementAttributes;
public ElementValueEvent(
Object source, String elementName, String elementValue,
Attributes elementAttributes) {
super(source, elementName);
this.elementValue = elementValue;
this.elementAttributes = elementAttributes;
}
public String getElementValue() {
return elementValue;
}
public Attributes getAttributes() {
return elementAttributes;
}
public String getAttribute(String attributeName) {
return elementAttributes.getValue(attributeName).toString();
}
}
1.1
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/transformation/constrained/XmlTreeConstraint.java
Index: XmlTreeConstraint.java
===================================================================
/*
============================================================================
The Apache Software License, Version 1.1
============================================================================
Copyright (C) 1999-2002 The Apache Software Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without modifica-
tion, 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 (INCLU-
DING, 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 and was originally created by
Stefano Mazzocchi <[EMAIL PROTECTED]>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.
*/
package org.apache.cocoon.transformation.constrained;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.ListIterator;
/**
*
* @author <a href="mailto:[EMAIL PROTECTED]">Nicola Ken Barozzi</a>
*/
public class XmlTreeConstraint {
private boolean debug=true;
private Boolean isMyUriRequired;
private ArrayList allowedMyUriStackEnd = null;
private ArrayList allowedGlobalStackEnd = null;
public XmlTreeConstraint(ArrayList allowedMyUriStackEnd,
ArrayList allowedGlobalStackEnd,
Boolean isMyUriRequired) {
this.allowedMyUriStackEnd = allowedMyUriStackEnd;
this.allowedGlobalStackEnd = allowedGlobalStackEnd;
this.isMyUriRequired = isMyUriRequired;
}
public XmlTreeConstraint(ArrayList allowedMyUriStackEnd,
Boolean isMyUriRequired) {
this.allowedMyUriStackEnd = allowedMyUriStackEnd;
this.isMyUriRequired = isMyUriRequired;
}
public XmlTreeConstraint(ArrayList allowedMyUriStackEnd) {
this.allowedMyUriStackEnd = allowedMyUriStackEnd;
}
public XmlTreeConstraint(String[] allowedMyUriStackEnd,
String[] allowedGlobalStackEnd,
boolean isMyUriRequired) {
this.allowedMyUriStackEnd = new
ArrayList(Arrays.asList(allowedMyUriStackEnd));
this.allowedGlobalStackEnd = new
ArrayList(Arrays.asList(allowedGlobalStackEnd));
this.isMyUriRequired = new Boolean(isMyUriRequired);
}
public XmlTreeConstraint(String[] allowedMyUriStackEnd,
boolean isMyUriRequired) {
this.allowedMyUriStackEnd = new
ArrayList(Arrays.asList(allowedMyUriStackEnd));
this.isMyUriRequired = new Boolean(isMyUriRequired);
}
public XmlTreeConstraint(String[] allowedMyUriStackEnd) {
this.allowedMyUriStackEnd = new
ArrayList(Arrays.asList(allowedMyUriStackEnd));
}
public boolean isAllowed(Boolean isMyUri, ArrayList myUriStack,
ArrayList globalStack) {
if(debug){
System.out.println("isMyUri :"+isMyUri+"\nrequired uri "+isMyUriRequired);
System.out.println("myUristack: \n"+myUriStack);
System.out.println("allowedMyUriStackEnd: \n"+allowedMyUriStackEnd);
System.out.println("globalstack: \n"+globalStack);
System.out.println("allowedGlobalStackEnd: \n"+allowedGlobalStackEnd);
}
if (isMyUriRequired != null) {
if (isMyUri == null) {
return false;
}
if (!isMyUriRequired.equals(isMyUri)) {
return false;
}
}
if (allowedMyUriStackEnd != null) {
if (myUriStack == null) {
return false;
}
if (!areEndsEqual(allowedMyUriStackEnd, myUriStack)) {
return false;
}
}
if (allowedGlobalStackEnd != null) {
if (globalStack == null) {
return false;
}
if (!areEndsEqual(allowedGlobalStackEnd, globalStack)) {
return false;
}
}
return true;
}
private boolean areEndsEqual(ArrayList l1, ArrayList l2) {
if (l1.size() > l2.size()) {
if ((!(l1.size() == l2.size()))
&& ((l1.size() < 1) || (l2.size() < 1))) {
return false;
}
//make l1 smaller
ArrayList l3 = l1;
l1 = l2;
l2 = l3;
}
ListIterator iter1 = l1.listIterator(l1.size());
ListIterator iter2 = l2.listIterator(l2.size());
while (iter1.hasPrevious()) {
if (!(((String) iter1.previous().toString())
.equals(iter2.previous().toString()))) {
//System.out.println("ends are NOT equal.");
return false;
}
}
//System.out.println("ends are equal.");
return true;
}
}
1.1
xml-cocoon2/src/scratchpad/webapp/mount/charts/content/static/bar3Dchart.xml
Index: bar3Dchart.xml
===================================================================
<?xml version="1.0"?>
<chart:chartdef xmlns:chart="http://apache.org/cocoon/Chart2Svg">
<chart:appearance>
<chart:type>bar</chart:type>
<chart:title>Cocoon 1 vs Cocoon 2 :)</chart:title>
<chart:LF3d/>
<chart:colors>
<chart:color>#ffffff</chart:color>
<chart:color>#666666</chart:color>
</chart:colors>
<chart:width>400</chart:width>
<chart:height>280</chart:height>
</chart:appearance>
<chart:properties>
<chart:min>0</chart:min>
<chart:max>7</chart:max>
</chart:properties>
<chart:data>
<result>
<row>
<cocoon1>1</cocoon1>
<cocoon2>3</cocoon2>
<cocoon3>5</cocoon3>
</row>
<row>
<cocoon1>2</cocoon1>
<cocoon2>6</cocoon2>
<cocoon3>3</cocoon3>
</row>
<row>
<cocoon1>2</cocoon1>
<cocoon2>6</cocoon2>
<cocoon3>5</cocoon3>
</row>
<row>
<cocoon1>2</cocoon1>
<cocoon2>6</cocoon2>
<cocoon3>3</cocoon3>
</row>
</result>
</chart:data>
</chart:chartdef>
1.1
xml-cocoon2/src/scratchpad/webapp/mount/charts/content/static/barchart.xml
Index: barchart.xml
===================================================================
<?xml version="1.0"?>
<chart:chartdef xmlns:chart="http://apache.org/cocoon/Chart2Svg">
<chart:appearance>
<chart:type>bar</chart:type>
<chart:title>Cocoon 1 vs Cocoon 2 :)</chart:title>
<chart:colors>
<chart:color>#ffffff</chart:color>
<chart:color>#666666</chart:color>
</chart:colors>
<chart:width>400</chart:width>
<chart:height>280</chart:height>
</chart:appearance>
<chart:properties>
<chart:min>0</chart:min>
<chart:max>7</chart:max>
</chart:properties>
<chart:data>
<result>
<row>
<cocoon1>1</cocoon1>
<cocoon2>3</cocoon2>
<cocoon3>5</cocoon3>
</row>
<row>
<cocoon1>2</cocoon1>
<cocoon2>6</cocoon2>
<cocoon3>3</cocoon3>
</row>
<row>
<cocoon1>2</cocoon1>
<cocoon2>6</cocoon2>
<cocoon3>5</cocoon3>
</row>
<row>
<cocoon1>2</cocoon1>
<cocoon2>6</cocoon2>
<cocoon3>3</cocoon3>
</row>
</result>
</chart:data>
</chart:chartdef>
1.1
xml-cocoon2/src/scratchpad/webapp/mount/charts/content/static/linechart.xml
Index: linechart.xml
===================================================================
<?xml version="1.0"?>
<chart:chartdef xmlns:chart="http://apache.org/cocoon/Chart2Svg">
<chart:appearance>
<chart:type>line</chart:type>
<chart:title>Cocoon 1 vs Cocoon 2 :)</chart:title>
<chart:colors>
<chart:color>#ffffff</chart:color>
<chart:color>#666666</chart:color>
</chart:colors>
<chart:width>400</chart:width>
<chart:height>280</chart:height>
</chart:appearance>
<chart:properties>
<chart:min>0</chart:min>
<chart:max>7</chart:max>
</chart:properties>
<chart:data>
<result>
<row>
<cocoon1>1</cocoon1>
<cocoon2>3</cocoon2>
<cocoon3>5</cocoon3>
</row>
<row>
<cocoon1>2</cocoon1>
<cocoon2>6</cocoon2>
<cocoon3>3</cocoon3>
</row>
<row>
<cocoon1>2</cocoon1>
<cocoon2>6</cocoon2>
<cocoon3>5</cocoon3>
</row>
<row>
<cocoon1>2</cocoon1>
<cocoon2>6</cocoon2>
<cocoon3>3</cocoon3>
</row>
</result>
</chart:data>
</chart:chartdef>
1.1
xml-cocoon2/src/scratchpad/webapp/mount/charts/content/static/testapplet.xml
Index: testapplet.xml
===================================================================
<?xml version="1.0"?>
<xapplet:applet2svg xmlns:xapplet="http://apache.org/cocoon/Applet2Svg">
<applet width="400" height="400"
code="org.apache.cocoon.transformation.chart.TestAppklet.class"/>
</xapplet:applet2svg>
1.1
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/transformation/Chart2SvgTransformer.java
Index: Chart2SvgTransformer.java
===================================================================
/*
============================================================================
The Apache Software License, Version 1.1
============================================================================
Copyright (C) 1999-2002 The Apache Software Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without modifica-
tion, 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 (INCLU-
DING, 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 and was originally created by
Stefano Mazzocchi <[EMAIL PROTECTED]>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.
*/
package org.apache.cocoon.transformation;
import java.io.IOException;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.transformation.constrained.*;
import java.util.TooManyListenersException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.awt.Color;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
import org.krysalis.wings.*;
/**
* This Transformer transforms XML that describes a chart into an SVG
* representation.
* See Cocoon examples for implicit DTD.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Nicola Ken Barozzi</a>
*/
public class Chart2SvgTransformer extends AbstractConstrainedTransformer {
private String originalPrefix = "unknown";
private boolean minSet = false;
private boolean maxSet = false;
private ChartModel2D cm = new ChartModel2D();
private String type = "";
private String title = "";
private AbstractChart c;
private ColorList cl = new ColorList();
private double min;
private double max;
private boolean LF3D = false;
private int width = 320;
private int height = 200;
public String getUri() {
return "http://apache.org/cocoon/chart2svg";
}
public String getName() {
return "chart2svg";
}
public void setup(SourceResolver resolver, Map map, String string, Parameters
parameters)
{
}
public void init(Parameters parameters) {
String[] chartdefStack = { "chartdef" };
addEventListener(new ElementEventAdapter() {
public void containerElementEnded(ContainerElementEndEvent e)
throws SAXException {
if (minSet) {
cm.setMin(min);
}
if (maxSet) {
cm.setMax(max);
}
if (type.trim().equals("bar")) {
c = new BarChart(cm);
((BarChart) c).set3DLF(LF3D);
}
else if (type.trim().equals("pie")) {
c = new PieChart(cm);
}
else {
c = new LineChart(cm);
}
c.setTitle(title);
c.setColorList(cl);
c.setSize(width, height);
SVGGraphics svg = new
SVGGraphics(Chart2SvgTransformer.super.contentHandler, width,
height);
svg.startEvents();
c.paint(svg);
svg.stopEvents();
}
}, new XmlTreeConstraint(chartdefStack, true));
String[] typeStack = { "type" };
addEventListener(new ElementEventAdapter() {
public void elementValueRecieved(ElementValueEvent e) {
type = e.getElementValue();
}
}, new XmlTreeConstraint(typeStack, true));
String[] titleStack = { "title" };
addEventListener(new ElementEventAdapter() {
public void elementValueRecieved(ElementValueEvent e) {
title = e.getElementValue();
}
}, new XmlTreeConstraint(titleStack, true));
String[] LF3dStack = { "LF3d" };
addEventListener(new ElementEventAdapter() {
public void elementValueRecieved(ElementValueEvent e) {
LF3D = true;
}
}, new XmlTreeConstraint(LF3dStack, true));
String[] colorStack = { "color" };
addEventListener(new ElementEventAdapter() {
public void elementValueRecieved(ElementValueEvent e) {
cl.add(Color.decode(e.getElementValue()));
}
}, new XmlTreeConstraint(colorStack, true));
String[] widthStack = { "width" };
addEventListener(new ElementEventAdapter() {
public void elementValueRecieved(ElementValueEvent e) {
width = Integer.parseInt(e.getElementValue());
try
{
Chart2SvgTransformer.this.start("prova");
Chart2SvgTransformer.this.end("prova");
Chart2SvgTransformer.this.data("prova data");
}
catch(Exception exx)
{
System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAA");
}
}
}, new XmlTreeConstraint(widthStack, true));
String[] heightStack = { "height" };
addEventListener(new ElementEventAdapter() {
public void elementValueRecieved(ElementValueEvent e) {
height = Integer.parseInt(e.getElementValue());
}
}, new XmlTreeConstraint(heightStack, true));
String[] minStack = { "min" };
addEventListener(new ElementEventAdapter() {
public void elementValueRecieved(ElementValueEvent e) {
min = Double.parseDouble(e.getElementValue().trim());
minSet = true;
}
}, new XmlTreeConstraint(minStack, true));
String[] maxStack = { "max" };
addEventListener(new ElementEventAdapter() {
public void elementValueRecieved(ElementValueEvent e) {
max = Double.parseDouble(e.getElementValue().trim());
maxSet = true;
}
}, new XmlTreeConstraint(maxStack, true));
String[] dataStack = { "data" };
addEventListener(new DataListener(),
new XmlTreeConstraint(dataStack,
false));
addEventListener(new RipperListener(),
new XmlTreeConstraint(dataStack,
true));
String[] appearanceStack = { "appearance" };
addEventListener(
new RipperListener(),
new XmlTreeConstraint(appearanceStack, true));
String[] propertiesStack = { "properties" };
addEventListener(
new RipperListener(),
new XmlTreeConstraint(propertiesStack, true));
String[] colorsStack = { "colors" };
addEventListener(new RipperListener(),
new XmlTreeConstraint(colorsStack,
true));
}
class DataListener extends ElementEventAdapter {
public void elementValueRecieved(ElementValueEvent e)
throws SAXException {
cm.addToRow(e.getElementName(),
Double.parseDouble(e.getElementValue()));
}
}
}
1.1 xml-cocoon2/src/scratchpad/lib/krysalis-wings-0.1.0-dev-2.jar
<<Binary file>>
1.1 xml-cocoon2/src/scratchpad/lib/LICENSE.krysalis-wings
Index: LICENSE.krysalis-wings
===================================================================
/*
The Krysalis Patchy Software License, Version 1.1_01
Copyright (c) 2002 Nicola Ken Barozzi. All rights reserved.
This Licence is compatible with the BSD licence as described and
approved by http://www.opensource.org/, and is based on the
Apache Software Licence Version 1.1.
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 for project
Krysalis (http://www.krysalis.org/)."
Alternately, this acknowledgment may appear in the software itself,
if and wherever such third-party acknowledgments normally appear.
4. The names "Krysalis" and "Nicola Ken Barozzi" and
"Krysalis Centipede" 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 "Krysalis",
"Krysalis Centipede", nor may "Krysalis" appear in their name,
without prior written permission of Nicola Ken Barozzi.
6. This software may contain voluntary contributions made by many
individuals, who decided to donate the code to this project in
respect of this licence.
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 KRYSALIS PROJECT 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.
====================================================================*/
1.1
xml-cocoon2/src/scratchpad/webapp/mount/charts/content/samples.xml
Index: samples.xml
===================================================================
<?xml version="1.0" encoding="iso-8859-1"?>
<samples xmlns:xlink="http://www.w3.org/1999/xlink">
<group name="This page is served by sub-sitemap!">
<sample name="Back" href="../..">
to Cocoon examples main page
</sample>
</group>
<group name="SVG Chart samples">
<sample name="Bar Chart" href="barchart.svg">
This sample doesn't yet work. Still needs debugging and fixing. It used to work
with an early version of Cocoon2 and currently it hasen't been completely adapted.
Patches are welcome :-)
</sample>
<sample name="Bar Chart 3d style" href="bar3Dchart.svg">
This sample doesn't yet work. Still needs debugging and fixing. It used to work
with an early version of Cocoon2 and currently it hasen't been completely adapted.
Patches are welcome :-)
</sample>
<sample name="Line Chart" href="line.svg">
This sample doesn't yet work. Still needs debugging and fixing. It used to work
with an early version of Cocoon2 and currently it hasen't been completely adapted.
Patches are welcome :-)
</sample>
</group>
<group name="Chart samples viewed in xml">
<sample name="Bar Chart" href="barchart.xml">
This sample doesn't yet work. Still needs debugging and fixing. It used to work
with an early version of Cocoon2 and currently it hasen't been completely adapted.
Patches are welcome :-)
</sample>
<sample name="Bar Chart 3d style" href="bar3Dchart.xml">
This sample doesn't yet work. Still needs debugging and fixing. It used to work
with an early version of Cocoon2 and currently it hasen't been completely adapted.
Patches are welcome :-)
</sample>
<sample name="Line Chart" href="line.xml">
This sample doesn't yet work. Still needs debugging and fixing. It used to work
with an early version of Cocoon2 and currently it hasen't been completely adapted.
Patches are welcome :-)
</sample>
</group>
</samples>
1.1
xml-cocoon2/src/scratchpad/webapp/mount/charts/stylesheets/simple-samples2html.xsl
Index: simple-samples2html.xsl
===================================================================
<?xml version="1.0"?>
<!-- Author: Nicola Ken Barozzi "[EMAIL PROTECTED]" -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xlink="http://www.w3.org/1999/xlink">
<xsl:template match="/">
<html>
<head>
<title>Poi Cocoon Samples</title>
</head>
<body bgcolor="#ffffff" link="#0086b2" vlink="#00698c" alink="#743e75">
<p align="center"><font size="+0" face="arial,helvetica,sanserif"
color="#000000">Poi Cocoon samples</font></p>
<xsl:apply-templates/>
<p align="center">
<font size="-1">
Copyright © 1999-2001 <a href="http://www.apache.org">poi project
founders</a>.<br/>
All rights reserved.
</font>
</p>
</body>
</html>
</xsl:template>
<xsl:template match="samples">
<xsl:variable name="all-samples" select="count(group/sample)"/>
<xsl:variable name="half-samples" select="round($all-samples div 2)"/>
<table width="100%">
<tr>
<td width="50%" valign="top">
<xsl:for-each select="group">
<xsl:variable name="group-position" select="position()"/>
<xsl:variable name="current-sample" select="1 + count(../group[position()
<= $group-position]/sample)"/>
<xsl:choose>
<xsl:when test="$current-sample <= $half-samples">
<table border="0" bgcolor="#000000" cellpadding="0" cellspacing="0"
width="97%">
<tbody>
<tr>
<td>
<table bgcolor="#000000" border="0" cellspacing="2" cellpadding="2"
align="center" width="100%">
<tr>
<td bgcolor="#0086b2" width="100%" align="left">
<font size="+1" face="arial,helvetica,sanserif"
color="#ffffff"><xsl:value-of select="@name"/></font>
</td>
</tr>
<tr>
<td width="100%" bgcolor="#ffffff" align="left">
<table bgcolor="#ffffff" border="0" cellspacing="0" cellpadding="2"
width="100%" align="center">
<xsl:apply-templates/>
</table>
</td>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
<br/>
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</td>
<td valign="top">
<xsl:for-each select="group"> <!-- [position()<=$half] -->
<xsl:variable name="group-position" select="position()"/>
<xsl:variable name="current-sample" select="1 + count(../group[position()
<= $group-position]/sample)"/>
<xsl:choose>
<xsl:when test="not($current-sample <= $half-samples)">
<table border="0" bgcolor="#000000" cellpadding="0" cellspacing="0"
width="97%">
<tbody>
<tr>
<td>
<table bgcolor="#000000" border="0" cellspacing="2" cellpadding="2"
align="center" width="100%">
<tr>
<td bgcolor="#0086b2" width="100%" align="left">
<font size="+1" face="arial,helvetica,sanserif"
color="#ffffff"><xsl:value-of select="@name"/></font>
</td>
</tr>
<tr>
<td width="100%" bgcolor="#ffffff" align="left">
<table bgcolor="#ffffff" border="0" cellspacing="0" cellpadding="2"
width="100%" align="center">
<xsl:apply-templates/>
</table>
</td>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
<br/>
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</td>
</tr>
</table>
</xsl:template>
<xsl:template match="sample">
<tr>
<td width="100%" bgcolor="#ffffff" align="left">
<font size="+0" face="arial,helvetica,sanserif" color="#000000">
<a href="{@href}"><xsl:value-of select="@name"/></a><xsl:text> - </xsl:text>
<xsl:value-of select="."/>
</font>
</td>
</tr>
</xsl:template>
</xsl:stylesheet>
1.1 xml-cocoon2/src/scratchpad/webapp/mount/charts/sitemap.xmap
Index: sitemap.xmap
===================================================================
<?xml version="1.0"?>
<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
<map:components>
<map:generators default="file"/>
<map:transformers default="xslt">
<map:transformer name="chart2svg"
src="org.apache.cocoon.transformation.Chart2SvgTransformer"/>
</map:transformers>
<map:readers default="resource"/>
<map:serializers default="html">
<map:serializer name="svgxml" mime-type="image/svg-xml"
logger="sitemap.serializer.svgxml"
src="org.apache.cocoon.serialization.XMLSerializer">
<doctype-public>-//W3C//DTD SVG 20000303 Stylable//EN</doctype-public>
<doctype-system>http://www.w3.org/TR/2000/03/WD-SVG-20000303/</doctype-system>
</map:serializer>
</map:serializers>
<map:matchers default="wildcard"/>
<map:selectors default="browser"/>
</map:components>
<map:pipelines>
<map:pipeline>
<map:match pattern="">
<map:redirect-to uri="welcome"/>
</map:match>
<map:match pattern="welcome">
<map:generate src="content/samples.xml"/>
<map:transform src="stylesheets/simple-samples2html.xsl"/>
<map:serialize/>
</map:match>
<map:match pattern="*chart.xml">
<map:generate src="content/static/{1}chart.xml"/>
<map:transform type="chart2svg"/>
<map:serialize type="xml"/>
</map:match>
<map:match pattern="*chart.svg">
<map:generate src="content/static/{1}chart.xml"/>
<map:transform type="chart2svg"/>
<map:serialize type="svgxml"/>
</map:match>
<map:match pattern="*chart.source.xml">
<map:generate src="content/static/{1}chart.xml"/>
<map:serialize type="xml"/>
</map:match>
<!-- ========================= Server ================================ -->
<map:match pattern="sites/styles/**.css">
<map:read src="resources/styles/{1}.css" mime-type="text/css"/>
</map:match>
<map:match pattern="images/**.gif">
<map:read src="resources/images/{1}.gif" mime-type="image/gif"/>
</map:match>
<map:match pattern="images/**.jpg">
<map:read src="resources/images/{1}.jpg" mime-type="image/jpg"/>
</map:match>
<map:match pattern="images/**.png">
<map:read src="resources/images/{1}.png" mime-type="image/png"/>
</map:match>
<!-- delegate to parent
<map:handle-errors>
<map:serialize status-code="500"/>
</map:handle-errors>
-->
</map:pipeline>
</map:pipelines>
</map:sitemap>
<!-- end of file -->
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]