org.apache.xml.serializer
Class ToUnknownStream

java.lang.Object
  extended by org.apache.xml.serializer.SerializerBase
      extended by org.apache.xml.serializer.ToUnknownStream
All Implemented Interfaces:
DOMSerializer, ExtendedContentHandler, ExtendedLexicalHandler, SerializationHandler, Serializer, SerializerConstants, XSLOutputAttributes, org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.ErrorHandler, org.xml.sax.ext.DeclHandler, org.xml.sax.ext.LexicalHandler

public final class ToUnknownStream
extends SerializerBase

This class wraps another SerializationHandler. The wrapped object will either handler XML or HTML, which is not known until a little later when the first XML tag is seen. If the first tag is then the wrapped object is an HTML handler, otherwise it is an XML handler. This class effectively caches the first few calls to it then passes them on to the wrapped handler (once it exists). After that subsequent calls a simply passed directly to the wrapped handler. The user of this class doesn't know if the output is ultimatley XML or HTML. This class is not a public API, it is public because it is used within Xalan.


Field Summary
private static java.lang.String EMPTYSTRING
          A String with no characters
private  java.lang.String m_firstElementLocalName
          the local name (no prefix) associated with the first element
private  java.lang.String m_firstElementName
          the element name (including any prefix) of the very first tag in the document
private  java.lang.String m_firstElementPrefix
          the prefix of the very first tag in the document
private  java.lang.String m_firstElementURI
          the namespace URI associated with the first element
private  boolean m_firstTagNotEmitted
          true if the first tag has been emitted to the wrapped handler
private  SerializationHandler m_handler
          The wrapped handler, initially XML but possibly switched to HTML
private  java.util.Vector m_namespacePrefix
          A collection of namespace Prefix (only for first element) _namespaceURI has the matching URIs for these prefix'
private  java.util.Vector m_namespaceURI
          A collection of namespace URI's (only for first element).
private  boolean m_needToCallStartDocument
          true if startDocument() was called before the underlying handler was initialized
private  boolean m_setDoctypePublic_called
          true if setDoctypePublic() was called before the underlying handler was initialized
private  boolean m_setDoctypeSystem_called
          true if setDoctypeSystem() was called before the underlying handler was initialized
private  boolean m_setMediaType_called
          true if setMediaType() was called before the underlying handler was initialized
private  boolean m_setVersion_called
          true if setVersion() was called before the underlying handler was initialized
private  boolean m_wrapped_handler_not_initialized
          true if the underlying handler (XML or HTML) is fully initialized
 
Fields inherited from class org.apache.xml.serializer.SerializerBase
m_attrBuff, m_attributes, m_CdataElems, m_cdataTagOpen, m_charsBuff, m_docIsEmpty, m_doctypePublic, m_doctypeSystem, m_doIndent, m_elemContext, m_indentAmount, m_inEntityRef, m_inExternalDTD, m_mediatype, m_needToOutputDocTypeDecl, m_prefixMap, m_shouldNotWriteXMLHeader, m_sourceLocator, m_standaloneWasSpecified, m_StringOfCDATASections, m_tracer, m_version, m_writer, PKG_NAME, PKG_PATH
 
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
CDATA_CONTINUE, CDATA_DELIMITER_CLOSE, CDATA_DELIMITER_OPEN, DEFAULT_SAX_SERIALIZER, ENTITY_AMP, ENTITY_CRLF, ENTITY_GT, ENTITY_LT, ENTITY_QUOT, XML_PREFIX, XMLNS_PREFIX, XMLNS_URI, XMLVERSION10, XMLVERSION11
 
Constructor Summary
ToUnknownStream()
          Default constructor.
 
Method Summary
 void addAttribute(java.lang.String rawName, java.lang.String value)
          Adds an attribute to the currenly open tag
 void addAttribute(java.lang.String uri, java.lang.String localName, java.lang.String rawName, java.lang.String type, java.lang.String value, boolean XSLAttribute)
          Adds an attribute to the currenly open tag
 void addAttributes(org.xml.sax.Attributes atts)
          Add the given attributes to the currently collected ones.
 void addUniqueAttribute(java.lang.String rawName, java.lang.String value, int flags)
          Adds a unique attribute to the currenly open tag
 org.xml.sax.ContentHandler asContentHandler()
          Return a ContentHandler interface into this serializer.
 java.lang.Object asDOM3Serializer()
          Return a DOM3Serializer interface into this serializer.
 DOMSerializer asDOMSerializer()
          Return a DOMSerializer interface into this serializer.
 void attributeDecl(java.lang.String arg0, java.lang.String arg1, java.lang.String arg2, java.lang.String arg3, java.lang.String arg4)
          Pass the call on to the underlying handler
 void characters(char[] characters, int offset, int length)
          Pass the call on to the underlying handler
 void characters(java.lang.String chars)
          Converts the String to a character array and calls the SAX method characters(char[],int,int);
 void close()
          Flush and close the underlying java.io.Writer.
 void comment(char[] ch, int start, int length)
          Pass the call on to the underlying handler
 void comment(java.lang.String comment)
          Pass the call on to the underlying handler
 void elementDecl(java.lang.String arg0, java.lang.String arg1)
          Pass the call on to the underlying handler
