org.apache.xml.serializer
Class SerializerBase

java.lang.Object
  extended byorg.apache.xml.serializer.SerializerBase
All Implemented Interfaces:
ContentHandler, DeclHandler, DOM2DTM.CharacterNodeHandler, DOMSerializer, ErrorHandler, ExtendedContentHandler, ExtendedLexicalHandler, LexicalHandler, SerializationHandler, Serializer, SerializerConstants, XSLOutputAttributes
Direct Known Subclasses:
ToSAXHandler, ToStream, ToUnknownStream

public abstract class SerializerBase
extends java.lang.Object
implements SerializationHandler, SerializerConstants, DOM2DTM.CharacterNodeHandler

This class acts as a base class for the XML "serializers" and the stream serializers. It contains a number of common fields and methods.

Author:
Santiago Pericas-Geertsen, G. Todd Miller

Field Summary
 
Fields inherited from interface org.apache.xml.serializer.ExtendedContentHandler
HTML_ATTREMPTY, HTML_ATTRURL, NO_BAD_CHARS
 
Fields inherited from interface org.apache.xml.serializer.SerializerConstants
BEGCDATA, CDATA_CONTINUE, CDATA_DELIMITER_CLOSE, CDATA_DELIMITER_OPEN, CNTCDATA, DEFAULT_SAX_SERIALIZER, EMPTYSTRING, ENDCDATA, ENTITY_AMP, ENTITY_CRLF, ENTITY_GT, ENTITY_LT, ENTITY_QUOT, XML_PREFIX, XMLNS_PREFIX, XMLNS_URI
 
Constructor Summary
SerializerBase()
           
 
Method Summary
 void addAttribute(java.lang.String name, java.lang.String value)
          Adds the given attribute to the set of collected attributes, but only if there is a currently open element.
 void addAttribute(java.lang.String uri, java.lang.String localName, java.lang.String rawName, java.lang.String type, java.lang.String value)
          Adds the given attribute to the set of collected attributes , but only if there is a currently open element.
 void addAttributeAlways(java.lang.String uri, java.lang.String localName, java.lang.String rawName, java.lang.String type, java.lang.String value)
          Adds the given attribute to the set of attributes, even if there is no currently open element.
 void addAttributes(Attributes atts)
          Add the given attributes to the currently collected ones.
 ContentHandler asContentHandler()
          Return a ContentHandler interface into this serializer.
 DOMSerializer asDOMSerializer()
          Return a DOMSerializer interface into this serializer.
 void characters(Node node)
          This method gets the nodes value as a String and uses that String as if it were an input character notification.
 void close()
          Flush and close the underlying java.io.Writer.
 void comment(java.lang.String data)
          Receive notification of a comment.
 void endEntity(java.lang.String name)
          Report the end of an entity.
 void entityReference(java.lang.String name)
          Entity reference event.
 void error(SAXParseException exc)
          Receive notification of a recoverable error.
 void fatalError(SAXParseException exc)
          Receive notification of a non-recoverable error.
 void fireEndEntity(java.lang.String name)
          To fire off end entity trace event
 java.lang.String getDoctypePublic()
          Returns the previously set value of the value to be used as the public identifier in the document type declaration (DTD).
 java.lang.String getDoctypeSystem()
          Returns the previously set value of the value to be used as the system identifier in the document type declaration (DTD).
 java.lang.String getEncoding()
          Returns the character encoding to be used in the output document.
 boolean getIndent()
           
 int getIndentAmount()
           
 java.lang.String getMediaType()
          Gets the mediatype the media-type or MIME type associated with the output document.
 NamespaceMappings getNamespaceMappings()
          Some users of the serializer may need the current namespace mappings
 java.lang.String getNamespaceURI(java.lang.String qname, boolean isElement)
          Returns the URI of an element or attribute.
 java.lang.String getNamespaceURIFromPrefix(java.lang.String prefix)
          Returns the URI of prefix (if any)
 boolean getOmitXMLDeclaration()
           
 java.lang.String getPrefix(java.lang.String namespaceURI)
          Returns the prefix currently pointing to the given URI (if any).
 java.lang.String getStandalone()
          Gets the XSL standalone attribute
 Transformer getTransformer()
          Gets the transformer associated with this serializer
 java.lang.String getVersion()
          Gets the version of the output format.
 void namespaceAfterStartElement(java.lang.String uri, java.lang.String prefix)
          This method is used when a prefix/uri namespace mapping is indicated after the element was started with a startElement() and before and endElement().
 boolean reset()
          Resets the serializer.
 void setDoctype(java.lang.String doctypeSystem, java.lang.String doctypePublic)
          Set the value coming from the xsl:output doctype-public and doctype-system stylesheet properties
 void setDoctypePublic(java.lang.String doctypePublic)
          Set the value coming from the xsl:output doctype-public stylesheet attribute.
 void setDoctypeSystem(java.lang.String doctypeSystem)
          Set the value coming from the xsl:output doctype-system stylesheet attribute.
 void setDocumentLocator(Locator locator)
          Receive an object for locating the origin of SAX document events.
 void setEncoding(java.lang.String m_encoding)
          Sets the character encoding coming from the xsl:output encoding stylesheet attribute.
 void setIndent(boolean doIndent)
          Sets the value coming from the xsl:output indent stylesheet attribute.
 void setIndentAmount(int m_indentAmount)
          Sets the indentation amount.
 void setMediaType(java.lang.String mediaType)
          Sets the value coming from the xsl:output media-type stylesheet attribute.
 void setNamespaceMappings(NamespaceMappings mappings)
          Used only by TransformerSnapshotImpl to restore the serialization to a previous state.
 void setOmitXMLDeclaration(boolean b)
          Sets the value coming from the xsl:output omit-xml-declaration stylesheet attribute
 void setSourceLocator(SourceLocator locator)
          This method is used to set the source locator, which might be used to generated an error message.
 void setStandalone(java.lang.String standalone)
          Sets the value coming from the xsl:output standalone stylesheet attribute.
 void setTransformer(Transformer t)
          Sets the transformer associated with this serializer
 void setVersion(java.lang.String version)
          Sets the value coming from the xsl:output version attribute.
 void startDocument()
          Receive notification of the beginning of a document.
 void warning(SAXParseException exc)
          Receive notification of a warning.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.xml.serializer.SerializationHandler
