org.apache.xalan.xsltc.compiler

## Class Parser

- java.lang.Object
- - org.apache.xalan.xsltc.compiler.Parser

- All Implemented Interfaces:
    org.apache.bcel.generic.InstructionConstants, Constants, ContentHandler

      public class Parser
      extends java.lang.Object
      implements Constants, ContentHandler

  Author:
    Jacek Ambroziak, Santiago Pericas-Geertsen, G. Todd Miller, Morten Jorgensen, Erwin Bolwidt

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.apache.bcel.generic.InstructionConstants

      `org.apache.bcel.generic.InstructionConstants.Clinit`

  - ### Field Summary

    - ### Fields inherited from interface org.apache.xalan.xsltc.compiler.Constants

      `ABSOLUTE_ITERATOR, ACC_FINAL, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_SUPER, ADD_ATTRIBUTE, ADD_ATTRIBUTE_SIG, ADD_ITERATOR, ADD_ITERATOR_SIG, ADD_PARAMETER, ADD_PARAMETER_SIG, APPLY_TEMPLATES, ATTR_SET_SIG, ATTRIBUTE_LIST_FIELD, ATTRIBUTE_LIST_IMPL_CLASS, ATTRIBUTE_LIST_IMPL_SIG, ATTRIBUTES_SIG, BASIS_LIBRARY_CLASS, BOOLEAN_CLASS, BOOLEAN_VALUE, BOOLEAN_VALUE_SIG, CACHED_NODE_LIST_ITERATOR_CLASS, CHARACTERS, CHARACTERS_SIG, CHARACTERSW, CHARACTERSW_SIG, CLEAR_ATTRIBUTES, CLEAR_ATTRIBUTES_SIG, COLLATOR_CLASS, COLLATOR_SIG, COMPILER_PACKAGE, CURRENT_NODE_LIST_FILTER, CURRENT_NODE_LIST_FILTER_SIG, CURRENT_NODE_LIST_ITERATOR, CURRENT_NODE_LIST_ITERATOR_SIG, DEFAULT_NODE_COUNTER, DEFAULT_NODE_COUNTER_SIG, DOCUMENT_PNAME, DOM_ADAPTER_CLASS, DOM_ADAPTER_SIG, DOM_FIELD, DOM_IMPL, DOM_IMPL_CLASS, DOM_IMPL_SIG, DOM_INTF, DOM_INTF_SIG, DOM_PNAME, DOUBLE_CLASS, DOUBLE_SIG, DOUBLE_VALUE, DOUBLE_VALUE_SIG, DUP_FILTERED_ITERATOR, EMPTYATTR_FIELD, EMPTYSTRING, ERROR, EXPAND_STYLESHEET_QNAME_REF, EXPAND_STYLESHEET_QNAME_SIG, FALLBACK_CLASS, FATAL, FILTER_INTERFACE, FILTER_INTERFACE_SIG, FILTER_ITERATOR, FILTER_STEP_ITERATOR, FORMAT_SYMBOLS_FIELD, GET_ATTRIBUTE_VALUE, GET_ATTRIBUTE_VALUE_SIG, GET_CHILDREN, GET_CHILDREN_SIG, GET_ELEMENT_VALUE, GET_ELEMENT_VALUE_SIG, GET_ITERATOR_SIG, GET_NODE_NAME, GET_NODE_NAME_SIG, GET_NODE_TYPE, GET_NODE_TYPE_SIG, GET_NODE_VALUE, GET_NODE_VALUE_ITERATOR, GET_NODE_VALUE_ITERATOR_SIG, GET_NODE_VALUE_SIG, GET_PARAMETER, GET_PARAMETER_SIG, GET_PARENT, GET_PARENT_SIG, GET_TYPED_CHILDREN, GET_TYPED_CHILDREN_SIG, GET_UNPARSED_ENTITY_URI, GET_UNPARSED_ENTITY_URI_SIG, HAS_ATTRIBUTE, HAS_ATTRIBUTE_SIG, HASIDCALL_INDEX, HASIDCALL_INDEX_SIG, INT_VALUE, INT_VALUE_SIG, INTEGER_CLASS, INTEGER_SIG, INTERNAL, INVOKE_METHOD, ITERATOR_FIELD_SIG, ITERATOR_PNAME, KEY_INDEX_CLASS, KEY_INDEX_ITERATOR_SIG, KEY_INDEX_SIG, LAST_INDEX, LOAD_DOCUMENT_CLASS, LOCALE_CLASS, LOCALE_SIG, LOOKUP_STYLESHEET_QNAME_NS_REF, LOOKUP_STYLESHEET_QNAME_NS_SIG, MAKE_NODE, MAKE_NODE_LIST, MAKE_NODE_LIST_SIG, MAKE_NODE_LIST_SIG2, MAKE_NODE_SIG, MAKE_NODE_SIG2, MATCHING_ITERATOR, MATH_CLASS, MULTI_DOM_CLASS, MULTI_DOM_SIG, NAMES_INDEX, NAMES_INDEX_SIG, NAMESPACE_FEATURE, NAMESPACE_INDEX, NAMESPACE_INDEX_SIG, NEXT, NEXT_SIG, NEXTID, NODE, NODE_COUNTER, NODE_COUNTER_SIG, NODE_FIELD, NODE_FIELD_SIG, NODE_ITERATOR, NODE_ITERATOR_BASE, NODE_ITERATOR_SIG, NODE_PNAME, NODE_SIG, NODE_SORT_FACTORY, NODE_SORT_FACTORY_SIG, NODE_SORT_RECORD, NODE_SORT_RECORD_SIG, NS_ANCESTORS_INDEX_SIG, NTH_ITERATOR_CLASS, OBJECT_CLASS, OBJECT_SIG, ORDER_ITERATOR, ORDER_ITERATOR_SIG, OUTPUT_BASE, OUTPUT_HANDLER, OUTPUT_HANDLER_SIG, POP_PARAM_FRAME, POP_PARAM_FRAME_SIG, POSITION_INDEX, PREFIX_URIS_ARRAY_SIG, PREFIX_URIS_IDX_SIG, PUSH_PARAM_FRAME, PUSH_PARAM_FRAME_SIG, REDIRECT_URI, RESET, RESET_SIG, RTF_INITIAL_SIZE, RUNTIME_NODE_CLASS, RUNTIME_PACKAGE, SAX_IMPL, SAX_IMPL_CLASS, SAX_IMPL_SIG, SET_START_NODE, SET_START_NODE_SIG, SINGLETON_ITERATOR, SORT_ITERATOR, SORT_ITERATOR_SIG, STATIC_CHAR_DATA_FIELD, STATIC_CHAR_DATA_FIELD_SIG, STATIC_NAMES_ARRAY_FIELD, STATIC_NAMESPACE_ARRAY_FIELD, STATIC_NS_ANCESTORS_ARRAY_FIELD, STATIC_PREFIX_URIS_ARRAY_FIELD, STATIC_PREFIX_URIS_IDX_ARRAY_FIELD, STATIC_TYPES_ARRAY_FIELD, STATIC_URIS_ARRAY_FIELD, STEP_ITERATOR_CLASS, STREAM_XML_OUTPUT, STRING, STRING_BUFFER_CLASS, STRING_BUFFER_SIG, STRING_CLASS, STRING_SIG, STRING_TO_INT, STRING_TO_INT_SIG, STRING_TO_REAL, STRING_TO_REAL_SIG, STRING_VALUE_HANDLER, STRING_VALUE_HANDLER_SIG, STRING_WRITER, STRIP_SPACE, STRIP_SPACE_INTF, STRIP_SPACE_PARAMS, STRIP_SPACE_SIG, TRANSLET_CLASS, TRANSLET_FIELD, TRANSLET_FIELD_SIG, TRANSLET_INTF, TRANSLET_INTF_SIG, TRANSLET_OUTPUT_BASE, TRANSLET_OUTPUT_INTERFACE, TRANSLET_OUTPUT_PNAME, TRANSLET_OUTPUT_SIG, TRANSLET_PNAME, TRANSLET_SIG, TRANSLET_URI, TRANSLET_VERSION_INDEX, TRANSLET_VERSION_INDEX_SIG, TYPES_INDEX, TYPES_INDEX_SIG, UNION_ITERATOR_CLASS, UNION_ITERATOR_SIG, UNSUPPORTED, URIS_INDEX, URIS_INDEX_SIG, WARNING, WRITER_SIG, XHTML_URI, XMLNS_PREFIX, XMLNS_STRING, XMLNS_URI, XSLT_PACKAGE, XSLT_URI`

    - ### Fields inherited from interface org.apache.bcel.generic.InstructionConstants

      `AALOAD, AASTORE, ACONST_NULL, ALOAD_0, ALOAD_1, ALOAD_2, ARETURN, ARRAYLENGTH, ASTORE_0, ASTORE_1, ASTORE_2, ATHROW, BALOAD, BASTORE, bla, CALOAD, CASTORE, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DMUL, DNEG, DREM, DRETURN, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FMUL, FNEG, FREM, FRETURN, FSUB, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, ILOAD_0, ILOAD_1, ILOAD_2, IMUL, INEG, INSTRUCTIONS, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE_0, ISTORE_1, ISTORE_2, ISUB, IUSHR, IXOR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDIV, LMUL, LNEG, LOR, LREM, LRETURN, LSHL, LSHR, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, NOP, POP, POP2, RETURN, SALOAD, SASTORE, SWAP, THIS`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Parser(XSLTC xsltc)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addParameter(org.apache.xalan.xsltc.compiler.Param param)`
    `void` | `addVariable(org.apache.xalan.xsltc.compiler.Variable var)`
    `void` | `characters(char[] ch, int start, int length)` SAX2: Receive notification of character data.
    `void` | `createAST(Stylesheet stylesheet)` Instanciates a SAX2 parser and generate the AST from the input.
    `boolean` | `elementSupported(java.lang.String namespace, java.lang.String localName)`
    `void` | `endDocument()` SAX2: Receive notification of the end of a document.
    `void` | `endElement(java.lang.String uri, java.lang.String localname, java.lang.String qname)` SAX2: Receive notification of the end of an element.
    `void` | `endPrefixMapping(java.lang.String prefix)` SAX2: End the scope of a prefix-URI Namespace mapping.
    `boolean` | `errorsFound()` Returns true if there were any errors during compilation
    `boolean` | `functionSupported(java.lang.String fname)`
    `int` | `getCurrentImportPrecedence()`
    `Stylesheet` | `getCurrentStylesheet()`
    `SyntaxTreeNode` | `getDocumentRoot()`
    `java.util.Vector` | `getErrors()`
    `org.apache.xalan.xsltc.compiler.QName` | `getExcludeResultPrefixes()`
    `org.apache.xalan.xsltc.compiler.QName` | `getExtensionElementPrefixes()`
    `int` | `getNextImportPrecedence()`
    `org.apache.xalan.xsltc.compiler.Output` | `getOutput()`
    `java.util.Properties` | `getOutputProperties()`
    `org.apache.xalan.xsltc.compiler.QName` | `getQName(org.apache.xalan.xsltc.compiler.QName scope, org.apache.xalan.xsltc.compiler.QName name)`
    `org.apache.xalan.xsltc.compiler.QName` | `getQName(java.lang.String stringRep)`
    `org.apache.xalan.xsltc.compiler.QName` | `getQName(java.lang.String stringRep, boolean reportError)`
    `org.apache.xalan.xsltc.compiler.QName` | `getQName(java.lang.String scope, java.lang.String name)`
    `org.apache.xalan.xsltc.compiler.QName` | `getQName(java.lang.String namespace, java.lang.String prefix, java.lang.String localname)`
    `org.apache.xalan.xsltc.compiler.QName` | `getQNameIgnoreDefaultNs(java.lang.String stringRep)`
    `org.apache.xalan.xsltc.compiler.QName` | `getQNameSafe(java.lang.String stringRep)`
    `org.apache.xalan.xsltc.compiler.SymbolTable` | `getSymbolTable()`
    `Template` | `getTemplate()`
    `int` | `getTemplateIndex()`
    `Stylesheet` | `getTopLevelStylesheet()`
    `org.apache.xalan.xsltc.compiler.QName` | `getUseAttributeSets()`
    `java.util.Vector` | `getWarnings()`
    `XSLTC` | `getXSLTC()`
    `void` | `ignorableWhitespace(char[] ch, int start, int length)` IGNORED - all ignorable whitespace is ignored
    `void` | `init()`
    `org.apache.xalan.xsltc.compiler.VariableBase` | `lookupVariable(org.apache.xalan.xsltc.compiler.QName name)`
    `SyntaxTreeNode` | `makeInstance(java.lang.String uri, java.lang.String prefix, java.lang.String local, Attributes attributes)`
    `Stylesheet` | `makeStylesheet(SyntaxTreeNode element)` Create an instance of the `Stylesheet` class, and then parse, typecheck and compile the instance.
    `SyntaxTreeNode` | `parse(InputSource input)` Parses a stylesheet and builds the internal abstract syntax tree
    `SyntaxTreeNode` | `parse(XMLReader reader, InputSource input)` Parses a stylesheet and builds the internal abstract syntax tree
    `org.apache.xalan.xsltc.compiler.Expression` | `parseExpression(SyntaxTreeNode parent, java.lang.String exp)` Parse an XPath expression:
    `org.apache.xalan.xsltc.compiler.Expression` | `parseExpression(SyntaxTreeNode parent, java.lang.String attr, java.lang.String def)` Parse an XPath expression:
    `Pattern` | `parsePattern(SyntaxTreeNode parent, java.lang.String pattern)` Parse an XPath pattern:
    `Pattern` | `parsePattern(SyntaxTreeNode parent, java.lang.String attr, java.lang.String def)` Parse an XPath pattern:
    `void` | `printErrors()` Prints all compile-time errors
    `void` | `printWarnings()` Prints all compile-time warnings
    `void` | `processingInstruction(java.lang.String name, java.lang.String value)` SAX2: Receive notification of a processing instruction.
    `void` | `removeVariable(org.apache.xalan.xsltc.compiler.QName name)`
    `void` | `reportError(int category, ErrorMsg error)` Common error/warning message handler
    `void` | `setCurrentStylesheet(Stylesheet stylesheet)`
    `void` | `setDocumentLocator(Locator locator)` Store the document locator to later retrieve line numbers of all elements from the stylesheet
    `void` | `setOutput(org.apache.xalan.xsltc.compiler.Output output)`
    `void` | `setTemplate(Template template)`
    `void` | `setXSLTC(XSLTC xsltc)`
    `void` | `skippedEntity(java.lang.String name)` IGNORED - we do not have to do anything with skipped entities
    `void` | `startDocument()` SAX2: Receive notification of the beginning of a document.
    `void` | `startElement(java.lang.String uri, java.lang.String localname, java.lang.String qname, Attributes attributes)` SAX2: Receive notification of the beginning of an element.
    `void` | `startPrefixMapping(java.lang.String prefix, java.lang.String uri)` SAX2: Begin the scope of a prefix-URI Namespace mapping.

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### Parser

          public Parser(XSLTC xsltc)

  - ### Method Detail

    - #### init

          public void init()

    - #### setOutput

          public void setOutput(org.apache.xalan.xsltc.compiler.Output output)

    - #### getOutput

          public org.apache.xalan.xsltc.compiler.Output getOutput()

    - #### getOutputProperties

          public java.util.Properties getOutputProperties()

    - #### addVariable

          public void addVariable(org.apache.xalan.xsltc.compiler.Variable var)

    - #### addParameter

          public void addParameter(org.apache.xalan.xsltc.compiler.Param param)

    - #### removeVariable

          public void removeVariable(org.apache.xalan.xsltc.compiler.QName name)

    - #### lookupVariable

          public org.apache.xalan.xsltc.compiler.VariableBase lookupVariable(org.apache.xalan.xsltc.compiler.QName name)

    - #### setXSLTC

          public void setXSLTC(XSLTC xsltc)

    - #### getXSLTC

          public XSLTC getXSLTC()

    - #### getCurrentImportPrecedence

          public int getCurrentImportPrecedence()

    - #### getNextImportPrecedence

          public int getNextImportPrecedence()

    - #### setCurrentStylesheet

          public void setCurrentStylesheet(Stylesheet stylesheet)

    - #### getCurrentStylesheet

          public Stylesheet getCurrentStylesheet()

    - #### getTopLevelStylesheet

          public Stylesheet getTopLevelStylesheet()

    - #### getQNameSafe

          public org.apache.xalan.xsltc.compiler.QName getQNameSafe(java.lang.String stringRep)

    - #### getQName

          public org.apache.xalan.xsltc.compiler.QName getQName(java.lang.String stringRep)

    - #### getQNameIgnoreDefaultNs

          public org.apache.xalan.xsltc.compiler.QName getQNameIgnoreDefaultNs(java.lang.String stringRep)

    - #### getQName

          public org.apache.xalan.xsltc.compiler.QName getQName(java.lang.String stringRep,
                                                       boolean reportError)

    - #### getQName

          public org.apache.xalan.xsltc.compiler.QName getQName(java.lang.String namespace,
                                                       java.lang.String prefix,
                                                       java.lang.String localname)

    - #### getQName

          public org.apache.xalan.xsltc.compiler.QName getQName(java.lang.String scope,
                                                       java.lang.String name)

    - #### getQName

          public org.apache.xalan.xsltc.compiler.QName getQName(org.apache.xalan.xsltc.compiler.QName scope,
                                                       org.apache.xalan.xsltc.compiler.QName name)

    - #### getUseAttributeSets

          public org.apache.xalan.xsltc.compiler.QName getUseAttributeSets()

    - #### getExtensionElementPrefixes

          public org.apache.xalan.xsltc.compiler.QName getExtensionElementPrefixes()

    - #### getExcludeResultPrefixes

          public org.apache.xalan.xsltc.compiler.QName getExcludeResultPrefixes()

    - #### makeStylesheet

          public Stylesheet makeStylesheet(SyntaxTreeNode element)
                                    throws CompilerException

      Create an instance of the `Stylesheet` class, and then parse, typecheck and compile the instance. Must be called after `parse()`.
      Throws:
        `CompilerException`

    - #### createAST

          public void createAST(Stylesheet stylesheet)

      Instanciates a SAX2 parser and generate the AST from the input.

    - #### parse

          public SyntaxTreeNode parse(XMLReader reader,
                             InputSource input)

      Parses a stylesheet and builds the internal abstract syntax tree
      Parameters:
        `reader` - A SAX2 SAXReader (parser)
        `input` - A SAX2 InputSource can be passed to a SAX reader
      Returns:
        The root of the abstract syntax tree

    - #### parse

          public SyntaxTreeNode parse(InputSource input)

      Parses a stylesheet and builds the internal abstract syntax tree
      Parameters:
        `input` - A SAX2 InputSource can be passed to a SAX reader
      Returns:
        The root of the abstract syntax tree

    - #### getDocumentRoot

          public SyntaxTreeNode getDocumentRoot()

    - #### elementSupported

          public boolean elementSupported(java.lang.String namespace,
                                 java.lang.String localName)

    - #### functionSupported

          public boolean functionSupported(java.lang.String fname)

    - #### getSymbolTable

          public org.apache.xalan.xsltc.compiler.SymbolTable getSymbolTable()

    - #### getTemplate

          public Template getTemplate()

    - #### setTemplate

          public void setTemplate(Template template)

    - #### getTemplateIndex

          public int getTemplateIndex()

    - #### makeInstance

          public SyntaxTreeNode makeInstance(java.lang.String uri,
                                    java.lang.String prefix,
                                    java.lang.String local,
                                    Attributes attributes)

    - #### parseExpression

          public org.apache.xalan.xsltc.compiler.Expression parseExpression(SyntaxTreeNode parent,
                                                                   java.lang.String exp)

      Parse an XPath expression:
      Parameters:
        `parent` - - XSL element where the expression occured
        `exp` - - textual representation of the expression

    - #### parseExpression

          public org.apache.xalan.xsltc.compiler.Expression parseExpression(SyntaxTreeNode parent,
                                                                   java.lang.String attr,
                                                                   java.lang.String def)

      Parse an XPath expression:
      Parameters:
        `parent` - - XSL element where the expression occured
        `attr` - - name of this element's attribute to get expression from
        `def` - - default expression (if the attribute was not found)

    - #### parsePattern

          public Pattern parsePattern(SyntaxTreeNode parent,
                             java.lang.String pattern)

      Parse an XPath pattern:
      Parameters:
        `parent` - - XSL element where the pattern occured
        `pattern` - - textual representation of the pattern

    - #### parsePattern

          public Pattern parsePattern(SyntaxTreeNode parent,
                             java.lang.String attr,
                             java.lang.String def)

      Parse an XPath pattern:
      Parameters:
        `parent` - - XSL element where the pattern occured
        `attr` - - name of this element's attribute to get pattern from
        `def` - - default pattern (if the attribute was not found)

    - #### errorsFound

          public boolean errorsFound()

      Returns true if there were any errors during compilation

    - #### printErrors

          public void printErrors()

      Prints all compile-time errors

    - #### printWarnings

          public void printWarnings()

      Prints all compile-time warnings

    - #### reportError

          public void reportError(int category,
                         ErrorMsg error)

      Common error/warning message handler

    - #### getErrors

          public java.util.Vector getErrors()

    - #### getWarnings

          public java.util.Vector getWarnings()

    - #### startDocument

          public void startDocument()

      SAX2: Receive notification of the beginning of a document.
      Specified by:
        `startDocument` in interface `ContentHandler`
      See Also:
        `ContentHandler.endDocument()`

    - #### endDocument

          public void endDocument()

      SAX2: Receive notification of the end of a document.
      Specified by:
        `endDocument` in interface `ContentHandler`
      See Also:
        `ContentHandler.startDocument()`

    - #### startPrefixMapping

          public void startPrefixMapping(java.lang.String prefix,
                                java.lang.String uri)

      SAX2: Begin the scope of a prefix-URI Namespace mapping. This has to be passed on to the symbol table!
      Specified by:
        `startPrefixMapping` in interface `ContentHandler`
      Parameters:
        `prefix` - the Namespace prefix being declared. An empty string is used for the default element namespace, which has no prefix.
        `uri` - the Namespace URI the prefix is mapped to
      See Also:
        `ContentHandler.endPrefixMapping(java.lang.String)`, `ContentHandler.startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)`

    - #### endPrefixMapping

          public void endPrefixMapping(java.lang.String prefix)

      SAX2: End the scope of a prefix-URI Namespace mapping. This has to be passed on to the symbol table!
      Specified by:
        `endPrefixMapping` in interface `ContentHandler`
      Parameters:
        `prefix` - the prefix that was being mapped. This is the empty string when a default mapping scope ends.
      See Also:
        `ContentHandler.startPrefixMapping(java.lang.String, java.lang.String)`, `ContentHandler.endElement(java.lang.String, java.lang.String, java.lang.String)`

    - #### startElement

          public void startElement(java.lang.String uri,
                          java.lang.String localname,
                          java.lang.String qname,
                          Attributes attributes)
                            throws SAXException

      SAX2: Receive notification of the beginning of an element. The parser may re-use the attribute list that we're passed so we clone the attributes in our own Attributes implementation
      Specified by:
        `startElement` in interface `ContentHandler`
      Parameters:
        `uri` - the Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed
        `localname` - the local name (without prefix), or the empty string if Namespace processing is not being performed
        `qname` - the qualified name (with prefix), or the empty string if qualified names are not available
        `attributes` - the attributes attached to the element. If there are no attributes, it shall be an empty Attributes object. The value of this object after startElement returns is undefined
      Throws:
        `SAXException` - any SAX exception, possibly wrapping another exception
      See Also:
        `ContentHandler.endElement(java.lang.String, java.lang.String, java.lang.String)`, `Attributes`, `AttributesImpl`

    - #### endElement

          public void endElement(java.lang.String uri,
                        java.lang.String localname,
                        java.lang.String qname)

      SAX2: Receive notification of the end of an element.
      Specified by:
        `endElement` in interface `ContentHandler`
      Parameters:
        `uri` - the Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed
        `localname` - the local name (without prefix), or the empty string if Namespace processing is not being performed
        `qname` - the qualified XML name (with prefix), or the empty string if qualified names are not available

    - #### characters

          public void characters(char[] ch,
                        int start,
                        int length)

      SAX2: Receive notification of character data.
      Specified by:
        `characters` in interface `ContentHandler`
      Parameters:
        `ch` - the characters from the XML document
        `start` - the start position in the array
        `length` - the number of characters to read from the array
      See Also:
        `ContentHandler.ignorableWhitespace(char[], int, int)`, `Locator`

    - #### processingInstruction

          public void processingInstruction(java.lang.String name,
                                   java.lang.String value)

      SAX2: Receive notification of a processing instruction. These require special handling for stylesheet PIs.
      Specified by:
        `processingInstruction` in interface `ContentHandler`
      Parameters:
        `name` - the processing instruction target
        `value` - the processing instruction data, or null if none was supplied. The data does not include any whitespace separating it from the target

    - #### ignorableWhitespace

          public void ignorableWhitespace(char[] ch,
                                 int start,
                                 int length)

      IGNORED - all ignorable whitespace is ignored
      Specified by:
        `ignorableWhitespace` in interface `ContentHandler`
      Parameters:
        `ch` - the characters from the XML document
        `start` - the start position in the array
        `length` - the number of characters to read from the array
      See Also:
        `ContentHandler.characters(char[], int, int)`

    - #### skippedEntity

          public void skippedEntity(java.lang.String name)

      IGNORED - we do not have to do anything with skipped entities
      Specified by:
        `skippedEntity` in interface `ContentHandler`
      Parameters:
        `name` - the name of the skipped entity. If it is a parameter entity, the name will begin with '%', and if it is the external DTD subset, it will be the string "[dtd]"

    - #### setDocumentLocator

          public void setDocumentLocator(Locator locator)

      Store the document locator to later retrieve line numbers of all elements from the stylesheet
      Specified by:
        `setDocumentLocator` in interface `ContentHandler`
      Parameters:
        `locator` - an object that can return the location of any SAX document event
      See Also:
        `Locator`

Copyright © 2014 Apache XML Project. All Rights Reserved.