private  void emitFirstTag()
           
 void endCDATA()
          Pass the call on to the underlying handler
 void endDocument()
          Pass the call on to the underlying handler
 void endDTD()
          Pass the call on to the underlying handler
 void endElement(java.lang.String elementName)
          Pass the call on to the underlying handler
 void endElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qName)
          Pass the call on to the underlying handler
 void endEntity(java.lang.String name)
          Pass the call on to the underlying handler
 void endPrefixMapping(java.lang.String prefix)
          Pass the call on to the underlying handler
 void entityReference(java.lang.String entityName)
          Entity reference event.
 void externalEntityDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId)
          Pass the call on to the underlying handler
protected  void firePseudoElement(java.lang.String elementName)
           
private  void flush()
           
 void flushPending()
          A SerializationHandler accepts SAX-like events, so it can accumulate attributes or namespace nodes after a startElement().
 java.lang.String getDoctypePublic()
          Pass the call on to the underlying handler
 java.lang.String getDoctypeSystem()
          Pass the call on to the underlying handler
 java.lang.String getEncoding()
          Pass the call on to the underlying handler
 boolean getIndent()
          Pass the call on to the underlying handler
 int getIndentAmount()
          Pass the call on to the underlying handler
private  java.lang.String getLocalNameUnknown(java.lang.String value)
          Utility function for calls to local-name().
 java.lang.String getMediaType()
          Pass the call on to the underlying handler
 NamespaceMappings getNamespaceMappings()
          Get 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()
          Pass the call on to the underlying handler
 java.util.Properties getOutputFormat()
          Returns the output format properties for this serializer.
 java.io.OutputStream getOutputStream()
          Get the output stream where the events will be serialized to.
 java.lang.String getPrefix(java.lang.String namespaceURI)
          Returns the prefix currently pointing to the given URI (if any).
private  java.lang.String getPrefixPartUnknown(java.lang.String qname)
          Utility function to return prefix Don't want to override static function on SerializerBase So added Unknown suffix to method name.
 java.lang.String getStandalone()
          Pass the call on to the underlying handler
 javax.xml.transform.Transformer getTransformer()
          Gets the transformer associated with this serializer
 java.lang.String getVersion()
          Pass the call on to the underlying handler
 java.io.Writer getWriter()
          Get the character stream where the events will be serialized to.
 void ignorableWhitespace(char[] ch, int start, int length)
          Pass the call on to the underlying handler
private  void initStreamOutput()
          Initialize the wrapped output stream (XML or HTML).
 void internalEntityDecl(java.lang.String arg0, java.lang.String arg1)
          Pass the call on to the underlying handler
private  boolean isFirstElemHTML()
          Determine if the firts element in the document is or This uses the cached first element name, first element prefix and the cached namespaces from previous method calls
 void namespaceAfterStartElement(java.lang.String prefix, java.lang.String uri)
          This method is used when a prefix/uri namespace mapping is indicated after the element was started with a startElement() and before and endElement().
 void processingInstruction(java.lang.String target, java.lang.String data)
          Pass the call on to the underlying handler
 boolean reset()
          passes the call on to the underlying HTML or XML handler
 void serialize(org.w3c.dom.Node node)
          Converts the DOM node to output
 void setCdataSectionElements(java.util.Vector URI_and_localNames)
          Sets the value coming from the xsl:output cdata-section-elements stylesheet property.
 void setContentHandler(org.xml.sax.ContentHandler ch)
          Set the SAX Content handler that the serializer sends its output to.
 void setDoctype(java.lang.String system, java.lang.String pub)
          Set the value coming from the xsl:output doctype-public and doctype-system stylesheet properties
 void setDoctypePublic(java.lang.String doctype)
          Set the doctype in the underlying XML handler.
 void setDoctypeSystem(java.lang.String doctype)
          Set the doctype in the underlying XML handler.
 void setDocumentLocator(org.xml.sax.Locator locator)
          Pass the call on to the underlying handler
 void setEncoding(java.lang.String encoding)
          Pass the call on to the underlying handler
 boolean setEscaping(boolean escape)
          Turns special character escaping on/off.
 void setIndent(boolean indent)
          Pass the call on to the underlying handler
 void setIndentAmount(int value)
          Pass the call on to the underlying handler
 void setMediaType(java.lang.String mediaType)
          Sets the value coming from the xsl:output media-type stylesheet attribute.
 void setOmitXMLDeclaration(boolean b)
          Pass the call on to the underlying handler
 void setOutputFormat(java.util.Properties format)
          Set the properties of the handler
 void setOutputStream(java.io.OutputStream output)
          Sets the output stream to write to
 void setSourceLocator(javax.xml.transform.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)
          Pass the call on to the underlying handler
 void setTransformer(javax.xml.transform.Transformer t)
          Sets the transformer associated with this serializer
 void setVersion(java.lang.String version)
          This method cannot be cached because default is different in HTML and XML (we need more than a boolean).
 void setWriter(java.io.Writer writer)
          Sets the writer to write to
 void skippedEntity(java.lang.String name)
          Pass the call on to the underlying handler
 void startCDATA()
          Pass the call on to the underlying handler
 void startDocument()
          Receive notification of the beginning of a document.
 void startDTD(java.lang.String name, java.lang.String publicId, java.lang.String systemId)
          Pass the call on to the underlying handler
 void startElement(java.lang.String qName)
          This method is used to notify of the start of an element
 void startElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qName)
          This method is used to notify that an element is starting.
 void startElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String elementName, org.xml.sax.Attributes atts)
           
 void startEntity(java.lang.String name)
          Pass the call on to the underlying handler
 void startPrefixMapping(java.lang.String prefix, java.lang.String uri)
           
 boolean startPrefixMapping(java.lang.String prefix, java.lang.String uri, boolean shouldFlush)
          This method is used to notify that a prefix maping is to start, which can be for the current element, or for the one to come.
 
