Class XMLEmitter

All Implemented Interfaces:
Result, Receiver, ReceiverWithOutputProperties
Direct Known Subclasses:
HTMLEmitter, MessageEmitter, MessageWarner, TEXTEmitter, XHTML1Emitter, XHTML5Emitter, XQueryEmitter

public class XMLEmitter extends Emitter
XMLEmitter is an Emitter that generates XML output to a specified destination.
  • Field Details

    • canonical

      protected boolean canonical
    • started

      protected boolean started
    • startedElement

      protected boolean startedElement
    • openStartTag

      protected boolean openStartTag
    • declarationIsWritten

      protected boolean declarationIsWritten
    • elementCode

      protected NodeName elementCode
    • indentForNextAttribute

      protected int indentForNextAttribute
    • undeclareNamespaces

      protected boolean undeclareNamespaces
    • unfailing

      protected boolean unfailing
    • internalSubset

      protected String internalSubset
    • delimiter

      protected char delimiter
    • attSpecials

      protected boolean[] attSpecials
    • elementStack

      protected Stack<String> elementStack
    • characterReferenceGenerator

      protected CharacterReferenceGenerator characterReferenceGenerator
    • specialInText

      protected static boolean[] specialInText
    • specialInAtt

      protected static boolean[] specialInAtt
    • specialInAttSingle

      protected static boolean[] specialInAttSingle
    • DOCTYPE

      protected static final byte[] DOCTYPE
    • RIGHT_ANGLE_NEWLINE

      protected static final byte[] RIGHT_ANGLE_NEWLINE
  • Constructor Details

    • XMLEmitter

      public XMLEmitter()
  • Method Details

    • setCharacterReferenceGenerator

      public void setCharacterReferenceGenerator(CharacterReferenceGenerator generator)
      Set the character reference generator to be used for generating hexadecimal or decimal character references
      Parameters:
      generator - the character reference generator to be used
    • setEscapeNonAscii

      public void setEscapeNonAscii(Boolean escape)
      Say that all non-ASCII characters should be escaped, regardless of the character encoding
      Parameters:
      escape - true if all non ASCII characters should be escaped
    • open

      public void open() throws XPathException
      Start of the event stream. Nothing is done at this stage: the opening of the output file is deferred until some content is written to it.
      Specified by:
      open in interface Receiver
      Overrides:
      open in class SequenceReceiver
      Throws:
      XPathException - if an error occurs
    • startDocument

      public void startDocument(int properties) throws XPathException
      Start of a document node. Nothing is done at this stage: the opening of the output file is deferred until some content is written to it.
      Parameters:
      properties - bit-significant integer indicating properties of the document node. The definitions of the bits are in class ReceiverOption
      Throws:
      XPathException - if an error occurs
    • endDocument

      public void endDocument() throws XPathException
      Notify the end of a document node
      Throws:
      XPathException - if an error occurs
    • openDocument

      protected void openDocument() throws XPathException
      Do the real work of starting the document. This happens when the first content is written.
      Throws:
      XPathException - if an error occurs opening the output file
    • writeDeclaration

      public void writeDeclaration() throws XPathException
      Output the XML declaration
      Throws:
      XPathException - if any error occurs
    • writeDocType

      protected void writeDocType(NodeName name, String displayName, String systemId, String publicId) throws XPathException
      Output the document type declaration
      Parameters:
      name - the qualified name of the element
      displayName - The element name as displayed
      systemId - The DOCTYPE system identifier
      publicId - The DOCTYPE public identifier
      Throws:
      XPathException - if an error occurs writing to the output
    • close

      public void close() throws XPathException
      End of the document.
      Specified by:
      close in interface Receiver
      Overrides:
      close in class Emitter
      Throws:
      XPathException - if an error occurs
    • startElement

      public void startElement(NodeName elemName, SchemaType type, AttributeMap attributes, NamespaceMap namespaces, Location location, int properties) throws XPathException
      Start of an element. Output the start tag, escaping special characters.
      Parameters:
      elemName - the name of the element
      type - the type annotation of the element
      attributes - the attributes of this element
      namespaces - the in-scope namespaces of this element: generally this is all the in-scope namespaces, without relying on inheriting namespaces from parent elements
      location - an object providing information about the module, line, and column where the node originated
      properties - 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
      Throws:
      XPathException - if an error occurs
    • writeDocTypeWithNullSystemId

      protected boolean writeDocTypeWithNullSystemId()
    • namespace

      public void namespace(String nsprefix, NamespaceUri nsuri, boolean isFirst) throws XPathException
      Throws:
      XPathException
    • setIndentForNextAttribute

      public void setIndentForNextAttribute(int indent)
      Set the indentation to be used for attributes (this excludes the length of the element name itself)
      Parameters:
      indent - the number of spaces to be output before each attribute (on a new line)
    • writeAttributeIndentString

      protected void writeAttributeIndentString() throws IOException
      Throws:
      IOException
    • closeStartTag

      public void closeStartTag() throws XPathException
      Mark the end of the start tag
      Throws:
      XPathException - if an IO exception occurs
    • writeEmptyElementTagCloser

      protected void writeEmptyElementTagCloser(String displayName, NodeName nameCode) throws IOException
      Close an empty element tag. (This is overridden in XHTMLEmitter).
      Parameters:
      displayName - the name of the empty element
      nameCode - the fingerprint of the name of the empty element
      Throws:
      IOException - if an IO exception occurs
    • writeAttribute

      protected void writeAttribute(NodeName elCode, String attname, String value, int properties) throws XPathException
      Write attribute name=value pair.
      Parameters:
      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 encoding
      value - The value of the attribute
      properties - Any special properties of the attribute
      Throws:
      XPathException - if an error occurs
    • testCharacters

      protected int testCharacters(UnicodeString chars)
      Test that all characters in a name (for example) are supported in the target encoding.
      Parameters:
      chars - the characters to be tested
      Returns:
      zero if all the characters are available, or the value of the first offending character if not
    • convertToAscii

      protected UnicodeString convertToAscii(UnicodeString chars)
      Where characters are not available in the selected encoding, substitute them
      Parameters:
      chars - the characters to be converted
      Returns:
      the converted string
    • endElement

      public void endElement() throws XPathException
      End of an element.
      Throws:
      XPathException - if an error occurs
    • characters

      public void characters(UnicodeString chars, Location locationId, int properties) throws XPathException
      Character data.
      Parameters:
      chars - The characters
      locationId - provides information such as line number and system ID.
      properties - Bit significant value. The following bits are defined:
      DISABLE_ESCAPING
      Disable escaping for this text node
      USE_CDATA
      Output as a CDATA section
      Throws:
      XPathException - if an error occurs
    • processingInstruction

      public void processingInstruction(String target, UnicodeString data, Location locationId, int properties) throws XPathException
      Handle a processing instruction.
      Parameters:
      target - The PI name. This must be a legal name (it will not be checked).
      data - The data portion of the processing instruction
      locationId - provides information such as line number and system ID.
      properties - Additional information about the PI.
      Throws:
      XPathException - if an error occurs
    • writeEscape

      protected void writeEscape(UnicodeString chars, boolean inAttribute) throws IOException, XPathException
      Write contents of array to current writer, after escaping special characters. This method converts the XML special characters (such as < and &) into their predefined entities.
      Parameters:
      chars - The character sequence containing the string
      inAttribute - Set to true if the text is in an attribute value
      Throws:
      IOException - if an IO exception occurs
      XPathException - if an IO exception occurs
    • writeCodePoint

      protected void writeCodePoint(int c) throws IOException
      Throws:
      IOException
    • comment

      public void comment(UnicodeString chars, Location locationId, int properties) throws XPathException
      Handle a comment.
      Parameters:
      chars - The content of the comment
      locationId - provides information such as line number and system ID.
      properties - Additional information about the comment.
      Throws:
      XPathException - if an error occurs
    • usesTypeAnnotations

      public boolean usesTypeAnnotations()
      Ask whether this Receiver (or the downstream pipeline) makes any use of the type annotations supplied on element and attribute events
      Specified by:
      usesTypeAnnotations in interface Receiver
      Overrides:
      usesTypeAnnotations in class Emitter
      Returns:
      true if the Receiver makes any use of this information. If false, the caller may supply untyped nodes instead of supplying the type annotation
    • isStarted

      public boolean isStarted()
      Ask whether anything has yet been written
      Returns:
      true if content has been output