Title: createTextNode(null) causing Xalan NullPointerException

Calling createTextNode with null, e.g.:

        Text text = document.createTextNode(null);

Causes Xalan 2.1.0 with Xerces 1.4 to throw a NullPointerException when trying to transform a Document containing it.  This also happens with Xalan 2.0.1 and Xerces 1.3.1.


1.  Is this a known problem?
2.  Is it valid to create a Text node with a null value?



This code, which creats a simple Document containing a single Element with a single "null" Text node:



import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;

import org.w3c.dom.*;

class TestXalan {

  public static void main(String[] args) throws Exception {
 
    DocumentBuilderFactory  factory  = DocumentBuilderFactory.newInstance();
    DocumentBuilder         builder  = factory.newDocumentBuilder();
    Document                document = builder.newDocument();
   
    TransformerFactory tFactory = TransformerFactory.newInstance();
    Templates stylesheet        = tFactory.newTemplates(new StreamSource(args[0]));

    // build document with null Text node
   
    Element element = document.createElement("test");
    Text    text    = document.createTextNode(null);
   
    element.appendChild(text);
    document.appendChild(element);

    Source source = new DOMSource(document);
    Result result = new DOMResult();

    stylesheet.newTransformer().transform(source, result);
     
  }
 
}



Supplying it this stub stylesheet



<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
      <xsl:copy-of select="."/>
    </xsl:template>
</xsl:stylesheet>




Causes this Exception:




Exception in thread "main" javax.xml.transform.TransformerException
        at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1269)
        at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:504)
        at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1174)
        at TestXalan.main(TestXalan.java:49)
---------
java.lang.NullPointerException
        at org.apache.xml.utils.TreeWalker.dispatachChars(TreeWalker.java:284)
        at org.apache.xml.utils.TreeWalker.startNode(TreeWalker.java:428)
        at org.apache.xalan.transformer.TreeWalker2Result.startNode(TreeWalker2Result.java:247)
        at org.apache.xml.utils.TreeWalker.traverse(TreeWalker.java:192)
        at org.apache.xalan.transformer.TreeWalker2Result.traverse(TreeWalker2Result.java:114)
        at org.apache.xalan.templates.ElemCopyOf.execute(ElemCopyOf.java:202)
        at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2251)
        at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2134)
        at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1246)
        at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:504)
        at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1174)
        at TestXalan.main(TestXalan.java:49)

Reply via email to