Methods inherited from class org.apache.xml.serializer.SerializerBase
addAttribute, addAttributeAlways, addXSLAttribute, characters, documentIsEmpty, error, fatalError, fireCDATAEvent, fireCharEvent, fireCommentEvent, fireEndDoc, fireEndElem, fireEndEntity, fireEntityReference, fireEscapingEvent, fireStartDoc, fireStartElem, fireStartEntity, getFirstCharLocName, getLocalName, getOutputPropDefaultKeys, getOutputProperty, getOutputPropertyDefault, getOutputPropertyNonDefault, getOutputPropKeys, getPrefixPart, initCDATA, initCdataElems, inTemporaryOutputState, isCdataSection, notationDecl, patchName, setDTDEntityExpansion, setNamespaceMappings, setOutputProperty, setOutputPropertyDefault, setProp, setStandaloneInternal, startDocumentInternal, unparsedEntityDecl, warning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_handler

private SerializationHandler m_handler
The wrapped handler, initially XML but possibly switched to HTML


EMPTYSTRING

private static final java.lang.String EMPTYSTRING
A String with no characters

See Also:
Constant Field Values

m_wrapped_handler_not_initialized

private boolean m_wrapped_handler_not_initialized
true if the underlying handler (XML or HTML) is fully initialized


m_firstElementPrefix

private java.lang.String m_firstElementPrefix
the prefix of the very first tag in the document


m_firstElementName

private java.lang.String m_firstElementName
the element name (including any prefix) of the very first tag in the document


m_firstElementURI

private java.lang.String m_firstElementURI
the namespace URI associated with the first element


m_firstElementLocalName

private java.lang.String m_firstElementLocalName
the local name (no prefix) associated with the first element


m_firstTagNotEmitted

private boolean m_firstTagNotEmitted
true if the first tag has been emitted to the wrapped handler


m_namespaceURI

private java.util.Vector m_namespaceURI
A collection of namespace URI's (only for first element). _namespacePrefix has the matching prefix for these URI's


m_namespacePrefix

private java.util.Vector m_namespacePrefix
A collection of namespace Prefix (only for first element) _namespaceURI has the matching URIs for these prefix'


m_needToCallStartDocument

private boolean m_needToCallStartDocument
true if startDocument() was called before the underlying handler was initialized


m_setVersion_called

private boolean m_setVersion_called
true if setVersion() was called before the underlying handler was initialized


m_setDoctypeSystem_called

private boolean m_setDoctypeSystem_called
true if setDoctypeSystem() was called before the underlying handler was initialized


m_setDoctypePublic_called

private boolean m_setDoctypePublic_called
true if setDoctypePublic() was called before the underlying handler was initialized


m_setMediaType_called

private boolean m_setMediaType_called
true if setMediaType() was called before the underlying handler was initialized

Constructor Detail

ToUnknownStream

public ToUnknownStream()
Default constructor. Initially this object wraps an XML Stream object, so _handler is never null. That may change later to an HTML Stream object.

Method Detail

asContentHandler

public org.xml.sax.ContentHandler asContentHandler()
                                            throws java.io.IOException
Description copied from class: SerializerBase
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
Overrides:
asContentHandler in class SerializerBase
Returns:
the wrapped XML or HTML handler
Throws:
java.io.IOException - An I/O exception occured
See Also:
Serializer.asContentHandler()

close

