You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by ar...@locus.apache.org on 2000/01/15 01:14:04 UTC

cvs commit: xml-xerces/java/src/org/apache/xml/serialize BaseMarkupSerializer.java XMLSerializer.java

arkin       00/01/14 16:14:04

  Modified:    java/src/org/apache/xml/serialize BaseMarkupSerializer.java
                        XMLSerializer.java
  Log:
  Prints public/system identifier based on document type.
  No longer prints DOM entities as internal subset.
  
  Revision  Changes    Path
  1.4       +26 -9     xml-xerces/java/src/org/apache/xml/serialize/BaseMarkupSerializer.java
  
  Index: BaseMarkupSerializer.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xml/serialize/BaseMarkupSerializer.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- BaseMarkupSerializer.java	2000/01/14 20:40:54	1.3
  +++ BaseMarkupSerializer.java	2000/01/15 00:14:03	1.4
  @@ -705,8 +705,6 @@
       {
   	// Only works if we're going out of DTD mode.
   	if ( _writer == _dtdWriter ) {
  -System.out.println( "Writer " + _writer );
  -System.out.println( "DocWriter " + _docWriter );
   	    _line.append( _text );
   	    _text = new StringBuffer( 20 );
   	    flushLine( false );
  @@ -750,13 +748,18 @@
   	    comment( node.getNodeValue() );
   	    break;
   
  -	case Node.ENTITY_REFERENCE_NODE :
  -	    // Entity reference printed directly in text, do not break or pause.
  +	case Node.ENTITY_REFERENCE_NODE : {
  +	    Node         child;
  +
   	    endCDATA();
   	    content();
  -	    printText( '&' + node.getNodeName() + ';' );
  +	    child = node.getFirstChild();
  +	    while ( child != null ) {
  +		serializeNode( child );
  +		child = child.getNextSibling();
  +	    }
   	    break;
  -
  +	}
   	case Node.PROCESSING_INSTRUCTION_NODE :
   	    processingInstruction( node.getNodeName(), node.getNodeValue() );
   	    break;
  @@ -776,13 +779,26 @@
   	    // serialize it.
   	    docType = ( (Document) node ).getDoctype();
   	    if ( docType != null ) {
  -		startDTD( docType.getName(), null, null );
  +		startDTD( docType.getName(), docType.getPublicId(), docType.getSystemId() );
  +		/* This is only required for internal subset
   		map = docType.getEntities();
   		if ( map != null ) {
   		    for ( i = 0 ; i < map.getLength() ; ++i ) {
   			entity = (Entity) map.item( i );
  -			unparsedEntityDecl( entity.getNodeName(), entity.getPublicId(),
  -					    entity.getSystemId(), entity.getNotationName() );
  +			if ( entity.getSystemId() == null && entity.getPublicId() == null ) {
  +			    Node child;
  +
  +			    printText( "<!ENTITY " + entity.getNodeName() + " \"" );
  +			    child = entity.getFirstChild();
  +			    while ( child != null ) {
  +				serializeNode( child );
  +				child = child.getNextSibling();
  +			    }
  +			    printText( "\">" );
  +			} else {
  +			    unparsedEntityDecl( entity.getNodeName(), entity.getPublicId(),
  +						entity.getSystemId(), entity.getNotationName() );
  +			}
   		    }
   		}
   		map = docType.getNotations();
  @@ -792,6 +808,7 @@
   			notationDecl( notation.getNodeName(), notation.getPublicId(), notation.getSystemId() );
   		    }
   		}
  +		*/
   		endDTD();
   	    }
   	    // !! Fall through
  
  
  
  1.6       +11 -0     xml-xerces/java/src/org/apache/xml/serialize/XMLSerializer.java
  
  Index: XMLSerializer.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xml/serialize/XMLSerializer.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- XMLSerializer.java	2000/01/14 20:40:55	1.5
  +++ XMLSerializer.java	2000/01/15 00:14:03	1.6
  @@ -375,6 +375,17 @@
   
   		printText( ">" );
   		breakLine();
  +	    } else if ( dtd != null && dtd.length() > 0 ) {
  +		printText( "<!DOCTYPE " );
  +		printText( rootTagName );
  +		printText( " [" );
  +		indent();
  +		if ( _format.getIndenting() )
  +		    breakLine();
  +		printText( dtd, true );
  +		unindent();
  +		printText( "]>" );
  +		breakLine();
   	    }
   	}
   	_started = true;