flushPending, serialize, setContentHandler, setEscaping
 
Methods inherited from interface org.apache.xml.serializer.ExtendedContentHandler
addUniqueAttribute, characters, endElement, startElement, startElement, startPrefixMapping
 
Methods inherited from interface org.xml.sax.ContentHandler
characters, endDocument, endElement, endPrefixMapping, ignorableWhitespace, processingInstruction, skippedEntity, startElement, startPrefixMapping
 
Methods inherited from interface org.xml.sax.ext.LexicalHandler
comment, endCDATA, endDTD, startCDATA, startDTD, startEntity
 
Methods inherited from interface org.apache.xml.serializer.XSLOutputAttributes
setCdataSectionElements
 
Methods inherited from interface org.xml.sax.ext.DeclHandler
attributeDecl, elementDecl, externalEntityDecl, internalEntityDecl
 
Methods inherited from interface org.apache.xml.serializer.Serializer
getOutputFormat, getOutputStream, getWriter, setOutputFormat, setOutputStream, setWriter
 

Constructor Detail

SerializerBase

public SerializerBase()
Method Detail

comment

public void comment(java.lang.String data)
             throws SAXException
Receive notification of a comment.

Specified by:
comment in interface ExtendedLexicalHandler
Parameters:
data - the comment, but unlike the SAX comment() method this method takes a String rather than a character array.
Throws:
SAXException
See Also:
ExtendedLexicalHandler.comment(String)

setDocumentLocator

public void setDocumentLocator(Locator locator)
Receive an object for locating the origin of SAX document events.

Specified by:
setDocumentLocator in interface ContentHandler
Parameters:
locator - An object that can return the location of any SAX document event. Receive an object for locating the origin of SAX document events.