public void close()
Description copied from class: SerializerBase
Flush and close the underlying java.io.Writer. This method applies to ToStream serializers, not ToSAXHandler serializers.

Specified by:
close in interface SerializationHandler
Overrides:
close in class SerializerBase
See Also:
SerializationHandler.close()

getOutputFormat

public java.util.Properties getOutputFormat()
Description copied from interface: Serializer
Returns the output format properties for this serializer.

Returns:
the properties of the underlying handler
See Also:
Serializer.getOutputFormat()

getOutputStream

public java.io.OutputStream getOutputStream()
Description copied from interface: Serializer
Get the output stream where the events will be serialized to.

Returns:
the OutputStream of the underlying XML or HTML handler
See Also:
Serializer.getOutputStream()

getWriter

public java.io.Writer getWriter()
Description copied from interface: Serializer
Get the character stream where the events will be serialized to.

Returns:
the Writer of the underlying XML or HTML handler
See Also:
Serializer.getWriter()

reset

public boolean reset()
passes the call on to the underlying HTML or XML handler

Specified by:
reset in interface Serializer
Overrides:
reset in class SerializerBase
Returns:
???
See Also:
Serializer.reset()

serialize

public void serialize(org.w3c.dom.Node node)
               throws java.io.IOException
Converts the DOM node to output

Parameters:
node - the DOM node to transform to output
Throws:
java.io.IOException - if an I/O exception occured while serializing
See Also:
DOMSerializer.serialize(Node)

setEscaping

public boolean setEscaping(boolean escape)
                    throws org.xml.sax.SAXException
Description copied from interface: SerializationHandler
Turns special character escaping on/off. Note that characters will never, even if this option is set to 'true', be escaped within CDATA sections in output XML documents.

Parameters:
escape - true if escaping is to be set on.
Throws:
org.xml.sax.SAXException
See Also:
SerializationHandler.setEscaping(boolean)

setOutputFormat

public void setOutputFormat(java.util.Properties format)
Set the properties of the handler

Parameters:
format - the output properties to set
See Also:
Serializer.setOutputFormat(Properties)

setOutputStream

public void setOutputStream(java.io.OutputStream output)
Sets the output stream to write to

Parameters:
output - the OutputStream to write to
See Also:
Serializer.setOutputStream(OutputStream)

setWriter

public void setWriter(java.io.Writer writer)
Sets the writer to write to

Parameters:
writer - the writer to write to
See Also:
Serializer.setWriter(Writer)

addAttribute

public void addAttribute(java.lang.String uri,
                         java.lang.String localName,
                         java.lang.String rawName,
                         java.lang.String type,
                         java.lang.String value,
                         boolean XSLAttribute)
                  throws org.xml.sax.SAXException
Adds an attribute to the currenly open tag

Specified by:
addAttribute in interface ExtendedContentHandler
Overrides:
addAttribute in class SerializerBase
Parameters:
uri - the URI of a namespace
localName - the attribute name, without prefix
rawName - the attribute name, with prefix (if any)
type - the type of the attribute, typically "CDATA"
value - the value of the parameter
XSLAttribute - true if this attribute is coming from an xsl:attribute element
Throws:
org.xml.sax.SAXException
See Also:
ExtendedContentHandler.addAttribute(String, String, String, String, String)

addAttribute

public void addAttribute(java.lang.String rawName,
                         java.lang.String value)
Adds an attribute to the currenly open tag

Specified by:
addAttribute in interface ExtendedContentHandler
Overrides:
addAttribute in class SerializerBase
Parameters:
rawName - the attribute name, with prefix (if any)
value - the value of the parameter
See Also:
ExtendedContentHandler.addAttribute(String, String)

addUniqueAttribute

public void addUniqueAttribute(java.lang.String rawName,
                               java.lang.String value,
                               int flags)
                        throws org.xml.sax.SAXException
Adds a unique attribute to the currenly open tag

Parameters:
rawName - the fully qualified attribute name.
value - the attribute value
flags - a bitwise flag
Throws:
org.xml.sax.SAXException

characters

public void characters(java.lang.String chars)
                throws org.xml.sax.SAXException
Converts the String to a character array and calls the SAX method characters(char[],int,int);

Parameters:
chars - the character data
Throws:
org.xml.sax.SAXException
See Also:
ExtendedContentHandler.characters(String)

endElement

public void endElement(java.lang.String elementName)
                throws org.xml.sax.SAXException
Pass the call on to the underlying handler

Parameters:
elementName - the fully qualified element name.
Throws:
org.xml.sax.SAXException
See Also:
ExtendedContentHandler.endElement(String)

startPrefixMapping

public void startPrefixMapping(java.lang.String prefix,
                               java.lang.String uri)
                        throws org.xml.sax.SAXException
Parameters:
prefix - The prefix that maps to the URI
uri - The URI for the namespace
Throws:
org.xml.sax.SAXException
See Also:
ContentHandler.startPrefixMapping(String, String)

