public class XMLEmitter extends Emitter
Modifier and Type | Field and Description |
---|---|
protected CharacterReferenceGenerator |
characterReferenceGenerator |
protected boolean |
declarationIsWritten |
protected NodeName |
elementCode |
protected Stack<String> |
elementStack |
protected int |
indentForNextAttribute |
protected boolean |
openStartTag |
protected boolean |
started |
protected boolean |
startedElement |
protected boolean |
undeclareNamespaces |
allCharactersEncodable, characterSet, namePool, outputProperties, outputStream, pipelineConfig, streamResult, systemId, writer
PI_DISABLE_OUTPUT_ESCAPING, PI_ENABLE_OUTPUT_ESCAPING
Constructor and Description |
---|
XMLEmitter() |
Modifier and Type | Method and Description |
---|---|
void |
attribute(NodeName nameCode,
SimpleType typeCode,
CharSequence value,
int locationId,
int properties)
Notify an attribute.
|
void |
characters(CharSequence chars,
int locationId,
int properties)
Character data.
|
void |
close()
End of the document.
|
void |
closeStartTag()
Mark the end of the start tag
|
void |
comment(CharSequence chars,
int locationId,
int properties)
Handle a comment.
|
protected String |
emptyElementTagCloser(String displayName,
NodeName nameCode)
Close an empty element tag.
|
void |
endDocument()
Notify the end of a document node
|
void |
endElement()
End of an element.
|
protected String |
getAttributeIndentString() |
void |
namespace(NamespaceBinding namespaceBinding,
int properties)
Notify a namespace.
|
void |
open()
Start of the event stream.
|
protected void |
openDocument()
Do the real work of starting the document.
|
void |
processingInstruction(String target,
CharSequence data,
int locationId,
int properties)
Handle a processing instruction.
|
void |
setCharacterReferenceGenerator(CharacterReferenceGenerator generator)
Set the character reference generator to be used for generating hexadecimal or decimal
character references
|
void |
setEscapeNonAscii(Boolean escape)
Say that all non-ASCII characters should be escaped, regardless of the character encoding
|
void |
setIndentForNextAttribute(int indent) |
void |
startContent()
Notify the start of the content, that is, the completion of all attributes and namespaces.
|
void |
startDocument(int properties)
Start of a document node.
|
void |
startElement(NodeName elemName,
SchemaType typeCode,
int locationId,
int properties)
Start of an element.
|
protected int |
testCharacters(CharSequence chars)
Test that all characters in a name (for example) are supported in the target encoding.
|
boolean |
usesTypeAnnotations()
Ask whether this Receiver (or the downstream pipeline) makes any use of the type annotations
supplied on element and attribute events
|
protected void |
writeAttribute(NodeName elCode,
String attname,
CharSequence value,
int properties)
Write attribute name=value pair.
|
void |
writeCharSequence(CharSequence s)
Write a CharSequence (without any escaping of special characters): various implementations
|
void |
writeDeclaration()
Output the XML declaration
|
protected void |
writeDocType(NodeName name,
String displayName,
String systemId,
String publicId)
Output the document type declaration
|
protected boolean |
writeDocTypeWithNullSystemId() |
protected void |
writeEscape(CharSequence chars,
boolean inAttribute)
Write contents of array to current writer, after escaping special characters.
|
getConfiguration, getOutputProperties, getOutputStream, getPipelineConfiguration, getSystemId, getWriter, makeOutputStream, makeWriter, setOutputProperties, setOutputStream, setPipelineConfiguration, setStreamResult, setSystemId, setUnparsedEntity, setWriter, usesWriter
protected boolean started
protected boolean startedElement
protected boolean openStartTag
protected boolean declarationIsWritten
protected NodeName elementCode
protected int indentForNextAttribute
protected boolean undeclareNamespaces
protected CharacterReferenceGenerator characterReferenceGenerator
public void setCharacterReferenceGenerator(CharacterReferenceGenerator generator)
generator
- the character reference generator to be usedpublic void setEscapeNonAscii(Boolean escape)
escape
- true if all non ASCII characters should be escapedpublic void open() throws XPathException
XPathException
- if an error occurspublic void startDocument(int properties) throws XPathException
properties
- bit-significant integer indicating properties of the document node.
The definitions of the bits are in class ReceiverOptions
XPathException
- if an error occurspublic void endDocument() throws XPathException
XPathException
- if an error occursprotected void openDocument() throws XPathException
XPathException
- f an error occurs opening the output filepublic void writeDeclaration() throws XPathException
XPathException
protected void writeDocType(NodeName name, String displayName, String systemId, String publicId) throws XPathException
name
- the qualified name of the elementdisplayName
- The element name as displayedsystemId
- The DOCTYP system identifierpublicId
- The DOCTYPE public identifierXPathException
- if an error occurs writing to the outputpublic void close() throws XPathException
close
in interface Receiver
close
in class Emitter
XPathException
- if an error occurspublic void startElement(NodeName elemName, SchemaType typeCode, int locationId, int properties) throws XPathException
elemName
- the name of the element.typeCode
- the type annotation of the element.locationId
- an integer which can be interpreted using a LocationProvider
to return
information such as line number and system ID. If no location information is available,
the value zero is supplied.properties
- bit-significant properties of the element node. If there are no revelant
properties, zero is supplied. The definitions of the bits are in class ReceiverOptions
XPathException
- if an error occursprotected boolean writeDocTypeWithNullSystemId()
public void namespace(NamespaceBinding namespaceBinding, int properties) throws XPathException
Receiver
namespaceBinding
- contains the namespace prefix and namespace URIproperties
- The most important property is REJECT_DUPLICATES. If this property is 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 setIndentForNextAttribute(int indent)
public void attribute(NodeName nameCode, SimpleType typeCode, CharSequence value, int locationId, int properties) throws XPathException
Receiver
nameCode
- The name of the attributetypeCode
- The type of the attribute, as held in the name pool. The additional bit
NodeInfo.IS_DTD_TYPE may be set to indicate a DTD-derived type.value
- the string value of the attributelocationId
- an integer which can be interpreted using a LocationProvider
to return
information such as line number and system ID. If no location information is available,
the value zero is supplied.properties
- Bit significant value. The following bits are defined:
XPathException
- if an error occursprotected String getAttributeIndentString()
public void startContent() throws XPathException
Receiver
XPathException
- if an error occurspublic void closeStartTag() throws XPathException
XPathException
- if an IO exception occursprotected String emptyElementTagCloser(String displayName, NodeName nameCode)
displayName
- the name of the empty elementnameCode
- the fingerprint of the name of the empty elementprotected void writeAttribute(NodeName elCode, String attname, CharSequence value, int properties) throws XPathException
elCode
- The element name is not used in this version of the
method, but is used in the HTML subclass.attname
- The attribute name, which has already been validated to ensure
it can be written in this encodingvalue
- The value of the attributeproperties
- Any special properties of the attributeXPathException
- if an error occursprotected int testCharacters(CharSequence chars) throws XPathException
chars
- the characters to be testedXPathException
public void endElement() throws XPathException
XPathException
- if an error occurspublic void characters(CharSequence chars, int locationId, int properties) throws XPathException
chars
- The characterslocationId
- an integer which can be interpreted using a LocationProvider
to return information such as line number and system ID. If no location information is available,
the value zero is supplied.properties
- Bit significant value. The following bits are defined:
XPathException
- if an error occurspublic void writeCharSequence(CharSequence s) throws IOException
s
- the character sequence to be writtenIOException
- in the event of a failure to write to the output filepublic void processingInstruction(String target, CharSequence data, int locationId, int properties) throws XPathException
target
- The PI name. This must be a legal name (it will not be checked).data
- The data portion of the processing instructionlocationId
- an integer which can be interpreted using a LocationProvider
to return
information such as line number and system ID. If no location information is available,
the value zero is supplied.properties
- Additional information about the PI.XPathException
- if an error occursprotected void writeEscape(CharSequence chars, boolean inAttribute) throws IOException, XPathException
chars
- The character sequence containing the stringinAttribute
- Set to true if the text is in an attribute valueIOException
XPathException
public void comment(CharSequence chars, int locationId, int properties) throws XPathException
chars
- The content of the commentlocationId
- an integer which can be interpreted using a LocationProvider
to return
information such as line number and system ID. If no location information is available,
the value zero is supplied.properties
- Additional information about the comment.XPathException
- if an error occurspublic boolean usesTypeAnnotations()
usesTypeAnnotations
in interface Receiver
usesTypeAnnotations
in class Emitter
Copyright (c) 2004-2014 Saxonica Limited. All rights reserved.