SAX parsers are strongly encouraged (though not absolutely required) to supply a locator: if it does so, it must supply the locator to the application by invoking this method before invoking any of the other methods in the DocumentHandler interface.

The locator allows the application to determine the end position of any document-related event, even if the parser is not reporting an error. Typically, the application will use this information for reporting its own errors (such as character content that does not match an application's business rules). The information returned by the locator is probably not sufficient for use with a search engine.

Note that the locator will return correct information only during the invocation of the events in this interface. The application should not attempt to use it at any other time.

See Also:
Locator

addAttribute

public void addAttribute(java.lang.String uri,
                         java.lang.String localName,
                         java.lang.String rawName,
                         java.lang.String type,
                         java.lang.String value)
                  throws SAXException
Adds the given attribute to the set of collected attributes , but only if there is a currently open element. An element is currently open if a startElement() notification has occured but the start of the element has not yet been written to the output. In the stream case this means that we have not yet been forced to close the elements opening tag by another notification, such as a character notification.

Specified by:
addAttribute in interface ExtendedContentHandler
Parameters:
uri - the URI of the attribute
localName - the local name of the attribute
rawName - the qualified name of the attribute
type - the type of the attribute (probably CDATA)
value - the value of the attribute
Throws:
SAXException
See Also:
ExtendedContentHandler.addAttribute(String, String, String, String, String)

addAttributeAlways

public void addAttributeAlways(java.lang.String uri,
                               java.lang.String localName,
                               java.lang.String rawName,
                               java.lang.String type,
                               java.lang.String value)
Adds the given attribute to the set of attributes, even if there is no currently open element. This is useful if a SAX startPrefixMapping() should need to add an attribute before the element name is seen.

Parameters:
uri - the URI of the attribute
localName - the local name of the attribute
rawName - the qualified name of the attribute
type - the type of the attribute (probably CDATA)
value - the value of the attribute

addAttribute

public void addAttribute(java.lang.String name,
                         java.lang.String value)
Adds the given attribute to the set of collected attributes, but only if there is a currently open element. This method is only called by XSLTC.

Specified by:
addAttribute in interface ExtendedContentHandler
Parameters:
name - the attribute's qualified name
value - the value of the attribute

addAttributes

public void addAttributes(Attributes atts)
                   throws SAXException
Add the given attributes to the currently collected ones. These attributes are always added, regardless of whether on not an element is currently open.

Specified by:
addAttributes in interface ExtendedContentHandler
Parameters:
atts - List of attributes to add to this list
Throws:
SAXException

asContentHandler

public ContentHandler asContentHandler()
                                throws java.io.IOException
Return a ContentHandler interface into this serializer. If the serializer does not support the ContentHandler interface, it should return null.

Specified by:
asContentHandler in interface Serializer
Returns:
A ContentHandler interface into this serializer, or null if the serializer is not SAX 2 capable
Throws:
java.io.IOException - An I/O exception occured

endEntity

public void endEntity(java.lang.String name)
               throws SAXException
Report the end of an entity.

Specified by:
endEntity in interface LexicalHandler
Parameters:
name - The name of the entity that is ending.
Throws:
SAXException - The application may raise an exception.
See Also:
LexicalHandler.startEntity(java.lang.String)

close

public void close()
Flush and close the underlying java.io.Writer. This method applies to ToStream serializers, not ToSAXHandler serializers.

Specified by:
close in interface SerializationHandler
See Also:
ToStream

getEncoding

public java.lang.String getEncoding()
Returns the character encoding to be used in the output document.

Specified by:
getEncoding in interface XSLOutputAttributes
Returns:
the character encoding to be used in the output document.

setEncoding

public void setEncoding(java.lang.String m_encoding)
Sets the character encoding coming from the xsl:output encoding stylesheet attribute.

Specified by:
setEncoding in interface XSLOutputAttributes
Parameters:
m_encoding - the character encoding

setOmitXMLDeclaration

public void setOmitXMLDeclaration(boolean b)
Sets the value coming from the xsl:output omit-xml-declaration stylesheet attribute

Specified by:
setOmitXMLDeclaration in interface XSLOutputAttributes
Parameters:
b - true if the XML declaration is to be omitted from the output document.

getOmitXMLDeclaration

public boolean getOmitXMLDeclaration()
Specified by:
getOmitXMLDeclaration in interface XSLOutputAttributes
Returns:
true if the XML declaration is to be omitted from the output document.

getDoctypePublic

public java.lang.String getDoctypePublic()
Returns the previously set value of the value to be used as the public identifier in the document type declaration (DTD).

Specified by:
getDoctypePublic in interface XSLOutputAttributes
Returns:
the public identifier to be used in the DOCTYPE declaration in the output document.

setDoctypePublic

public void setDoctypePublic(java.lang.String doctypePublic)
Set the value coming from the xsl:output doctype-public stylesheet attribute.

Specified by:
setDoctypePublic in interface XSLOutputAttributes
Parameters:
doctypePublic - the public identifier to be used in the DOCTYPE declaration in the output document.

getDoctypeSystem

public java.lang.String getDoctypeSystem()
Returns the previously set value of the value to be used as the system identifier in the document type declaration (DTD).

Specified by:
getDoctypeSystem in interface XSLOutputAttributes
Returns:
the system identifier to be used in the DOCTYPE declaration in the output document.

setDoctypeSystem

public void setDoctypeSystem(java.lang.String doctypeSystem)
Set the value coming from the xsl:output doctype-system stylesheet attribute.

Specified by:
setDoctypeSystem in interface XSLOutputAttributes
Parameters:
doctypeSystem - the system identifier to be used in the DOCTYPE declaration in the output document.

setDoctype

public void setDoctype(java.lang.String doctypeSystem,
                       java.lang.String doctypePublic)
Set the value coming from the xsl:output doctype-public and doctype-system stylesheet properties

Specified by:
setDoctype in interface XSLOutputAttributes
Parameters:
doctypeSystem - the system identifier to be used in the DOCTYPE declaration in the output document.
doctypePublic - the public identifier to be used in the DOCTYPE declaration in the output document.

setStandalone

public void setStandalone(java.lang.String standalone)
Sets the value coming from the xsl:output standalone stylesheet attribute.

Specified by:
setStandalone in interface XSLOutputAttributes
Parameters:
standalone - a value of "yes" indicates that the standalone delaration is to be included in the output document. This method remembers if the value was explicitly set using this method, verses if the value is the default value.

getStandalone

public java.lang.String getStandalone()
Gets the XSL standalone attribute

Specified by:
getStandalone in interface XSLOutputAttributes
Returns:
a value of "yes" if the standalone delaration is to be included in the output document.
See Also:
XSLOutputAttributes.getStandalone()

getIndent

public boolean getIndent()
Specified by:
getIndent in interface XSLOutputAttributes
Returns:
true if the output document should be indented to visually indicate its structure.

getMediaType

public java.lang.String getMediaType()
Gets the mediatype the media-type or MIME type associated with the output document.

Specified by:
getMediaType in interface XSLOutputAttributes
Returns:
the mediatype the media-type or MIME type associated with the output document.

getVersion

public java.lang.String getVersion()
Gets the version of the output format.

Specified by:
getVersion in interface XSLOutputAttributes
Returns:
the version of the output format.

setVersion

public void setVersion(java.lang.String version)
Sets the value coming from the xsl:output version attribute.

Specified by:
setVersion in interface XSLOutputAttributes
Parameters:
version - the version of the output format.
See Also:
XSLOutputAttributes.setVersion(String)

setMediaType

public void setMediaType(java.lang.String mediaType)
Sets the value coming from the xsl:output media-type stylesheet attribute.

Specified by:
setMediaType in interface XSLOutputAttributes
Parameters:
mediaType - the non-null media-type or MIME type associated with the output document.
See Also:
OutputKeys.MEDIA_TYPE, XSLOutputAttributes.setMediaType(String)

getIndentAmount

public int getIndentAmount()
Specified by:
getIndentAmount in interface XSLOutputAttributes
Returns:
the number of spaces to indent for each indentation level.

setIndentAmount

public void setIndentAmount(int m_indentAmount)
Sets the indentation amount.

Specified by:
setIndentAmount in interface SerializationHandler
Parameters:
m_indentAmount - The m_indentAmount to set

setIndent

public void setIndent(boolean doIndent)
Sets the value coming from the xsl:output indent stylesheet attribute.

Specified by:
setIndent in interface XSLOutputAttributes
Parameters:
doIndent - true if the output document should be indented to visually indicate its structure.
See Also:
XSLOutputAttributes.setIndent(boolean)

namespaceAfterStartElement

public void namespaceAfterStartElement(java.lang.String uri,
                                       java.lang.String prefix)
                                throws SAXException
This method is used when a prefix/uri namespace mapping is indicated after the element was started with a startElement() and before and endElement(). startPrefixMapping(prefix,uri) would be used before the startElement() call.

Specified by:
namespaceAfterStartElement in interface ExtendedContentHandler
Parameters:
uri - the URI of the namespace
prefix - the prefix associated with the given URI.
Throws:
SAXException
See Also:
ExtendedContentHandler.namespaceAfterStartElement(String, String)

asDOMSerializer

public DOMSerializer asDOMSerializer()
                              throws java.io.IOException
Return a DOMSerializer interface into this serializer. If the serializer does not support the DOMSerializer interface, it should return null.

Specified by:
asDOMSerializer in interface Serializer
Returns:
A DOMSerializer interface into this serializer, or null if the serializer is not DOM capable
Throws:
java.io.IOException - An I/O exception occured
See Also:
Serializer.asDOMSerializer()

getNamespaceMappings

public NamespaceMappings getNamespaceMappings()
Some users of the serializer may need the current namespace mappings

Specified by:
getNamespaceMappings in interface ExtendedContentHandler
Returns:
the current namespace mappings (prefix/uri)
See Also:
ExtendedContentHandler.getNamespaceMappings()

getPrefix

public java.lang.String getPrefix(java.lang.String namespaceURI)
Returns the prefix currently pointing to the given URI (if any).

Specified by:
getPrefix in interface ExtendedContentHandler
Parameters:
namespaceURI - the uri of the namespace in question
Returns:
a prefix pointing to the given URI (if any).
See Also:
ExtendedContentHandler.getPrefix(String)

getNamespaceURI

public java.lang.String getNamespaceURI(java.lang.String qname,
                                        boolean isElement)
Returns the URI of an element or attribute. Note that default namespaces do not apply directly to attributes.

Specified by:
getNamespaceURI in interface ExtendedContentHandler
Parameters:
qname - a qualified name
isElement - true if the qualified name is the name of an element.
Returns:
returns the namespace URI associated with the qualified name.

getNamespaceURIFromPrefix

public java.lang.String getNamespaceURIFromPrefix(java.lang.String prefix)
Returns the URI of prefix (if any)

Specified by:
getNamespaceURIFromPrefix in interface ExtendedContentHandler
Parameters:
prefix - the prefix whose URI is searched for
Returns:
the namespace URI currently associated with the prefix, null if the prefix is undefined.

entityReference

public void entityReference(java.lang.String name)
                     throws SAXException
Entity reference event.

Specified by:
entityReference in interface ExtendedContentHandler
Parameters:
name - Name of entity
Throws:
SAXException

setTransformer

public void setTransformer(Transformer t)
Sets the transformer associated with this serializer

Specified by:
setTransformer in interface SerializationHandler
Parameters:
t - the transformer associated with this serializer.
See Also:
SerializationHandler.setTransformer(Transformer)

getTransformer

public Transformer getTransformer()
Gets the transformer associated with this serializer

Specified by:
getTransformer in interface SerializationHandler
Returns:
returns the transformer associated with this serializer.
See Also:
SerializationHandler.getTransformer()

characters

public void characters(Node node)
                throws SAXException
This method gets the nodes value as a String and uses that String as if it were an input character notification.

Specified by:
characters in interface DOM2DTM.CharacterNodeHandler
Parameters:
node - the Node to serialize
Throws:
SAXException

error

public void error(SAXParseException exc)
           throws SAXException
Description copied from interface: ErrorHandler
Receive notification of a recoverable error.

This corresponds to the definition of "error" in section 1.2 of the W3C XML 1.0 Recommendation. For example, a validating parser would use this callback to report the violation of a validity constraint. The default behaviour is to take no action.

The SAX parser must continue to provide normal parsing events after invoking this method: it should still be possible for the application to process the document through to the end. If the application cannot do so, then the parser should report a fatal error even if the XML 1.0 recommendation does not require it to do so.

Filters may use this method to report other, non-XML errors as well.

Specified by:
error in interface ErrorHandler
Parameters:
exc - The error information encapsulated in a SAX parse exception.
Throws:
SAXException - Any SAX exception, possibly wrapping another exception.
See Also:
ErrorHandler.error(SAXParseException)

fatalError

public void fatalError(SAXParseException exc)
                throws SAXException
Description copied from interface: ErrorHandler
Receive notification of a non-recoverable error.

This corresponds to the definition of "fatal error" in section 1.2 of the W3C XML 1.0 Recommendation. For example, a parser would use this callback to report the violation of a well-formedness constraint.

The application must assume that the document is unusable after the parser has invoked this method, and should continue (if at all) only for the sake of collecting addition error messages: in fact, SAX parsers are free to stop reporting any other events once this method has been invoked.

Specified by:
fatalError in interface ErrorHandler
Parameters:
exc - The error information encapsulated in a SAX parse exception.
Throws:
SAXException - Any SAX exception, possibly wrapping another exception.
See Also:
ErrorHandler.fatalError(SAXParseException)

warning

public void warning(SAXParseException exc)
             throws SAXException
Description copied from interface: ErrorHandler
Receive notification of a warning.

SAX parsers will use this method to report conditions that are not errors or fatal errors as defined by the XML 1.0 recommendation. The default behaviour is to take no action.

The SAX parser must continue to provide normal parsing events after invoking this method: it should still be possible for the application to process the document through to the end.

Filters may use this method to report other, non-XML warnings as well.

Specified by:
warning in interface ErrorHandler
Parameters:
exc - The warning information encapsulated in a SAX parse exception.
Throws:
SAXException - Any SAX exception, possibly wrapping another exception.
See Also:
ErrorHandler.warning(SAXParseException)

fireEndEntity

public void fireEndEntity(java.lang.String name)
                   throws SAXException
To fire off end entity trace event

Parameters:
name - Name of entity
Throws:
SAXException

startDocument

public void startDocument()
                   throws SAXException
Receive notification of the beginning of a document. This method is never a self generated call, but only called externally.

The SAX parser will invoke this method only once, before any other methods in this interface or in DTDHandler (except for setDocumentLocator).

Specified by:
startDocument in interface ContentHandler
Throws:
SAXException - Any SAX exception, possibly wrapping another exception.
SAXException
See Also:
ContentHandler.endDocument()

setSourceLocator

public void setSourceLocator(SourceLocator locator)
This method is used to set the source locator, which might be used to generated an error message.

Specified by:
setSourceLocator in interface ExtendedContentHandler
Parameters:
locator - the source locator
See Also:
ExtendedContentHandler.setSourceLocator(javax.xml.transform.SourceLocator)

setNamespaceMappings

public void setNamespaceMappings(NamespaceMappings mappings)
Used only by TransformerSnapshotImpl to restore the serialization to a previous state.

Specified by:
setNamespaceMappings in interface SerializationHandler

reset

public boolean reset()
Description copied from interface: Serializer
Resets the serializer. If this method returns true, the serializer may be used for subsequent serialization of new documents. It is possible to change the output format and output stream prior to serializing, or to use the existing output format and output stream.

Specified by:
reset in interface Serializer
Returns:
True if serializer has been reset and can be reused


Copyright © 2004 Apache XML Project. All Rights Reserved.