namespaceAfterStartElement

public void namespaceAfterStartElement(java.lang.String prefix,
                                       java.lang.String uri)
                                throws org.xml.sax.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
Overrides:
namespaceAfterStartElement in class SerializerBase
Parameters:
uri - the URI of the namespace
prefix - the prefix associated with the given URI.
Throws:
org.xml.sax.SAXException
See Also:
ExtendedContentHandler.namespaceAfterStartElement(String, String)

startPrefixMapping

public boolean startPrefixMapping(java.lang.String prefix,
                                  java.lang.String uri,
                                  boolean shouldFlush)
                           throws org.xml.sax.SAXException
Description copied from interface: ExtendedContentHandler
This method is used to notify that a prefix maping is to start, which can be for the current element, or for the one to come.

Parameters:
prefix - the prefix that maps to the given URI
uri - the namespace URI of the given prefix
shouldFlush - if true this call is like the SAX startPrefixMapping(prefix,uri) call and the mapping applies to the element to come. If false the mapping applies to the current element.
Returns:
boolean false if the prefix mapping was already in effect (in other words we are just re-declaring), true if this is a new, never before seen mapping for the element.
Throws:
org.xml.sax.SAXException

setVersion

public void setVersion(java.lang.String version)
This method cannot be cached because default is different in HTML and XML (we need more than a boolean).

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

startDocument

public void startDocument()
                   throws org.xml.sax.SAXException
Description copied from class: SerializerBase
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 org.xml.sax.ContentHandler
Overrides:
startDocument in class SerializerBase
Throws:
org.xml.sax.SAXException
See Also:
ContentHandler.startDocument()

startElement

public void startElement(java.lang.String qName)
                  throws org.xml.sax.SAXException
Description copied from interface: ExtendedContentHandler
This method is used to notify of the start of an element

Parameters:
qName - the fully qualified name of the element
Throws:
org.xml.sax.SAXException

startElement

public void startElement(java.lang.String namespaceURI,
                         java.lang.String localName,
                         java.lang.String qName)
                  throws org.xml.sax.SAXException
Description copied from interface: ExtendedContentHandler
This method is used to notify that an element is starting. This method is just like the standard SAX method
 startElement(uri,localName,qname,atts)
 
but without the attributes.

Parameters:
namespaceURI - the namespace URI of the element
localName - the local name (without prefix) of the element
qName - the qualified name of the element
Throws:
org.xml.sax.SAXException

startElement

public void startElement(java.lang.String namespaceURI,
                         java.lang.String localName,
                         java.lang.String elementName,
                         org.xml.sax.Attributes atts)
                  throws org.xml.sax.SAXException
Throws:
org.xml.sax.SAXException

comment

public void comment(java.lang.String comment)
             throws org.xml.sax.SAXException
Pass the call on to the underlying handler

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

getDoctypePublic

public java.lang.String getDoctypePublic()
Pass the call on to the underlying handler

Specified by:
getDoctypePublic in interface XSLOutputAttributes
Overrides:
getDoctypePublic in class SerializerBase
Returns:
the public identifier to be used in the DOCTYPE declaration in the output document.
See Also:
XSLOutputAttributes.getDoctypePublic()

getDoctypeSystem

public java.lang.String getDoctypeSystem()
Pass the call on to the underlying handler

Specified by:
getDoctypeSystem in interface XSLOutputAttributes
Overrides:
getDoctypeSystem in class SerializerBase
Returns:
the system identifier to be used in the DOCTYPE declaration in the output document.
See Also:
XSLOutputAttributes.getDoctypeSystem()

getEncoding

public java.lang.String getEncoding()
Pass the call on to the underlying handler

Specified by:
getEncoding in interface XSLOutputAttributes
Overrides:
getEncoding in class SerializerBase
Returns:
the character encoding to be used in the output document.
See Also:
XSLOutputAttributes.getEncoding()

getIndent

public boolean getIndent()
Pass the call on to the underlying handler

Specified by:
getIndent in interface XSLOutputAttributes
Overrides:
getIndent in class SerializerBase
Returns:
true if the output document should be indented to visually indicate its structure.
See Also:
XSLOutputAttributes.getIndent()

getIndentAmount

public int getIndentAmount()
Pass the call on to the underlying handler

Specified by:
getIndentAmount in interface XSLOutputAttributes
Overrides:
getIndentAmount in class SerializerBase
Returns:
the number of spaces to indent for each indentation level.
See Also:
XSLOutputAttributes.getIndentAmount()

getMediaType

public java.lang.String getMediaType()
Pass the call on to the underlying handler

Specified by:
getMediaType in interface XSLOutputAttributes
Overrides:
getMediaType in class SerializerBase
Returns:
the mediatype the media-type or MIME type associated with the output document.
See Also:
XSLOutputAttributes.getMediaType()

