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]