This class is used for generating complex content, that is, the content of an
element or document node. It enforces the rules on the order of events within
complex content (attributes and namespaces must come first), and it implements
part of the namespace fixup rules, in particular, it ensures that there is a
namespace node for the namespace used in the element name and in each attribute
name.
The same ComplexContentOutputter may be used for generating an entire XML
document; it is not necessary to create a new outputter for each element node.
attribute
public void attribute(int nameCode,
int typeCode,
CharSequence value,
int locationId,
int properties)
throws XPathException
Output an attribute value.
This is added to a list of pending attributes for the current start tag, overwriting
any previous attribute with the same name.
This method should NOT be used to output namespace declarations.
- attribute in interface Receiver
nameCode
- The name of the attributevalue
- The value of the attributeproperties
- Bit fields containing properties of the attribute to be written
XPathException
- if there is no start tag to write to (created using writeStartTag),
or if character content has been written since the start tag was written.
characters
public void characters(CharSequence s,
int locationId,
int properties)
throws XPathException
Produce text content output.
Special characters are escaped using XML/HTML conventions if the output format
requires it.
- characters in interface Receiver
s
- The String to be output
comment
public void comment(CharSequence comment,
int locationId,
int properties)
throws XPathException
Write a comment
- comment in interface Receiver
contentHasBeenWritten
public boolean contentHasBeenWritten()
Test whether any content has been written to this ComplexContentOutputter
- true if content has been written
namespace
public void namespace(int nscode,
int properties)
throws XPathException
Output a namespace declaration.
This is added to a list of pending namespaces for the current start tag.
If there is already another declaration of the same prefix, this one is
ignored, unless the REJECT_DUPLICATES flag is set, in which case this is an error.
Note that unlike SAX2 startPrefixMapping(), this call is made AFTER writing the start tag.
- namespace in interface Receiver
nscode
- The namespace code
XPathException
- if there is no start tag to write to (created using writeStartTag),
or if character content has been written since the start tag was written.
processingInstruction
public void processingInstruction(String target,
CharSequence data,
int locationId,
int properties)
throws XPathException
Write a processing instruction
- processingInstruction in interface Receiver
setHostLanguage
public void setHostLanguage(int language)
Set the host language
setReceiver
public void setReceiver(Receiver receiver)
Set the receiver (to handle the next stage in the pipeline) directly
receiver
- the receiver to handle the next stage in the pipeline
startElement
public void startElement(int nameCode,
int typeCode,
int locationId,
int properties)
throws XPathException
Output an element start tag.
The actual output of the tag is deferred until all attributes have been output
using attribute().
- startElement in interface Receiver
nameCode
- The element name code