getOmitXMLDeclaration

public boolean getOmitXMLDeclaration()
Pass the call on to the underlying handler

Specified by:
getOmitXMLDeclaration in interface XSLOutputAttributes
Overrides:
getOmitXMLDeclaration in class SerializerBase
Returns:
true if the XML declaration is to be omitted from the output document.
See Also:
XSLOutputAttributes.getOmitXMLDeclaration()

getStandalone

public java.lang.String getStandalone()
Pass the call on to the underlying handler

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

getVersion

public java.lang.String getVersion()
Pass the call on to the underlying handler

Specified by:
getVersion in interface XSLOutputAttributes
Overrides:
getVersion in class SerializerBase
Returns:
the version of the output format.
See Also:
XSLOutputAttributes.getVersion()

setDoctype

public void setDoctype(java.lang.String system,
                       java.lang.String pub)
Description copied from class: SerializerBase
Set the value coming from the xsl:output doctype-public and doctype-system stylesheet properties

Specified by:
setDoctype in interface XSLOutputAttributes
Overrides:
setDoctype in class SerializerBase
Parameters:
system - the system identifier to be used in the DOCTYPE declaration in the output document.
pub - the public identifier to be used in the DOCTYPE declaration in the output document.
See Also:
XSLOutputAttributes.setDoctype(String, String)

setDoctypePublic

public void setDoctypePublic(java.lang.String doctype)
Set the doctype in the underlying XML handler. Remember that this method was called, just in case we need to transfer this doctype to an HTML handler

Specified by:
setDoctypePublic in interface XSLOutputAttributes
Overrides:
setDoctypePublic in class SerializerBase
Parameters:
doctype - the public doctype to set
See Also:
XSLOutputAttributes.setDoctypePublic(String)

setDoctypeSystem

public void setDoctypeSystem(java.lang.String doctype)
Set the doctype in the underlying XML handler. Remember that this method was called, just in case we need to transfer this doctype to an HTML handler

Specified by:
setDoctypeSystem in interface XSLOutputAttributes
Overrides:
setDoctypeSystem in class SerializerBase
Parameters:
doctype - the system doctype to set
See Also:
XSLOutputAttributes.setDoctypeSystem(String)

setEncoding

public void setEncoding(java.lang.String encoding)
Pass the call on to the underlying handler

Specified by:
setEncoding in interface XSLOutputAttributes
Overrides:
setEncoding in class SerializerBase
Parameters:
encoding - the character encoding
See Also:
XSLOutputAttributes.setEncoding(String)

setIndent

public void setIndent(boolean indent)
Pass the call on to the underlying handler

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

setIndentAmount

public void setIndentAmount(int value)
Pass the call on to the underlying handler

Specified by:
setIndentAmount in interface SerializationHandler
Overrides:
setIndentAmount in class SerializerBase
Parameters:
value - The m_indentAmount to set

setMediaType

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

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

setOmitXMLDeclaration

public void setOmitXMLDeclaration(boolean b)
Pass the call on to the underlying handler

Specified by:
setOmitXMLDeclaration in interface XSLOutputAttributes
Overrides:
setOmitXMLDeclaration in class SerializerBase
Parameters:
b - true if the XML declaration is to be omitted from the output document.
See Also:
XSLOutputAttributes.setOmitXMLDeclaration(boolean)

setStandalone

public void setStandalone(java.lang.String standalone)
Pass the call on to the underlying handler

Specified by:
setStandalone in interface XSLOutputAttributes
Overrides:
setStandalone in class SerializerBase
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.
See Also:
XSLOutputAttributes.setStandalone(String)

attributeDecl

public void attributeDecl(java.lang.String arg0,
                          java.lang.String arg1,
                          java.lang.String arg2,
                          java.lang.String arg3,
                          java.lang.String arg4)
                   throws org.xml.sax.SAXException
Pass the call on to the underlying handler

Throws:
org.xml.sax.SAXException
See Also:
DeclHandler.attributeDecl(String, String, String, String, String)

elementDecl

public void elementDecl(java.lang.String arg0,
                        java.lang.String arg1)
                 throws org.xml.sax.SAXException
Pass the call on to the underlying handler

Throws:
org.xml.sax.SAXException
See Also:
DeclHandler.elementDecl(String, String)

externalEntityDecl

public void externalEntityDecl(java.lang.String name,
                               java.lang.String publicId,
                               java.lang.String systemId)
                        throws org.xml.sax.SAXException
Pass the call on to the underlying handler

Throws:
org.xml.sax.SAXException
See Also:
DeclHandler.externalEntityDecl(String, String, String)

internalEntityDecl

public void internalEntityDecl(java.lang.String arg0,
                               java.lang.String arg1)
                        throws org.xml.sax.SAXException
Pass the call on to the underlying handler

