cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Frank Rocholl" <frank.roch...@gmx.li>
Subject Use of StringXMLizable in a custom transformer
Date Wed, 20 Dec 2006 15:53:04 GMT
Hi all,

I've tried to use the class StringXMLizable to insert xml data 
into the sax stream. When I serialize the stream <map:serialize type="xml"/>
without further transformation everything works fine. 
When I tried to transform the output stream with xslt stylesheet (<map:transform type="xslt")
in a pipeline I get the error: 

### cut here ###
java.lang.RuntimeException:

Cocoon stacktrace[hide]
Failed to process pipeline 
.....
### cut here ###


Here is the source of my transformer:


### cut here ###

import java.io.IOException;
import java.util.Map;

import org.apache.avalon.framework.logger.LogEnabled;
import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.transformation.AbstractTransformer;
import org.apache.cocoon.xml.StringXMLizable;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;

public class Saxxml extends AbstractTransformer implements LogEnabled
{
    // The LogEnabled interface is one method: enableLogging
    private Logger logger;
   
    public void enableLogging(Logger logger)
    {
        this.logger = logger;
    }
   
    public void setup(SourceResolver sourceResolver, Map objectModel,
            String str, Parameters parameters) throws ProcessingException,
            SAXException, IOException
    {
        
            logger.info("setup");
    }

    public void startElement(String namespaceURI, String localName,
            String qName, Attributes attributes) throws SAXException
    {
       
        logger.info("startElement");
        
        if ( localName.equals("extern") )
        {
            super.startElement(namespaceURI, localName, qName, attributes);
            String externalXML =
                "<external>"           + 
                "<ex>  This is StringXMLizable </ex>" +
                "<ex>  this too  </ex>"+
               "<ex2> <![CDATA[</ex2> <html><text> </hr>
as cdata ]]></ex2>"+
               "</external>";
              
            StringXMLizable mysax= new StringXMLizable(externalXML);
            // ... and here  we go !!
            try 
            {
                mysax.toSAX(this.contentHandler);
            }
            catch ( SAXException ee)
            {
                logger.error(ee.getMessage() );
            }
        }
        else
            super.startElement(namespaceURI, localName, qName, attributes);
        
        return;
    }

    
    public void endElement(String namespaceURI, String localName, String qName)
            throws SAXException
    {
        logger.info("endElement");
        super.endElement(namespaceURI, localName, qName);
    }   
}

### cut here ###


Here is the important part of the sitemap.xmap
### cut here ###
			
	<map:match pattern="saxxml.html">
	  <map:generate src="test.xml" />
	  <map:transform type="t2"/>
          <!-- Here I get the error -->
          <map:transform type="xslt" src="my2t.xsl" />
          <map:serialize type="xml" />
	</map:match>

### cut here ###

Many thanks

Frank 

-- 
Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen! 
Ideal für Modem und ISDN: http://www.gmx.net/de/go/smartsurfer

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Mime
View raw message