org.apache.xalan.xsltc.compiler

Class Parser

Implemented Interfaces:
Constants, InstructionConstants, ContentHandler

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

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

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, ATTRIBUTES_SIG, ATTRIBUTE_LIST_FIELD, ATTRIBUTE_LIST_IMPL_CLASS, ATTRIBUTE_LIST_IMPL_SIG, ATTR_SET_SIG, BASIS_LIBRARY_CLASS, BOOLEAN_CLASS, BOOLEAN_VALUE, BOOLEAN_VALUE_SIG, CACHED_NODE_LIST_ITERATOR_CLASS, CALL_FUNCTION_CLASS, CHARACTERS, CHARACTERSW, CHARACTERSW_SIG, CHARACTERS_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, 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, HASIDCALL_INDEX, HASIDCALL_INDEX_SIG, HAS_ATTRIBUTE, HAS_ATTRIBUTE_SIG, INTEGER_CLASS, INTEGER_SIG, INTERNAL, INT_VALUE, INT_VALUE_SIG, INVOKE_METHOD, ITERATOR_FIELD_SIG, ITERATOR_PNAME, KEY_INDEX_CLASS, KEY_INDEX_SIG, LAST_INDEX, LOAD_DOCUMENT_CLASS, LOCALE_CLASS, LOCALE_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, NAMESPACE_FEATURE, NAMESPACE_INDEX, NAMESPACE_INDEX_SIG, NAMES_INDEX, NAMES_INDEX_SIG, NEXT, NEXTID, NEXT_SIG, 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, 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, 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_NAMESPACE_ARRAY_FIELD, STATIC_NAMES_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

Constructor Summary

Parser(XSLTC xsltc)

Method Summary

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(String namespace, String localName)
void
endDocument()
SAX2: Receive notification of the end of a document.
void
endElement(String uri, String localname, String qname)
SAX2: Receive notification of the end of an element.
void
endPrefixMapping(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(String fname)
int
getCurrentImportPrecedence()
Stylesheet
getCurrentStylesheet()
SyntaxTreeNode
getDocumentRoot()
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()
Properties
getOutputProperties()
org.apache.xalan.xsltc.compiler.QName
getQName(String stringRep)
org.apache.xalan.xsltc.compiler.QName
getQName(String scope, String name)
org.apache.xalan.xsltc.compiler.QName
getQName(String namespace, String prefix, String localname)
org.apache.xalan.xsltc.compiler.QName
getQName(String stringRep, boolean reportError)
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
getQNameIgnoreDefaultNs(String stringRep)
org.apache.xalan.xsltc.compiler.QName
getQNameSafe(String stringRep)
org.apache.xalan.xsltc.compiler.SymbolTable
getSymbolTable()
Template
getTemplate()
int
getTemplateIndex()
Stylesheet
getTopLevelStylesheet()
org.apache.xalan.xsltc.compiler.QName
getUseAttributeSets()
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(String uri, String prefix, 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, String exp)
Parse an XPath expression:
org.apache.xalan.xsltc.compiler.Expression
parseExpression(SyntaxTreeNode parent, String attr, String def)
Parse an XPath expression:
Pattern
parsePattern(SyntaxTreeNode parent, String pattern)
Parse an XPath pattern:
Pattern
parsePattern(SyntaxTreeNode parent, String attr, String def)
Parse an XPath pattern:
void
printErrors()
Prints all compile-time errors
void
printWarnings()
Prints all compile-time warnings
void
processingInstruction(String name, 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(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(String uri, String localname, String qname, Attributes attributes)
SAX2: Receive notification of the beginning of an element.
void
startPrefixMapping(String prefix, String uri)
SAX2: Begin the scope of a prefix-URI Namespace mapping.

Constructor Details

Parser

public Parser(XSLTC xsltc)

Method Details

addParameter

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

addVariable

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

characters

public void characters(char[] ch,
                       int start,
                       int length)
SAX2: Receive notification of character data.

createAST

public void createAST(Stylesheet stylesheet)
Instanciates a SAX2 parser and generate the AST from the input.

elementSupported

public boolean elementSupported(String namespace,
                                String localName)

endDocument

public void endDocument()
SAX2: Receive notification of the end of a document.
Specified by:
endDocument in interface ContentHandler

endElement

public void endElement(String uri,
                       String localname,
                       String qname)
SAX2: Receive notification of the end of an element.
Specified by:
endElement in interface ContentHandler

endPrefixMapping

public void endPrefixMapping(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

errorsFound

public boolean errorsFound()
Returns true if there were any errors during compilation

functionSupported

public boolean functionSupported(String fname)

getCurrentImportPrecedence

public int getCurrentImportPrecedence()

getCurrentStylesheet

public Stylesheet getCurrentStylesheet()

getDocumentRoot

public SyntaxTreeNode getDocumentRoot()

getErrors

public Vector getErrors()

getExcludeResultPrefixes

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

getExtensionElementPrefixes

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

getNextImportPrecedence

public int getNextImportPrecedence()

getOutput

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

getOutputProperties

public Properties getOutputProperties()

getQName

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

getQName

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

getQName

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

getQName

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

getQName

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

getQNameIgnoreDefaultNs

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

getQNameSafe

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

getSymbolTable

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

getTemplate

public Template getTemplate()

getTemplateIndex

public int getTemplateIndex()

getTopLevelStylesheet

public Stylesheet getTopLevelStylesheet()

getUseAttributeSets

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

getWarnings

public Vector getWarnings()

getXSLTC

public XSLTC getXSLTC()

ignorableWhitespace

public void ignorableWhitespace(char[] ch,
                                int start,
                                int length)
IGNORED - all ignorable whitespace is ignored

init

public void init()

lookupVariable

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

makeInstance

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

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().

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

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

parseExpression

public org.apache.xalan.xsltc.compiler.Expression parseExpression(SyntaxTreeNode parent,
                                                                  String exp)
Parse an XPath expression:

parseExpression

public org.apache.xalan.xsltc.compiler.Expression parseExpression(SyntaxTreeNode parent,
                                                                  String attr,
                                                                  String def)
Parse an XPath expression:

parsePattern

public Pattern parsePattern(SyntaxTreeNode parent,
                            String pattern)
Parse an XPath pattern:

parsePattern

public Pattern parsePattern(SyntaxTreeNode parent,
                            String attr,
                            String def)
Parse an XPath pattern:

printErrors

public void printErrors()
Prints all compile-time errors

printWarnings

public void printWarnings()
Prints all compile-time warnings

processingInstruction

public void processingInstruction(String name,
                                  String value)
SAX2: Receive notification of a processing instruction. These require special handling for stylesheet PIs.
Specified by:
processingInstruction in interface ContentHandler

removeVariable

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

reportError

public void reportError(int category,
                        ErrorMsg error)
Common error/warning message handler

setCurrentStylesheet

public void setCurrentStylesheet(Stylesheet stylesheet)

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

setOutput

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

setTemplate

public void setTemplate(Template template)

setXSLTC

public void setXSLTC(XSLTC xsltc)

skippedEntity

public void skippedEntity(String name)
IGNORED - we do not have to do anything with skipped entities
Specified by:
skippedEntity in interface ContentHandler

startDocument

public void startDocument()
SAX2: Receive notification of the beginning of a document.
Specified by:
startDocument in interface ContentHandler

startElement

public void startElement(String uri,
                         String localname,
                         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

startPrefixMapping

public void startPrefixMapping(String prefix,
                               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

Copyright B) 2004 Apache XML Project. All Rights Reserved.