Throws:
org.xml.sax.SAXException
See Also:
DeclHandler.internalEntityDecl(String, String)

characters

public void characters(char[] characters,
                       int offset,
                       int length)
                throws org.xml.sax.SAXException
Pass the call on to the underlying handler

Throws:
org.xml.sax.SAXException
See Also:
ContentHandler.characters(char[], int, int)

endDocument

public void endDocument()
                 throws org.xml.sax.SAXException
Pass the call on to the underlying handler

Throws:
org.xml.sax.SAXException
See Also:
ContentHandler.endDocument()

endElement

public void endElement(java.lang.String namespaceURI,
                       java.lang.String localName,
                       java.lang.String qName)
                throws org.xml.sax.SAXException
Pass the call on to the underlying handler

Throws:
org.xml.sax.SAXException
See Also:
ContentHandler.endElement(String, String, String)

endPrefixMapping

public void endPrefixMapping(java.lang.String prefix)
                      throws org.xml.sax.SAXException
Pass the call on to the underlying handler

Throws:
org.xml.sax.SAXException
See Also:
ContentHandler.endPrefixMapping(String)

ignorableWhitespace

public void ignorableWhitespace(char[] ch,
                                int start,
                                int length)
                         throws org.xml.sax.SAXException
Pass the call on to the underlying handler

Throws:
org.xml.sax.SAXException
See Also:
ContentHandler.ignorableWhitespace(char[], int, int)

processingInstruction

public void processingInstruction(java.lang.String target,
                                  java.lang.String data)
                           throws org.xml.sax.SAXException
Pass the call on to the underlying handler

Throws:
org.xml.sax.SAXException
See Also:
ContentHandler.processingInstruction(String, String)

setDocumentLocator

public void setDocumentLocator(org.xml.sax.Locator locator)
Pass the call on to the underlying handler

Specified by:
setDocumentLocator in interface org.xml.sax.ContentHandler
Overrides:
setDocumentLocator in class SerializerBase
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:
ContentHandler.setDocumentLocator(Locator)

skippedEntity

public void skippedEntity(java.lang.String name)
                   throws org.xml.sax.SAXException
Pass the call on to the underlying handler

Throws:
org.xml.sax.SAXException
See Also:
ContentHandler.skippedEntity(String)

comment

public void comment(char[] ch,
                    int start,
                    int length)
             throws org.xml.sax.SAXException
Pass the call on to the underlying handler

Throws:
org.xml.sax.SAXException
See Also:
LexicalHandler.comment(char[], int, int)

endCDATA

public void endCDATA()
              throws org.xml.sax.SAXException
Pass the call on to the underlying handler

Throws:
org.xml.sax.SAXException
See Also:
LexicalHandler.endCDATA()

endDTD

public void endDTD()
            throws org.xml.sax.SAXException
Pass the call on to the underlying handler

Throws:
org.xml.sax.SAXException
See Also:
LexicalHandler.endDTD()

endEntity

public void endEntity(java.lang.String name)
               throws org.xml.sax.SAXException
Pass the call on to the underlying handler

Specified by:
endEntity in interface org.xml.sax.ext.LexicalHandler
Overrides:
endEntity in class SerializerBase
Parameters:
name - The name of the entity that is ending.
Throws:
org.xml.sax.SAXException - The application may raise an exception.
See Also:
LexicalHandler.endEntity(String)

startCDATA

public void startCDATA()
                throws org.xml.sax.SAXException
Pass the call on to the underlying handler

Throws:
org.xml.sax.SAXException
See Also:
LexicalHandler.startCDATA()

startDTD

public void startDTD(java.lang.String name,
                     java.lang.String publicId,
                     java.lang.String systemId)
              throws org.xml.sax.SAXException
Pass the call on to the underlying handler

Throws:
org.xml.sax.SAXException
See Also:
LexicalHandler.startDTD(String, String, String)

startEntity

public void startEntity(java.lang.String name)
                 throws org.xml.sax.SAXException
Pass the call on to the underlying handler

Throws:
org.xml.sax.SAXException
See Also:
LexicalHandler.startEntity(String)

initStreamOutput

private void initStreamOutput()
                       throws org.xml.sax.SAXException
Initialize the wrapped output stream (XML or HTML). If the stream handler should be HTML, then replace the XML handler with an HTML handler. After than send the starting method calls that were cached to the wrapped handler.

Throws:
org.xml.sax.SAXException

emitFirstTag

private void emitFirstTag()
                   throws org.xml.sax.SAXException
Throws:
org.xml.sax.SAXException

getLocalNameUnknown

private java.lang.String getLocalNameUnknown(java.lang.String value)
Utility function for calls to local-name(). Don't want to override static function on SerializerBase So added Unknown suffix to method name.


getPrefixPartUnknown

private java.lang.String getPrefixPartUnknown(java.lang.String qname)
Utility function to return prefix Don't want to override static function on SerializerBase So added Unknown suffix to method name.


