You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-dev@xerces.apache.org by Daniel Barclay <Da...@digitalfocus.com> on 2000/06/12 22:02:21 UTC
bug?: XHTML serialization indentation: missing line break?
XHTMLSerializer doesn't seem to indent right (Xerces 1.1.1).
It generates:
...
<docname>
<one />
<two /></docname>
I thought it would generate:
...
<docname>
<one />
<two />
</docname>
That is, the code doesn't seem to be generated a line break
before end tags.
Note that XMLSerializer indents as expected (for this simple XML,
at least):
<?xml version="1.0" encoding="UTF-8"?>
<docName>
<one/>
<two/>
</docName>
HTMLSerializer also indents symmetrically:
...
<docName>
<one></one>
<two></two>
</docName>
(Although one might want:
...
<docName>
<one>
</one>
<two>
</two>
</docName>
)
Here's my test program (also attached):
----------------------------------------------------------------------
import org.apache.xerces.dom.DOMImplementationImpl;
//import org.apache.xerces.dom.*;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
//import org.w3c.dom.*;
import org.apache.xml.serialize.SerializerFactory;
import org.apache.xml.serialize.Serializer;
import org.apache.xml.serialize.DOMSerializer;
import org.apache.xml.serialize.XMLSerializer;
import org.apache.xml.serialize.OutputFormat;
//import org.apache.xml.serialize.*;
import java.io.UnsupportedEncodingException;
import java.io.IOException;
public class XercesDOMSerialization
{
public static void main( String[] args )
throws IOException
{
System.err.println();
DOMImplementation x = DOMImplementationImpl.getDOMImplementation();
Document doc = x.createDocument( "", "docName", null );
Element rootElem = doc.getDocumentElement();
Element newElem1 = doc.createElement( "one" );
rootElem.appendChild( newElem1 );
Element newElem2 = doc.createElement( "two" );
rootElem.appendChild( newElem2 );
System.err.println();
OutputFormat fmt = new OutputFormat();
fmt.setIndenting( true );
fmt.setIndent( 3 );
//fmt.setIndent( 2 );
//fmt.setLineWidth( 60 );
System.err.println( "========================================" );
System.err.println( "XML serializer:" );
SerializerFactory factoryForXML =
SerializerFactory.getSerializerFactory( "xml" );
Serializer serializerForXML = factoryForXML.makeSerializer( fmt );
serializerForXML.setOutputByteStream( System.err );
DOMSerializer domSerializerForXML =
serializerForXML.asDOMSerializer();
domSerializerForXML.serialize( doc );
System.err.println( "========================================" );
System.err.println( "HTML serializer:" );
SerializerFactory factoryForHTML =
SerializerFactory.getSerializerFactory( "html" );
Serializer serializerForHTML = factoryForHTML.makeSerializer( fmt );
serializerForHTML.setOutputByteStream( System.err );
DOMSerializer domSerializerForHTML =
serializerForHTML.asDOMSerializer();
domSerializerForHTML.serialize( doc );
System.err.println( "========================================" );
System.err.println( "XHTML serializer:" );
SerializerFactory factoryForXHTML =
SerializerFactory.getSerializerFactory( "xhtml" );
Serializer serializerForXHTML = factoryForXHTML.makeSerializer( fmt );
serializerForXHTML.setOutputByteStream( System.err );
DOMSerializer domSerializerForXHTML =
serializerForXHTML.asDOMSerializer();
domSerializerForXHTML.serialize( doc );
System.err.println( "========================================" );
System.err.println( "Text serializer:" );
SerializerFactory factoryForText =
SerializerFactory.getSerializerFactory( "text" );
Serializer serializerForText = factoryForText.makeSerializer( fmt );
serializerForText.setOutputByteStream( System.err );
DOMSerializer domSerializerForText =
serializerForText.asDOMSerializer();
domSerializerForText.serialize( doc );
System.err.println( "========================================" );
} // main( ... )
} // class XercesDOMSerialization
----------------------------------------------------------------------
Daniel
--
Daniel Barclay
Digital Focus
Daniel.Barclay@digitalfocus.com
--
Daniel Barclay
Digital Focus
Daniel.Barclay@digitalfocus.com