Hi,

I don't know if this is a bug or expected behavior?

Through various calls, Xalan ends up calling CoreDocumentImpl.setXmlVersion 
with null if the processed XML document doesn't contain an XML declaration. I'm 
inclined to say that it's a bug since the XML declaration is optional and the 
method should protect against NPEs.

java version "1.7.0_21"
OS: Mac OS X 10.8.4

This simple test code: https://gist.github.com/dustinschultz/5786101
With this XML: https://gist.github.com/dustinschultz/5786108

Results in

java.lang.NullPointerException
at 
com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.setXmlVersion(CoreDocumentImpl.java:860)
at 
com.sun.org.apache.xalan.internal.xsltc.trax.SAX2DOM.setDocumentInfo(SAX2DOM.java:144)
at 
com.sun.org.apache.xalan.internal.xsltc.trax.SAX2DOM.startElement(SAX2DOM.java:154)
at 
com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.closeStartTag(ToXMLSAXHandler.java:208)
at 
com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.characters(ToXMLSAXHandler.java:528)
at 
com.sun.org.apache.xalan.internal.xsltc.trax.StAXStream2SAX.handleCharacters(StAXStream2SAX.java:262)
at 
com.sun.org.apache.xalan.internal.xsltc.trax.StAXStream2SAX.bridge(StAXStream2SAX.java:169)
at 
com.sun.org.apache.xalan.internal.xsltc.trax.StAXStream2SAX.parse(StAXStream2SAX.java:118)
at 
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:678)
at 
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:727)
at 
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:340)

This same code completes without Exception on 1.6.0_45 (likely doesn't call 
setVersion but I haven't confirmed)

Thanks,
Dustin Schultz

Reply via email to