isFirstElemHTML

private boolean isFirstElemHTML()
Determine if the firts element in the document is or This uses the cached first element name, first element prefix and the cached namespaces from previous method calls

Returns:
true if the first element is an opening tag

asDOMSerializer

public DOMSerializer asDOMSerializer()
                              throws java.io.IOException
Description copied from class: SerializerBase
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
Overrides:
asDOMSerializer in class SerializerBase
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()

setCdataSectionElements

public void setCdataSectionElements(java.util.Vector URI_and_localNames)
Description copied from interface: XSLOutputAttributes
Sets the value coming from the xsl:output cdata-section-elements stylesheet property. This sets the elements whose text elements are to be output as CDATA sections.

Parameters:
URI_and_localNames - Vector a list of pairs of URI/localName specified in the cdata-section-elements attribute.
See Also:
XSLOutputAttributes.setCdataSectionElements(java.util.Vector)

addAttributes

public void addAttributes(org.xml.sax.Attributes atts)
                   throws org.xml.sax.SAXException
Description copied from class: SerializerBase
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
Overrides:
addAttributes in class SerializerBase
Parameters:
atts - List of attributes to add to this list
Throws:
org.xml.sax.SAXException
See Also:
ExtendedContentHandler.addAttributes(org.xml.sax.Attributes)

getNamespaceMappings

public NamespaceMappings getNamespaceMappings()
Get the current namespace mappings. Simply returns the mappings of the wrapped handler.

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

flushPending

public void flushPending()
                  throws org.xml.sax.SAXException
Description copied from interface: SerializationHandler
A SerializationHandler accepts SAX-like events, so it can accumulate attributes or namespace nodes after a startElement().

If the SerializationHandler has a Writer or OutputStream, a call to this method will flush such accumulated events as a closed start tag for an element.

If the SerializationHandler wraps a ContentHandler, a call to this method will flush such accumulated events as a SAX (not SAX-like) calls to startPrefixMapping() and startElement().

If one calls endDocument() then one need not call this method since a call to endDocument() will do what this method does. However, in some circumstances, such as with document fragments, endDocument() is not called and it may be necessary to call this method to flush any pending events.

For performance reasons this method should not be called very often.

Throws:
org.xml.sax.SAXException
See Also:
SerializationHandler.flushPending()

flush

private void flush()

getPrefix

public java.lang.String getPrefix(java.lang.String namespaceURI)
Description copied from class: SerializerBase
Returns the prefix currently pointing to the given URI (if any).

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

entityReference

public void entityReference(java.lang.String entityName)
                     throws org.xml.sax.SAXException
Description copied from class: SerializerBase
Entity reference event.

Specified by:
entityReference in interface ExtendedContentHandler
Overrides:
entityReference in class SerializerBase
Parameters:
entityName - Name of entity
Throws:
org.xml.sax.SAXException
See Also:
ExtendedContentHandler.entityReference(java.lang.String)

getNamespaceURI

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

Specified by:
getNamespaceURI in interface ExtendedContentHandler
Overrides:
getNamespaceURI in class SerializerBase
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.
See Also:
ExtendedContentHandler.getNamespaceURI(java.lang.String, boolean)

getNamespaceURIFromPrefix

public java.lang.String getNamespaceURIFromPrefix(java.lang.String prefix)
Description copied from class: SerializerBase
Returns the URI of prefix (if any)

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

setTransformer

public void setTransformer(javax.xml.transform.Transformer t)
Description copied from class: SerializerBase
Sets the transformer associated with this serializer

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

getTransformer

public javax.xml.transform.Transformer getTransformer()
Description copied from class: SerializerBase
Gets the transformer associated with this serializer

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

setContentHandler

public void setContentHandler(org.xml.sax.ContentHandler ch)
Description copied from interface: SerializationHandler
Set the SAX Content handler that the serializer sends its output to. This method only applies to a ToSAXHandler, not to a ToStream serializer.

See Also:
SerializationHandler.setContentHandler(org.xml.sax.ContentHandler)

setSourceLocator

public void setSourceLocator(javax.xml.transform.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
Overrides:
setSourceLocator in class SerializerBase
Parameters:
locator - the source locator
See Also:
ExtendedContentHandler.setSourceLocator(javax.xml.transform.SourceLocator)

firePseudoElement

protected void firePseudoElement(java.lang.String elementName)

asDOM3Serializer

public java.lang.Object asDOM3Serializer()
                                  throws java.io.IOException
Description copied from class: SerializerBase
Return a DOM3Serializer interface into this serializer. If the serializer does not support the DOM3Serializer interface, it should return null.

Specified by:
asDOM3Serializer in interface Serializer
Overrides:
asDOM3Serializer in class SerializerBase
Returns:
A DOM3Serializer 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.asDOM3Serializer()