You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by Nicola Ken Barozzi <ni...@supereva.it> on 2000/09/04 18:26:51 UTC
Namespace problem in C2 Transformer
I'm making a C2 Transformer and I have problems with namespaces.
This is my xml:
<?xml version="1.0"?>
<contain>
<chartdef xmlns="http://apache.org/cocoon/Chart2Svg">
<appearance>
<title>IT WORKS!!! :)</title>
<LF3d/>
<colors>
<color>#ffffff</color>
<color>#666666</color>
</colors>
</appearance>
<properties>
<min>0</min>
<max>10</max>
</properties>
<data>
<result xmlns="http://apache.org/cocoon/data">
<row>
<name>1</name>
<surname>4</surname>
</row>
<row>
<name>5</name>
<surname>4</surname>
</row>
<row>
<name>3</name>
<surname>7</surname>
</row>
</result>
</data>
</chartdef>
</contain>
Basically I want to read the <result xmlns="http://apache.org/cocoon/data">
elements (I just say the transformer to ignore elements out of my <data> element)
in my transformer.
The two tags with the namespace declarations:
<chartdef xmlns="http://apache.org/cocoon/Chart2Svg">
<result xmlns="http://apache.org/cocoon/data">
are giving me a headache.
If I capture their startElement and endElement events and don't call anything in
them, they disappear in the output but at the and of the _correct_ output I
get the following exception:
**********************************************************
?????? ?????? ?????? ?????? ?????? ??????
? ? .? ? ? .? ?. ? ? ?
?????? ?????? ?????? ?????? ?????? ? ? @version@
--- Error in the Cocoon 2 pipeline >X==< ---
error - Exception in transformer chart2svg with uri http://apache.org/cocoon/Chart2Svg while ending element.
description - java.lang.NullPointerException
from - org.apache.cocoon.generation.ErrorGenerator
source - org.xml.sax.SAXException
stacktrace - java.lang.NullPointerException
at org.apache.cocoon.transformation.EventBasedAbstractTransformer.endElement(EventBasedAbstractTransformer.java
, Compiled Code)
at org.apache.xerces.parsers.SAXParser.endElement(SAXParser.java, Compiled Code)
at org.apache.xerces.validators.common.XMLValidator.callEndElement(XMLValidator.java, Compiled Code)
at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java, Compiled
Code)
at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java, Compiled Code)
at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:861)
at org.apache.cocoon.components.parser.XercesParser.parse(XercesParser.java:40)
at org.apache.cocoon.generation.FileGenerator.generate(FileGenerator.java:31)
at org.apache.cocoon.sitemap.ResourcePipeline.process(ResourcePipeline.java, Compiled Code)
at _C_._jakarta_tomcat._webapps._cocoon._sitemap_xmap.process(_sitemap_xmap.java:1415)
at org.apache.cocoon.sitemap.SitemapHandler.process(SitemapHandler.java:127)
at org.apache.cocoon.sitemap.SitemapManager.invoke(SitemapManager.java:83)
at org.apache.cocoon.Cocoon.process(Cocoon.java:206)
at org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:191)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java, Compiled Code)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java:559)
at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:160)
at org.apache.tomcat.service.TcpConnectionThread.run(SimpleTcpEndpoint.java:338)
at java.lang.Thread.run(Thread.java:479)
**************** printStream notifications: 1 ***************
The exception disappears only if I call super on both events (two start, two end).
It also disappears if I only take away xmlns="http://apache.org/cocoon/data" .
I get the same error with:
<contain>
<chart:chartdef xmlns:chart="http://apache.org/cocoon/Chart2Svg">
<chart:appearance>
<chart:title>IT WORKS!!! :)</chart:title>
<chart:LF3d/>
<chart:colors>
<chart:color>#ffffff</chart:color>
<chart:color>#666666</chart:color>
</chart:colors>
</chart:appearance>
<chart:properties>
<chart:min>0</chart:min>
<chart:max>10</chart:max>
</chart:properties>
<chart:data>
<result>
<row>
<name>1</name>
<surname>4</surname>
</row>
<row>
<name>5</name>
<surname>4</surname>
</row>
<row>
<name>3</name>
<surname>7</surname>
</row>
</result>
</chart:data>
</chart:chartdef>
</contain>
but it stops calling after </chart:chartdef>.
The strange thing is that in the output I _have_ </contain> !!! :-O
So I looked in th AbstractTransformer I extend.
Why is it
/**
* End the scope of a prefix-URI mapping.
*/
public void endPrefixMapping(String prefix)
throws SAXException {
}
and not
/**
* End the scope of a prefix-URI mapping.
*/
public void endPrefixMapping(String prefix)
throws SAXException {
if (super.contentHandler!=null)
System.out.println("PM!"+prefix);
super.contentHandler.endPrefixMapping(prefix);
}
?
Thanks guys :-)
nicola_ken
Re: Namespace problem in C2 Transformer
Posted by Stefano Mazzocchi <st...@apache.org>.
Nicola Ken Barozzi wrote:
>
> ----- Original Message -----
> From: "Stefano Mazzocchi" <st...@apache.org>
> To: <co...@xml.apache.org>
> Sent: Monday, September 04, 2000 7:30 PM
> Subject: Re: Namespace problem in C2 Transformer
>
> > Nicola Ken Barozzi wrote:
> > >
> > > I'm making a C2 Transformer and I have problems with namespaces.
> > > This is my xml:
> > >
> > > <?xml version="1.0"?>
> > > <contain>
> > > <chartdef xmlns="http://apache.org/cocoon/Chart2Svg">
> > > <appearance>
> > > <title>IT WORKS!!! :)</title>
> > > <LF3d/>
> > > <colors>
> > > <color>#ffffff</color>
> > > <color>#666666</color>
> > > </colors>
> > > </appearance>
> > > <properties>
> > > <min>0</min>
> > > <max>10</max>
> > > </properties>
> > > <data>
> > > <result xmlns="http://apache.org/cocoon/data">
> > > <row>
> > > <name>1</name>
> > > <surname>4</surname>
> > > </row>
> > > <row>
> > > <name>5</name>
> > > <surname>4</surname>
> > > </row>
> > > <row>
> > > <name>3</name>
> > > <surname>7</surname>
> > > </row>
> > > </result>
> > > </data>
> > > </chartdef>
> > > </contain>
> > >
> > > Basically I want to read the <result xmlns="http://apache.org/cocoon/data">
> > > elements (I just say the transformer to ignore elements out of my <data> element)
> > > in my transformer.
> > > The two tags with the namespace declarations:
> > >
> > > <chartdef xmlns="http://apache.org/cocoon/Chart2Svg">
> > > <result xmlns="http://apache.org/cocoon/data">
> > >
> > > are giving me a headache.
> > > If I capture their startElement and endElement events and don't call anything in
> > > them, they disappear in the output but at the and of the _correct_ output I
> > > get the following exception:
> > >
> > > **********************************************************
> > >
> > > ?????? ?????? ?????? ?????? ?????? ??????
> > > ? ? .? ? ? .? ?. ? ? ?
> > > ?????? ?????? ?????? ?????? ?????? ? ? @version@
> > >
> > > --- Error in the Cocoon 2 pipeline >X==< ---
> > >
> > > error - Exception in transformer chart2svg with uri http://apache.org/cocoon/Chart2Svg while ending element.
> > >
> > > description - java.lang.NullPointerException
> > >
> > > from - org.apache.cocoon.generation.ErrorGenerator
> > >
> > > source - org.xml.sax.SAXException
> > >
> > > stacktrace - java.lang.NullPointerException
> > > at org.apache.cocoon.transformation.EventBasedAbstractTransformer.endElement(EventBasedAbstractTransformer.java
> > > , Compiled Code)
> > > at org.apache.xerces.parsers.SAXParser.endElement(SAXParser.java, Compiled Code)
> > > at org.apache.xerces.validators.common.XMLValidator.callEndElement(XMLValidator.java, Compiled Code)
> > > at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java, Compiled
> > > Code)
> > > at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java, Compiled Code)
> > > at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:861)
> > > at org.apache.cocoon.components.parser.XercesParser.parse(XercesParser.java:40)
> > > at org.apache.cocoon.generation.FileGenerator.generate(FileGenerator.java:31)
> > > at org.apache.cocoon.sitemap.ResourcePipeline.process(ResourcePipeline.java, Compiled Code)
> > > at _C_._jakarta_tomcat._webapps._cocoon._sitemap_xmap.process(_sitemap_xmap.java:1415)
> > > at org.apache.cocoon.sitemap.SitemapHandler.process(SitemapHandler.java:127)
> > > at org.apache.cocoon.sitemap.SitemapManager.invoke(SitemapManager.java:83)
> > > at org.apache.cocoon.Cocoon.process(Cocoon.java:206)
> > > at org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:191)
> > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
> > > at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java, Compiled Code)
> > > at org.apache.tomcat.core.ContextManager.service(ContextManager.java:559)
> > > at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:160)
> > > at org.apache.tomcat.service.TcpConnectionThread.run(SimpleTcpEndpoint.java:338)
> > > at java.lang.Thread.run(Thread.java:479)
> > >
> > > **************** printStream notifications: 1 ***************
> > >
> > > The exception disappears only if I call super on both events (two start, two end).
> > > It also disappears if I only take away xmlns="http://apache.org/cocoon/data" .
> > >
> > > I get the same error with:
> > >
> > > <contain>
> > > <chart:chartdef xmlns:chart="http://apache.org/cocoon/Chart2Svg">
> > > <chart:appearance>
> > > <chart:title>IT WORKS!!! :)</chart:title>
> > > <chart:LF3d/>
> > > <chart:colors>
> > > <chart:color>#ffffff</chart:color>
> > > <chart:color>#666666</chart:color>
> > > </chart:colors>
> > > </chart:appearance>
> > > <chart:properties>
> > > <chart:min>0</chart:min>
> > > <chart:max>10</chart:max>
> > > </chart:properties>
> > > <chart:data>
> > > <result>
> > > <row>
> > > <name>1</name>
> > > <surname>4</surname>
> > > </row>
> > > <row>
> > > <name>5</name>
> > > <surname>4</surname>
> > > </row>
> > > <row>
> > > <name>3</name>
> > > <surname>7</surname>
> > > </row>
> > > </result>
> > > </chart:data>
> > > </chart:chartdef>
> > > </contain>
> > >
> > > but it stops calling after </chart:chartdef>.
> > > The strange thing is that in the output I _have_ </contain> !!! :-O
> > >
> > > So I looked in th AbstractTransformer I extend.
> > >
> > > Why is it
> > >
> > > /**
> > > * End the scope of a prefix-URI mapping.
> > > */
> > > public void endPrefixMapping(String prefix)
> > > throws SAXException {
> > > }
> > >
> > > and not
> > >
> > > /**
> > > * End the scope of a prefix-URI mapping.
> > > */
> > > public void endPrefixMapping(String prefix)
> > > throws SAXException {
> > > if (super.contentHandler!=null)
> > > System.out.println("PM!"+prefix);
> > > super.contentHandler.endPrefixMapping(prefix);
> > > }
> > >
> > > ?
> > >
> > > Thanks guys :-)
> >
> > Because you found a bug :)
> >
> > Fixing it right away...
>
> If it can help, the problem hase gone away with Xerces 1.2 (the latest).
Is it out? didn't know.
Anyway, I also applied your patch which is very reasonable and doesn't
hurt.
--
Stefano Mazzocchi One must still have chaos in oneself to be
able to give birth to a dancing star.
<st...@apache.org> Friedrich Nietzsche
--------------------------------------------------------------------
Missed us in Orlando? Make it up with ApacheCON Europe in London!
------------------------- http://ApacheCon.Com ---------------------
Re: Namespace problem in C2 Transformer
Posted by Nicola Ken Barozzi <ni...@supereva.it>.
----- Original Message -----
From: "Stefano Mazzocchi" <st...@apache.org>
To: <co...@xml.apache.org>
Sent: Monday, September 04, 2000 7:30 PM
Subject: Re: Namespace problem in C2 Transformer
> Nicola Ken Barozzi wrote:
> >
> > I'm making a C2 Transformer and I have problems with namespaces.
> > This is my xml:
> >
> > <?xml version="1.0"?>
> > <contain>
> > <chartdef xmlns="http://apache.org/cocoon/Chart2Svg">
> > <appearance>
> > <title>IT WORKS!!! :)</title>
> > <LF3d/>
> > <colors>
> > <color>#ffffff</color>
> > <color>#666666</color>
> > </colors>
> > </appearance>
> > <properties>
> > <min>0</min>
> > <max>10</max>
> > </properties>
> > <data>
> > <result xmlns="http://apache.org/cocoon/data">
> > <row>
> > <name>1</name>
> > <surname>4</surname>
> > </row>
> > <row>
> > <name>5</name>
> > <surname>4</surname>
> > </row>
> > <row>
> > <name>3</name>
> > <surname>7</surname>
> > </row>
> > </result>
> > </data>
> > </chartdef>
> > </contain>
> >
> > Basically I want to read the <result xmlns="http://apache.org/cocoon/data">
> > elements (I just say the transformer to ignore elements out of my <data> element)
> > in my transformer.
> > The two tags with the namespace declarations:
> >
> > <chartdef xmlns="http://apache.org/cocoon/Chart2Svg">
> > <result xmlns="http://apache.org/cocoon/data">
> >
> > are giving me a headache.
> > If I capture their startElement and endElement events and don't call anything in
> > them, they disappear in the output but at the and of the _correct_ output I
> > get the following exception:
> >
> > **********************************************************
> >
> > ?????? ?????? ?????? ?????? ?????? ??????
> > ? ? .? ? ? .? ?. ? ? ?
> > ?????? ?????? ?????? ?????? ?????? ? ? @version@
> >
> > --- Error in the Cocoon 2 pipeline >X==< ---
> >
> > error - Exception in transformer chart2svg with uri http://apache.org/cocoon/Chart2Svg while ending element.
> >
> > description - java.lang.NullPointerException
> >
> > from - org.apache.cocoon.generation.ErrorGenerator
> >
> > source - org.xml.sax.SAXException
> >
> > stacktrace - java.lang.NullPointerException
> > at org.apache.cocoon.transformation.EventBasedAbstractTransformer.endElement(EventBasedAbstractTransformer.java
> > , Compiled Code)
> > at org.apache.xerces.parsers.SAXParser.endElement(SAXParser.java, Compiled Code)
> > at org.apache.xerces.validators.common.XMLValidator.callEndElement(XMLValidator.java, Compiled Code)
> > at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java, Compiled
> > Code)
> > at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java, Compiled Code)
> > at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:861)
> > at org.apache.cocoon.components.parser.XercesParser.parse(XercesParser.java:40)
> > at org.apache.cocoon.generation.FileGenerator.generate(FileGenerator.java:31)
> > at org.apache.cocoon.sitemap.ResourcePipeline.process(ResourcePipeline.java, Compiled Code)
> > at _C_._jakarta_tomcat._webapps._cocoon._sitemap_xmap.process(_sitemap_xmap.java:1415)
> > at org.apache.cocoon.sitemap.SitemapHandler.process(SitemapHandler.java:127)
> > at org.apache.cocoon.sitemap.SitemapManager.invoke(SitemapManager.java:83)
> > at org.apache.cocoon.Cocoon.process(Cocoon.java:206)
> > at org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:191)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
> > at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java, Compiled Code)
> > at org.apache.tomcat.core.ContextManager.service(ContextManager.java:559)
> > at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:160)
> > at org.apache.tomcat.service.TcpConnectionThread.run(SimpleTcpEndpoint.java:338)
> > at java.lang.Thread.run(Thread.java:479)
> >
> > **************** printStream notifications: 1 ***************
> >
> > The exception disappears only if I call super on both events (two start, two end).
> > It also disappears if I only take away xmlns="http://apache.org/cocoon/data" .
> >
> > I get the same error with:
> >
> > <contain>
> > <chart:chartdef xmlns:chart="http://apache.org/cocoon/Chart2Svg">
> > <chart:appearance>
> > <chart:title>IT WORKS!!! :)</chart:title>
> > <chart:LF3d/>
> > <chart:colors>
> > <chart:color>#ffffff</chart:color>
> > <chart:color>#666666</chart:color>
> > </chart:colors>
> > </chart:appearance>
> > <chart:properties>
> > <chart:min>0</chart:min>
> > <chart:max>10</chart:max>
> > </chart:properties>
> > <chart:data>
> > <result>
> > <row>
> > <name>1</name>
> > <surname>4</surname>
> > </row>
> > <row>
> > <name>5</name>
> > <surname>4</surname>
> > </row>
> > <row>
> > <name>3</name>
> > <surname>7</surname>
> > </row>
> > </result>
> > </chart:data>
> > </chart:chartdef>
> > </contain>
> >
> > but it stops calling after </chart:chartdef>.
> > The strange thing is that in the output I _have_ </contain> !!! :-O
> >
> > So I looked in th AbstractTransformer I extend.
> >
> > Why is it
> >
> > /**
> > * End the scope of a prefix-URI mapping.
> > */
> > public void endPrefixMapping(String prefix)
> > throws SAXException {
> > }
> >
> > and not
> >
> > /**
> > * End the scope of a prefix-URI mapping.
> > */
> > public void endPrefixMapping(String prefix)
> > throws SAXException {
> > if (super.contentHandler!=null)
> > System.out.println("PM!"+prefix);
> > super.contentHandler.endPrefixMapping(prefix);
> > }
> >
> > ?
> >
> > Thanks guys :-)
>
> Because you found a bug :)
>
> Fixing it right away...
If it can help, the problem hase gone away with Xerces 1.2 (the latest).
Cheers
nicola_ken
Re: Namespace problem in C2 Transformer
Posted by Stefano Mazzocchi <st...@apache.org>.
Nicola Ken Barozzi wrote:
>
> I'm making a C2 Transformer and I have problems with namespaces.
> This is my xml:
>
> <?xml version="1.0"?>
> <contain>
> <chartdef xmlns="http://apache.org/cocoon/Chart2Svg">
> <appearance>
> <title>IT WORKS!!! :)</title>
> <LF3d/>
> <colors>
> <color>#ffffff</color>
> <color>#666666</color>
> </colors>
> </appearance>
> <properties>
> <min>0</min>
> <max>10</max>
> </properties>
> <data>
> <result xmlns="http://apache.org/cocoon/data">
> <row>
> <name>1</name>
> <surname>4</surname>
> </row>
> <row>
> <name>5</name>
> <surname>4</surname>
> </row>
> <row>
> <name>3</name>
> <surname>7</surname>
> </row>
> </result>
> </data>
> </chartdef>
> </contain>
>
> Basically I want to read the <result xmlns="http://apache.org/cocoon/data">
> elements (I just say the transformer to ignore elements out of my <data> element)
> in my transformer.
> The two tags with the namespace declarations:
>
> <chartdef xmlns="http://apache.org/cocoon/Chart2Svg">
> <result xmlns="http://apache.org/cocoon/data">
>
> are giving me a headache.
> If I capture their startElement and endElement events and don't call anything in
> them, they disappear in the output but at the and of the _correct_ output I
> get the following exception:
>
> **********************************************************
>
> ?????? ?????? ?????? ?????? ?????? ??????
> ? ? .? ? ? .? ?. ? ? ?
> ?????? ?????? ?????? ?????? ?????? ? ? @version@
>
> --- Error in the Cocoon 2 pipeline >X==< ---
>
> error - Exception in transformer chart2svg with uri http://apache.org/cocoon/Chart2Svg while ending element.
>
> description - java.lang.NullPointerException
>
> from - org.apache.cocoon.generation.ErrorGenerator
>
> source - org.xml.sax.SAXException
>
> stacktrace - java.lang.NullPointerException
> at org.apache.cocoon.transformation.EventBasedAbstractTransformer.endElement(EventBasedAbstractTransformer.java
> , Compiled Code)
> at org.apache.xerces.parsers.SAXParser.endElement(SAXParser.java, Compiled Code)
> at org.apache.xerces.validators.common.XMLValidator.callEndElement(XMLValidator.java, Compiled Code)
> at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java, Compiled
> Code)
> at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java, Compiled Code)
> at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:861)
> at org.apache.cocoon.components.parser.XercesParser.parse(XercesParser.java:40)
> at org.apache.cocoon.generation.FileGenerator.generate(FileGenerator.java:31)
> at org.apache.cocoon.sitemap.ResourcePipeline.process(ResourcePipeline.java, Compiled Code)
> at _C_._jakarta_tomcat._webapps._cocoon._sitemap_xmap.process(_sitemap_xmap.java:1415)
> at org.apache.cocoon.sitemap.SitemapHandler.process(SitemapHandler.java:127)
> at org.apache.cocoon.sitemap.SitemapManager.invoke(SitemapManager.java:83)
> at org.apache.cocoon.Cocoon.process(Cocoon.java:206)
> at org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:191)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
> at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java, Compiled Code)
> at org.apache.tomcat.core.ContextManager.service(ContextManager.java:559)
> at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:160)
> at org.apache.tomcat.service.TcpConnectionThread.run(SimpleTcpEndpoint.java:338)
> at java.lang.Thread.run(Thread.java:479)
>
> **************** printStream notifications: 1 ***************
>
> The exception disappears only if I call super on both events (two start, two end).
> It also disappears if I only take away xmlns="http://apache.org/cocoon/data" .
>
> I get the same error with:
>
> <contain>
> <chart:chartdef xmlns:chart="http://apache.org/cocoon/Chart2Svg">
> <chart:appearance>
> <chart:title>IT WORKS!!! :)</chart:title>
> <chart:LF3d/>
> <chart:colors>
> <chart:color>#ffffff</chart:color>
> <chart:color>#666666</chart:color>
> </chart:colors>
> </chart:appearance>
> <chart:properties>
> <chart:min>0</chart:min>
> <chart:max>10</chart:max>
> </chart:properties>
> <chart:data>
> <result>
> <row>
> <name>1</name>
> <surname>4</surname>
> </row>
> <row>
> <name>5</name>
> <surname>4</surname>
> </row>
> <row>
> <name>3</name>
> <surname>7</surname>
> </row>
> </result>
> </chart:data>
> </chart:chartdef>
> </contain>
>
> but it stops calling after </chart:chartdef>.
> The strange thing is that in the output I _have_ </contain> !!! :-O
>
> So I looked in th AbstractTransformer I extend.
>
> Why is it
>
> /**
> * End the scope of a prefix-URI mapping.
> */
> public void endPrefixMapping(String prefix)
> throws SAXException {
> }
>
> and not
>
> /**
> * End the scope of a prefix-URI mapping.
> */
> public void endPrefixMapping(String prefix)
> throws SAXException {
> if (super.contentHandler!=null)
> System.out.println("PM!"+prefix);
> super.contentHandler.endPrefixMapping(prefix);
> }
>
> ?
>
> Thanks guys :-)
Because you found a bug :)
Fixing it right away...
--
Stefano Mazzocchi One must still have chaos in oneself to be
able to give birth to a dancing star.
<st...@apache.org> Friedrich Nietzsche
--------------------------------------------------------------------
Missed us in Orlando? Make it up with ApacheCON Europe in London!
------------------------- http://ApacheCon.Com ---------------------
Re: Namespace problem in C2 Transformer
Posted by Giacomo Pati <Gi...@pwr.ch>.
The problem I remember has to do with Xerces. I've read that there is a new version out there which has this bug fixed. I'll commit a new xerces as soon as I can be shure it works with current xalan.
Giacomo
On Mon, Sep 04, 2000 at 06:26:51PM +0200, Nicola Ken Barozzi wrote:
> I'm making a C2 Transformer and I have problems with namespaces.
> This is my xml:
>
> <?xml version="1.0"?>
> <contain>
> <chartdef xmlns="http://apache.org/cocoon/Chart2Svg">
> <appearance>
> <title>IT WORKS!!! :)</title>
> <LF3d/>
> <colors>
> <color>#ffffff</color>
> <color>#666666</color>
> </colors>
> </appearance>
> <properties>
> <min>0</min>
> <max>10</max>
> </properties>
> <data>
> <result xmlns="http://apache.org/cocoon/data">
> <row>
> <name>1</name>
> <surname>4</surname>
> </row>
> <row>
> <name>5</name>
> <surname>4</surname>
> </row>
> <row>
> <name>3</name>
> <surname>7</surname>
> </row>
> </result>
> </data>
> </chartdef>
> </contain>
>
>
> Basically I want to read the <result xmlns="http://apache.org/cocoon/data">
> elements (I just say the transformer to ignore elements out of my <data> element)
> in my transformer.
> The two tags with the namespace declarations:
>
> <chartdef xmlns="http://apache.org/cocoon/Chart2Svg">
> <result xmlns="http://apache.org/cocoon/data">
>
> are giving me a headache.
> If I capture their startElement and endElement events and don't call anything in
> them, they disappear in the output but at the and of the _correct_ output I
> get the following exception:
>
> **********************************************************
>
> ?????? ?????? ?????? ?????? ?????? ??????
> ? ? .? ? ? .? ?. ? ? ?
> ?????? ?????? ?????? ?????? ?????? ? ? @version@
>
> --- Error in the Cocoon 2 pipeline >X==< ---
>
> error - Exception in transformer chart2svg with uri http://apache.org/cocoon/Chart2Svg while ending element.
>
> description - java.lang.NullPointerException
>
> from - org.apache.cocoon.generation.ErrorGenerator
>
> source - org.xml.sax.SAXException
>
> stacktrace - java.lang.NullPointerException
> at org.apache.cocoon.transformation.EventBasedAbstractTransformer.endElement(EventBasedAbstractTransformer.java
> , Compiled Code)
> at org.apache.xerces.parsers.SAXParser.endElement(SAXParser.java, Compiled Code)
> at org.apache.xerces.validators.common.XMLValidator.callEndElement(XMLValidator.java, Compiled Code)
> at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java, Compiled
> Code)
> at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java, Compiled Code)
> at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:861)
> at org.apache.cocoon.components.parser.XercesParser.parse(XercesParser.java:40)
> at org.apache.cocoon.generation.FileGenerator.generate(FileGenerator.java:31)
> at org.apache.cocoon.sitemap.ResourcePipeline.process(ResourcePipeline.java, Compiled Code)
> at _C_._jakarta_tomcat._webapps._cocoon._sitemap_xmap.process(_sitemap_xmap.java:1415)
> at org.apache.cocoon.sitemap.SitemapHandler.process(SitemapHandler.java:127)
> at org.apache.cocoon.sitemap.SitemapManager.invoke(SitemapManager.java:83)
> at org.apache.cocoon.Cocoon.process(Cocoon.java:206)
> at org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:191)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
> at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java, Compiled Code)
> at org.apache.tomcat.core.ContextManager.service(ContextManager.java:559)
> at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:160)
> at org.apache.tomcat.service.TcpConnectionThread.run(SimpleTcpEndpoint.java:338)
> at java.lang.Thread.run(Thread.java:479)
>
>
> **************** printStream notifications: 1 ***************
>
> The exception disappears only if I call super on both events (two start, two end).
> It also disappears if I only take away xmlns="http://apache.org/cocoon/data" .
>
> I get the same error with:
>
> <contain>
> <chart:chartdef xmlns:chart="http://apache.org/cocoon/Chart2Svg">
> <chart:appearance>
> <chart:title>IT WORKS!!! :)</chart:title>
> <chart:LF3d/>
> <chart:colors>
> <chart:color>#ffffff</chart:color>
> <chart:color>#666666</chart:color>
> </chart:colors>
> </chart:appearance>
> <chart:properties>
> <chart:min>0</chart:min>
> <chart:max>10</chart:max>
> </chart:properties>
> <chart:data>
> <result>
> <row>
> <name>1</name>
> <surname>4</surname>
> </row>
> <row>
> <name>5</name>
> <surname>4</surname>
> </row>
> <row>
> <name>3</name>
> <surname>7</surname>
> </row>
> </result>
> </chart:data>
> </chart:chartdef>
> </contain>
>
> but it stops calling after </chart:chartdef>.
> The strange thing is that in the output I _have_ </contain> !!! :-O
>
> So I looked in th AbstractTransformer I extend.
>
> Why is it
>
> /**
> * End the scope of a prefix-URI mapping.
> */
> public void endPrefixMapping(String prefix)
> throws SAXException {
> }
>
> and not
>
> /**
> * End the scope of a prefix-URI mapping.
> */
> public void endPrefixMapping(String prefix)
> throws SAXException {
> if (super.contentHandler!=null)
> System.out.println("PM!"+prefix);
> super.contentHandler.endPrefixMapping(prefix);
> }
>
> ?
>
> Thanks guys :-)
>
> nicola_ken
>
>
>
>
>
>
--
PWR GmbH, Organisation & Entwicklung Tel: +41 (0)1 856 2202
Giacomo Pati, CTO/CEO Fax: +41 (0)1 856 2201
Hintereichenstrasse 7 Mobil: +41 (0)78 759 7703
CH-8166 Niederweningen Mailto:Giacomo.Pati@pwr.ch
Web: http://www.pwr.ch