public abstract class Outputter extends java.lang.Object implements Receiver
The Outputter interface is an important internal interface within Saxon, and provides a powerful mechanism for integrating Saxon with other applications. It has been designed with extensibility and stability in mind. However, it should be considered as an interface designed primarily for internal use, and not as a completely stable part of the public Saxon API.
Modifier and Type | Field and Description |
---|---|
protected PipelineConfiguration |
pipelineConfiguration |
protected java.lang.String |
systemId |
Constructor and Description |
---|
Outputter() |
Modifier and Type | Method and Description |
---|---|
void |
append(Item item)
Append an arbitrary item (node, atomic value, or function) to the output.
|
void |
append(Item item,
Location locationId,
int properties)
Append an arbitrary item (node, atomic value, or function) to the output.
|
abstract void |
attribute(NodeName attName,
SimpleType typeCode,
java.lang.String value,
Location location,
int properties)
Notify an attribute.
|
abstract void |
characters(UnicodeString chars,
Location location,
int properties)
Notify character data.
|
void |
close()
Notify the end of the event stream
|
abstract void |
comment(UnicodeString content,
Location location,
int properties)
Notify a comment.
|
abstract void |
endDocument()
Notify the end of a document node
|
abstract void |
endElement()
Notify the end of an element.
|
Configuration |
getConfiguration()
Get the Saxon Configuration
|
PipelineConfiguration |
getPipelineConfiguration()
Get the pipeline configuration
|
UniStringConsumer |
getStringReceiver(boolean asTextNode,
Location loc)
Get a string-value consumer object that allows an item of type xs:string
to be appended one fragment at a time.
|
java.lang.String |
getSystemId()
Get the system ID
|
abstract void |
namespace(java.lang.String prefix,
java.lang.String namespaceUri,
int properties)
Notify a namespace binding.
|
void |
namespaces(NamespaceBindingSet bindings,
int properties)
Output a set of namespace bindings.
|
void |
open()
Notify the start of the event stream
|
abstract void |
processingInstruction(java.lang.String name,
UnicodeString data,
Location location,
int properties)
Output a processing instruction
|
void |
setPipelineConfiguration(PipelineConfiguration pipe)
Set the pipeline configuration
|
void |
setSystemId(java.lang.String systemId)
Set the System ID of the tree represented by this event stream
|
void |
setUnparsedEntity(java.lang.String name,
java.lang.String systemID,
java.lang.String publicID)
Notify an unparsed entity URI.
|
void |
startContent()
Notify the start of the content, that is, the completion of all attributes and namespaces.
|
abstract void |
startDocument(int properties)
Notify the start of a document node
|
void |
startElement(NodeName elemName,
SchemaType type,
AttributeMap attributes,
NamespaceMap namespaces,
Location location,
int properties)
Notify the start of an element, supplying all attributes and namespaces
|
abstract void |
startElement(NodeName elemName,
SchemaType typeCode,
Location location,
int properties)
Notify the start of an element.
|
boolean |
usesTypeAnnotations()
Ask whether this Outputter (or the downstream pipeline) makes any use of the type annotations
supplied on element and attribute events.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
handlesAppend
protected PipelineConfiguration pipelineConfiguration
protected java.lang.String systemId
public void setPipelineConfiguration(PipelineConfiguration pipe)
setPipelineConfiguration
in interface Receiver
pipe
- the pipeline configurationpublic PipelineConfiguration getPipelineConfiguration()
getPipelineConfiguration
in interface Receiver
public final Configuration getConfiguration()
public void setSystemId(java.lang.String systemId)
setSystemId
in interface javax.xml.transform.Result
systemId
- the system ID (which is used as the base URI of the nodes
if there is no xml:base attribute)public java.lang.String getSystemId()
getSystemId
in interface javax.xml.transform.Result
public void open() throws XPathException
open
in interface Receiver
XPathException
- if an error occurspublic abstract void startDocument(int properties) throws XPathException
startDocument
in interface Receiver
properties
- bit-significant integer indicating properties of the document node.
The definitions of the bits are in class ReceiverOption
XPathException
- if an error occurspublic abstract void endDocument() throws XPathException
endDocument
in interface Receiver
XPathException
- if an error occurspublic void setUnparsedEntity(java.lang.String name, java.lang.String systemID, java.lang.String publicID) throws XPathException
setUnparsedEntity
in interface Receiver
name
- The name of the unparsed entitysystemID
- The system identifier of the unparsed entitypublicID
- The identifier of the unparsed entityXPathException
- if an error occurspublic abstract void startElement(NodeName elemName, SchemaType typeCode, Location location, int properties) throws XPathException
startElement()
must be followed
by calls on attribute(NodeName, SimpleType, String, Location, int)
and
namespace(String, String, int)
to supply the attributes and namespaces; these calls
may be terminated by a call on startContent()
but this is not mandatory.elemName
- the name of the element.typeCode
- the type annotation of the element.location
- an object providing information about the module, line, and column where the node originatedproperties
- bit-significant properties of the element node. If there are no relevant
properties, zero is supplied. The definitions of the bits are in class ReceiverOption
XPathException
- if an error occurspublic void startElement(NodeName elemName, SchemaType type, AttributeMap attributes, NamespaceMap namespaces, Location location, int properties) throws XPathException
startElement
in interface Receiver
elemName
- the name of the element.type
- the type annotation of the element.attributes
- the attributes of this elementnamespaces
- the in-scope namespaces of this element: generally this is all the in-scope
namespaces, without relying on inheriting namespaces from parent elementslocation
- an object providing information about the module, line, and column where the node originatedproperties
- bit-significant properties of the element node. If there are no relevant
properties, zero is supplied. The definitions of the bits are in class ReceiverOption
XPathException
- if an error occurspublic abstract void namespace(java.lang.String prefix, java.lang.String namespaceUri, int properties) throws XPathException
prefix
- The namespace prefix; zero-length string for the default namespacenamespaceUri
- The namespace URI. In some cases a zero-length string may be used to
indicate a namespace undeclaration.properties
- The REJECT_DUPLICATES property: if set, the
namespace declaration will be rejected if it conflicts with a previous declaration of the same
prefix. If the property is not set, the namespace declaration will be ignored if it conflicts
with a previous declaration. This reflects the fact that when copying a tree, namespaces for child
elements are emitted before the namespaces of their parent element. Unfortunately this conflicts
with the XSLT rule for complex content construction, where the recovery action in the event of
conflicts is to take the namespace that comes last. XSLT therefore doesn't recover from this error:XPathException
- if an error occurspublic void namespaces(NamespaceBindingSet bindings, int properties) throws XPathException
namespace(String, String, int)
, but it
may be more efficient. It is used only when copying an element node together with
all its namespaces, so less checking is needed that the namespaces form a consistent
and complete setbindings
- the set of namespace bindingsproperties
- any special properties. The property ReceiverOption.NAMESPACE_OK
means that no checking is needed.XPathException
- if any failure occurspublic abstract void attribute(NodeName attName, SimpleType typeCode, java.lang.String value, Location location, int properties) throws XPathException
attName
- The name of the attributetypeCode
- The type annotation of the attributevalue
- the string value of the attributelocation
- provides information such as line number and system ID.properties
- Bit significant value. The following bits are defined:
java.lang.IllegalStateException
- attempt to output an attribute when there is no open element
start tagXPathException
- if an error occurspublic void startContent() throws XPathException
XPathException
- if an error occurspublic abstract void endElement() throws XPathException
endElement
in interface Receiver
XPathException
- if an error occurspublic abstract void characters(UnicodeString chars, Location location, int properties) throws XPathException
characters
in interface Receiver
chars
- The characterslocation
- provides information such as line number and system ID.properties
- Bit significant value. The following bits are defined:
XPathException
- if an error occurspublic abstract void processingInstruction(java.lang.String name, UnicodeString data, Location location, int properties) throws XPathException
processingInstruction
in interface Receiver
name
- The PI name. This must be a legal name (it will not be checked).data
- The data portion of the processing instructionlocation
- provides information such as line number and system ID.properties
- Additional information about the PI.java.lang.IllegalArgumentException
- the content is invalid for an XML processing instructionXPathException
- if an error occurspublic abstract void comment(UnicodeString content, Location location, int properties) throws XPathException
comment
in interface Receiver
content
- The content of the commentlocation
- provides information such as line number and system ID.properties
- Additional information about the comment.java.lang.IllegalArgumentException
- the content is invalid for an XML commentXPathException
- if an error occurspublic void append(Item item, Location locationId, int properties) throws XPathException
UnsupportedOperationException
.append
in interface Receiver
item
- the item to be appendedlocationId
- the location of the calling instruction, for diagnosticsproperties
- if the item is an element node, this indicates whether its namespaces
need to be copied. Values are ReceiverOption.ALL_NAMESPACES
; the default (0) meansXPathException
- if an error occurspublic void append(Item item) throws XPathException
append(Item, Location, int)
, whose
default implementation throws UnsupportedOperationException
append
in interface Receiver
item
- the item to be appendedXPathException
- if the operation failspublic UniStringConsumer getStringReceiver(boolean asTextNode, Location loc)
asTextNode
- set to true if the concatenated string values are to be treated
as a text node item rather than a stringpublic void close() throws XPathException
close
in interface Receiver
XPathException
- if an error occurspublic boolean usesTypeAnnotations()
usesTypeAnnotations
in interface Receiver
Copyright (c) 2004-2022 Saxonica Limited. All rights reserved.