You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by "Alexander Klimetschek (JIRA)" <xa...@xml.apache.org> on 2007/02/21 14:23:05 UTC

[jira] Created: (XALANJ-2369) Doctype added twice when ignorableWhitespace() is called before startDocument()

Doctype added twice when ignorableWhitespace() is called before startDocument()
-------------------------------------------------------------------------------

                 Key: XALANJ-2369
                 URL: https://issues.apache.org/jira/browse/XALANJ-2369
             Project: XalanJ2
          Issue Type: Bug
          Components: Serialization
    Affects Versions: 2.7
         Environment: Windows, Mac OS X, Linux
            Reporter: Alexander Klimetschek


In some cases the Doctype gets added twice. I experienced it when serializing as HTML, but from looking at the code I see the problem is generic for serialization.

Steps to reproduce:
Since using Cocoon, I cannot provide a clean java snippet that reproduces the failure. The setup is a TransformerHandler writing into a StreamResult with output properties set to method=html (apart others):

            TransformerHandler handler = this.getTransformerHandler();
            handler.getTransformer().setOutputProperties(this.format);
            handler.setResult(new StreamResult(this.output));
            this.setContentHandler(handler);
            this.setLexicalHandler(handler);


First call:
The stacktrace upon the first call is when ToHTMLStream.ignorableWhiteSpace() is called, which effectively calls startDocumentInternal() that writes out the doctype for the first time. The m_needToCallStartDocument is set to false.

Second call:
The TransformerIdentityImpl.flushStartDoc() calls ToHTMLStream.startDocument(), which calls startDocumentInternal() *without* checking if m_needToCallStartDocument is true or not. The doctype is added for the second time.

Proposed fix:
SerializerBase.startDocument() should call startDocumentInternal() only if m_needToCallStartDocument is true. Or, even better, include the check for m_needToCallStartDocument inside startDocumentInternal() method to prevent similar mistakes.

Maybe related to http://issues.apache.org/jira/browse/XALANJ-1685 ??

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-dev-help@xml.apache.org