You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by Andreas Hartmann <an...@apache.org> on 2004/09/22 18:51:50 UTC

Re: svn commit: rev 47047 - in cocoon/trunk/src: blocks/databases/java/org/apache/cocoon/transformation blocks/linkrewriter/java/org/apache/cocoon/transformation blocks/mail/java/org/apache/cocoon/mail/transformation blocks/portal/java/org/apache/cocoon/portal/coplets/basket blocks/portal/java/org/apache/cocoon/portal/transformation blocks/repository/java/org/apache/cocoon/transformation blocks/session-fw/java/org/apache/cocoon/webapps/session/transformation java/org/apache/cocoon/transformation

vgritsenko@apache.org wrote:

[...]

> AbstractSAXTransformer cleanup:
> Make sure namespaceURI is not null


http://www.saxproject.org/?selected=namespaces

If I understand this correctly, a null URI should be used
to denote elements without a namespace (I used to handle
it like that).

I just updated the Cocoon trunk and got a NPE in
AbstractSAXTransformer.endPrefixMapping():

         if (namespaceURI.equals(uri)) {

So how should this be handled?
In Java 1.5 there is XMLConstants.NULL_NS_URI, is there
something similar in 1.4?


-- Andreas


Re: svn commit: rev 47047 - in cocoon/trunk/src: blocks/databases/java/org/apache/cocoon/transformation blocks/linkrewriter/java/org/apache/cocoon/transformation blocks/mail/java/org/apache/cocoon/mail/transformation blocks/portal/java/org/apache/cocoon/portal/coplets/basket blocks/portal/java/org/apache/cocoon/portal/transformation blocks/repository/java/org/apache/cocoon/transformation blocks/session-fw/java/org/apache/cocoon/webapps/session/transformation java/org/apache/cocoon/transformation

Posted by Andreas Hartmann <an...@apache.org>.
Andreas Hartmann wrote:
> vgritsenko@apache.org wrote:
> 
> [...]
> 
>> AbstractSAXTransformer cleanup:
>> Make sure namespaceURI is not null
> 
> 
> 
> http://www.saxproject.org/?selected=namespaces
> 
> If I understand this correctly, a null URI should be used
> to denote elements without a namespace (I used to handle
> it like that).
> 
> I just updated the Cocoon trunk and got a NPE in
> AbstractSAXTransformer.endPrefixMapping():
> 
>         if (namespaceURI.equals(uri)) {

Just in case someone is faced with the same problem:

It happened because a transformer did not call
super.setup() when overriding setup(). That's why
the namespaceURI field was not initialized.

-- Andreas


Re: svn commit: rev 47047 - in cocoon/trunk/src: blocks/databases/java/org/apache/cocoon/transformation blocks/linkrewriter/java/org/apache/cocoon/transformation blocks/mail/java/org/apache/cocoon/mail/transformation blocks/portal/java/org/apache/cocoon/portal/coplets/basket blocks/portal/java/org/apache/cocoon/portal/transformation blocks/repository/java/org/apache/cocoon/transformation blocks/session-fw/java/org/apache/cocoon/webapps/session/transformation java/org/apache/cocoon/transformation

Posted by Sylvain Wallez <sy...@apache.org>.
Andreas Hartmann wrote:

> Sylvain Wallez wrote:
>
>> Andreas Hartmann wrote:
>>
>
> [...]
>
>> Nono: what's explained here is that some parsers may not report the 
>> qName if their namespace-prefixes property is false. The 
>> ContentHandler.startElement() javadoc clearly states that the 
>> namespaceURI *is never null* !
>>
>> Passing null namespace URIs is a well known source or crashes for 
>> Xalan :-/
>
>
> Great, thanks for the info!
>
> Does that mean that the empty string is not allowed as a namespace URI?
>
> <foo:bar xmlns:foo=""/>


Aha, good question!

The namespace spec [1] states that the namespace URI "should have the 
characteristics of uniqueness and persistence". The empty string doesn't 
seem explicitely forbidden, but I'm not sure it has the required 
characteristics :-)

Sylvain

[1] http://www.w3.org/TR/REC-xml-names/#ns-decl

-- 
Sylvain Wallez                                  Anyware Technologies
http://www.apache.org/~sylvain           http://www.anyware-tech.com
{ XML, Java, Cocoon, OpenSource }*{ Training, Consulting, Projects }


Re: svn commit: rev 47047 - in cocoon/trunk/src: blocks/databases/java/org/apache/cocoon/transformation blocks/linkrewriter/java/org/apache/cocoon/transformation blocks/mail/java/org/apache/cocoon/mail/transformation blocks/portal/java/org/apache/cocoon/portal/coplets/basket blocks/portal/java/org/apache/cocoon/portal/transformation blocks/repository/java/org/apache/cocoon/transformation blocks/session-fw/java/org/apache/cocoon/webapps/session/transformation java/org/apache/cocoon/transformation

Posted by Andreas Hartmann <an...@apache.org>.
Sylvain Wallez wrote:
> Andreas Hartmann wrote:
> 

[...]

> Nono: what's explained here is that some parsers may not report the 
> qName if their namespace-prefixes property is false. The 
> ContentHandler.startElement() javadoc clearly states that the 
> namespaceURI *is never null* !
> 
> Passing null namespace URIs is a well known source or crashes for Xalan :-/

Great, thanks for the info!

Does that mean that the empty string is not allowed as a namespace URI?

<foo:bar xmlns:foo=""/>

-- Andreas


Re: svn commit: rev 47047 - in cocoon/trunk/src: blocks/databases/java/org/apache/cocoon/transformation blocks/linkrewriter/java/org/apache/cocoon/transformation blocks/mail/java/org/apache/cocoon/mail/transformation blocks/portal/java/org/apache/cocoon/portal/coplets/basket blocks/portal/java/org/apache/cocoon/portal/transformation blocks/repository/java/org/apache/cocoon/transformation blocks/session-fw/java/org/apache/cocoon/webapps/session/transformation java/org/apache/cocoon/transformation

Posted by Sylvain Wallez <sy...@apache.org>.
Andreas Hartmann wrote:

> vgritsenko@apache.org wrote:
>
> [...]
>
>> AbstractSAXTransformer cleanup:
>> Make sure namespaceURI is not null
>
>
>
> http://www.saxproject.org/?selected=namespaces
>
> If I understand this correctly, a null URI should be used
> to denote elements without a namespace (I used to handle
> it like that).


Nono: what's explained here is that some parsers may not report the 
qName if their namespace-prefixes property is false. The 
ContentHandler.startElement() javadoc clearly states that the 
namespaceURI *is never null* !

Passing null namespace URIs is a well known source or crashes for Xalan :-/

Sylvain

[1] 
http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html#startElement(java.lang.String,%20java.lang.String,%20java.lang.String,%20org.xml.sax.Attributes)

-- 
Sylvain Wallez                                  Anyware Technologies
http://www.apache.org/~sylvain           http://www.anyware-tech.com
{ XML, Java, Cocoon, OpenSource }*{ Training, Consulting, Projects }