mrglavas    2004/02/15 21:24:55

  Modified:    java/src/org/apache/xml/serialize HTMLSerializer.java
                        XHTMLSerializer.java
  Log:
  Deprecating HTML/XHTML serializers. Also, fixing long standing Bug #2248. Have had 
this fixed locally for almost a year, might as well apply it.
  
  Revision  Changes    Path
  1.26      +24 -14    xml-xerces/java/src/org/apache/xml/serialize/HTMLSerializer.java
  
  Index: HTMLSerializer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xml/serialize/HTMLSerializer.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- HTMLSerializer.java       10 Feb 2004 17:25:26 -0000      1.25
  +++ HTMLSerializer.java       16 Feb 2004 05:24:55 -0000      1.26
  @@ -2,7 +2,7 @@
    * The Apache Software License, Version 1.1
    *
    *
  - * Copyright (c) 1999-2002 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2004 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -123,7 +123,7 @@
    * <li>Contents of SCRIPT and STYLE elements serialized as CDATA
    * </ul>
    *
  - *
  + * @deprecated
    * @version $Revision$ $Date$
    * @author <a href="mailto:[EMAIL PROTECTED]">Assaf Arkin</a>
    * @see Serializer
  @@ -253,7 +253,8 @@
                   // the document's DOCTYPE. Space preserving defaults
                   // to that of the output format.
                   if ( ! _started )
  -                    startDocument( localName == null ? rawName : localName );
  +                    startDocument( (localName == null || localName.length() == 0) 
  +                        ? rawName : localName );
               } else {
                   // For any other element, if first in parent, then
                   // close parent's opening tag and use the parnet's
  @@ -271,18 +272,25 @@
   
               // Do not change the current element state yet.
               // This only happens in endElement().
  -
  -            if ( rawName == null ) {
  +            
  +            // As per SAX2, the namespace URI is an empty string if the element has 
no
  +            // namespace URI, or namespaces is turned off. The check against null 
protects
  +            // against broken SAX implementations, so I've left it there. - mrglavas
  +            boolean hasNamespaceURI = (namespaceURI != null && 
namespaceURI.length() != 0);
  +
  +            // SAX2: rawName (QName) could be empty string if 
  +            // namespace-prefixes property is false.
  +            if ( rawName == null || rawName.length() == 0) {
                   rawName = localName;
  -                if ( namespaceURI != null ) {
  +                if ( hasNamespaceURI ) {
                       String prefix;
                       prefix = getPrefix( namespaceURI );
  -                    if ( prefix.length() > 0 )
  +                    if ( prefix != null && prefix.length() != 0 )
                           rawName = prefix + ":" + localName;
                   }
                   addNSAttr = true;
               }
  -            if ( namespaceURI == null )
  +            if ( !hasNamespaceURI )
                   htmlName = rawName;
               else {
                   if ( namespaceURI.equals( XHTMLNamespace ) ||
  @@ -306,9 +314,9 @@
               if ( attrs != null ) {
                   for ( i = 0 ; i < attrs.getLength() ; ++i ) {
                       _printer.printSpace();
  -                    name = attrs.getQName( i ).toLowerCase(Locale.ENGLISH);;
  +                    name = attrs.getQName( i ).toLowerCase(Locale.ENGLISH);
                       value = attrs.getValue( i );
  -                    if ( _xhtml || namespaceURI != null ) {
  +                    if ( _xhtml || hasNamespaceURI ) {
                           // XHTML: print empty string for null values.
                           if ( value == null ) {
                               _printer.printText( name );
  @@ -425,7 +433,7 @@
           _printer.unindent();
           state = getElementState();
   
  -        if ( state.namespaceURI == null )
  +        if ( state.namespaceURI == null || state.namespaceURI.length() == 0 )
               htmlName = state.rawName;
           else {
               if ( state.namespaceURI.equals( XHTMLNamespace ) ||
  @@ -558,7 +566,7 @@
               if ( attrs != null ) {
                   for ( i = 0 ; i < attrs.getLength() ; ++i ) {
                       _printer.printSpace();
  -                    name = attrs.getName( i ).toLowerCase(Locale.ENGLISH);;
  +                    name = attrs.getName( i ).toLowerCase(Locale.ENGLISH);
                       value = attrs.getValue( i );
                       if ( _xhtml ) {
                           // XHTML: print empty string for null values.
  @@ -675,10 +683,12 @@
               }
   
               if ( ! _format.getOmitDocumentType() ) {
  -                // XHTML: If public idnentifier and system identifier
  +                // XHTML: If public identifier and system identifier
                   //  specified, print them, else print just system identifier
                   // HTML: If public identifier specified, print it with
                   //  system identifier, if specified.
  +                // XHTML requires that all element names are lower case, so the
  +                // root on the DOCTYPE must be 'html'. - mrglavas
                   if ( _docTypePublicId != null && ( ! _xhtml || _docTypeSystemId != 
null )  ) {
                       if (_xhtml) {
                           _printer.printText( "<!DOCTYPE html PUBLIC " );
  
  
  
  1.10      +3 -3      
xml-xerces/java/src/org/apache/xml/serialize/XHTMLSerializer.java
  
  Index: XHTMLSerializer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xml/serialize/XHTMLSerializer.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- XHTMLSerializer.java      13 May 2003 13:23:49 -0000      1.9
  +++ XHTMLSerializer.java      16 Feb 2004 05:24:55 -0000      1.10
  @@ -2,7 +2,7 @@
    * The Apache Software License, Version 1.1
    *
    *
  - * Copyright (c) 1999-2002 The Apache Software Foundation.  All rights 
  + * Copyright (c) 1999-2004 The Apache Software Foundation.  All rights 
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -68,7 +68,7 @@
    * pretty serializing. For usage instructions see either [EMAIL PROTECTED]
    * Serializer} or [EMAIL PROTECTED] BaseMarkupSerializer}.
    *
  - *
  + * @deprecated
    * @version $Revision$ $Date$
    * @author <a href="mailto:[EMAIL PROTECTED]">Assaf Arkin</a>
    * @see Serializer
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to