public abstract class GrammarReader extends org.xml.sax.helpers.XMLFilterImpl implements IDContextProvider2
Or you may want to use several pre-defined static "parse" methods for ease of use.GrammarReader reader = new RELAXGrammarReader(...); XMLReader parser = .... // create a new XMLReader here parser.setContentHandler(reader); parser.parse(whateverYouLike); return reader.grammar; // obtain parsed grammar.
Modifier and Type | Class and Description |
---|---|
static interface |
GrammarReader.BackPatch |
class |
GrammarReader.BackwardReferenceMap
memorizes what declarations are referenced from where.
|
class |
GrammarReader.ChainPrefixResolver |
private class |
GrammarReader.InclusionContext
information that must be sheltered before switching InputSource
(typically by inclusion).
|
static interface |
GrammarReader.PrefixResolver
namespace prefix to URI conversion map.
|
Modifier and Type | Field and Description |
---|---|
private java.util.Vector |
backPatchJobs |
GrammarReader.BackwardReferenceMap |
backwardReference
keeps track of all backward references to every ReferenceExp.
|
static GrammarReader.PrefixResolver |
basePrefixResolver
The namespace prefix resolver that only resolves "xml" prefix.
|
Controller |
controller
this object receives errors and warnings
|
private java.util.Map |
declaredLocations
this map remembers where ReferenceExps are defined,
and where user defined types are defined.
|
private java.util.Vector |
delayedBackPatchJobs |
static java.lang.String |
ERR_BAD_ATTRIBUTE_VALUE |
static java.lang.String |
ERR_BAD_TYPE |
static java.lang.String |
ERR_CHARACTERS |
static java.lang.String |
ERR_CONFLICTING_ATTRIBUTES |
static java.lang.String |
ERR_DATATYPE_ALREADY_DEFINED |
static java.lang.String |
ERR_DISALLOWED_ATTRIBUTE |
static java.lang.String |
ERR_FRAGMENT_IDENTIFIER |
static java.lang.String |
ERR_ILLEGAL_FINAL_VALUE |
static java.lang.String |
ERR_MALPLACED_ELEMENT |
static java.lang.String |
ERR_MISSING_ATTRIBUTE |
static java.lang.String |
ERR_MISSING_ATTRIBUTE_2 |
static java.lang.String |
ERR_MISSING_CHILD_EXPRESSION |
static java.lang.String |
ERR_MISSING_CHILD_TYPE |
static java.lang.String |
ERR_MISSING_TOPLEVEL |
static java.lang.String |
ERR_MORE_THAN_ONE_CHILD_EXPRESSION |
static java.lang.String |
ERR_MORE_THAN_ONE_CHILD_TYPE |
static java.lang.String |
ERR_RECURSIVE_DATATYPE |
static java.lang.String |
ERR_RECURSIVE_INCLUDE |
static java.lang.String |
ERR_RUNAWAY_EXPRESSION |
static java.lang.String |
ERR_UNDEFINED_DATATYPE |
private org.xml.sax.Locator |
locator
document Locator that is given by XML reader
|
javax.xml.parsers.SAXParserFactory |
parserFactory
Reader may create another SAXParser from this factory
|
private GrammarReader.InclusionContext |
pendingIncludes
current inclusion context
|
ExpressionPool |
pool
this object must be used to create a new expression
|
GrammarReader.PrefixResolver |
prefixResolver |
static java.lang.String |
WRN_DEPRECATED_TYPENAME |
static java.lang.String |
WRN_MAYBE_WRONG_NAMESPACE |
Modifier | Constructor and Description |
---|---|
protected |
GrammarReader(GrammarReaderController _controller,
javax.xml.parsers.SAXParserFactory parserFactory,
ExpressionPool pool,
State initialState)
constructor that should be called from parse method.
|
Modifier and Type | Method and Description |
---|---|
void |
_parse(java.lang.Object source,
org.xml.sax.Locator errorSource)
parses a grammar from the specified source
|
void |
addBackPatchJob(GrammarReader.BackPatch job) |
void |
addBackPatchJob(XSDatatypeExp job) |
java.lang.String |
combineURI(java.lang.String baseURI,
java.lang.String relativeURI)
converts the relative URL to the absolute one by using the specified base URL.
|
java.lang.String |
combineURL(java.lang.String baseURI,
java.lang.String relativeURI)
Deprecated.
use the combineURI method.
|
abstract State |
createExpressionChildState(State parent,
StartTagInfo tag)
this method must be implemented by the derived class to create
language-default expresion state.
|
protected static javax.xml.parsers.SAXParserFactory |
createParserFactory()
Creates a default SAXParserFactory.
|
void |
detectUndefinedOnes(ReferenceContainer container,
java.lang.String errMsg)
detects undefined ReferenceExp and reports it as an error.
|
void |
endPrefixMapping(java.lang.String prefix) |
XSDatatype |
getBackwardCompatibleType(java.lang.String typeName)
tries to obtain a DataType object by resolving obsolete names.
|
java.lang.String |
getBaseUri() |
State |
getCurrentState()
gets current State object.
|
org.xml.sax.Locator |
getDeclaredLocationOf(java.lang.Object o) |
org.xml.sax.Locator |
getLocator() |
abstract Grammar |
getResultAsGrammar()
gets the parsed AGM.
|
static javax.xml.transform.Source |
inputSourceFromLSInput(org.w3c.dom.ls.LSInput input)
This is a stopgap until we can wean more of this code from SAX-dependence.
|
protected Expression |
interceptExpression(State state,
Expression exp)
intercepts an expression made by ExpressionState
before it is passed to the parent state.
|
protected abstract boolean |
isGrammarElement(StartTagInfo tag)
checks if given element is that of the grammar elements.
|
boolean |
isNotation(java.lang.String notationName) |
boolean |
isUnparsedEntity(java.lang.String entityName) |
java.util.Iterator |
iterateInscopeNamespaces()
Iterates Map.Entry objects which has the prefix as key and
the namespace URI as value.
|
protected abstract java.lang.String |
localizeMessage(java.lang.String propertyName,
java.lang.Object[] args)
formats localized message with arguments
|
void |
onID(org.relaxng.datatype.Datatype dt,
StringToken token)
this method is called when a type with ID semantics is matched.
|
void |
parse(org.xml.sax.InputSource source)
parses a grammar from the specified source
|
void |
parse(javax.xml.transform.Source source)
Parse from an arbitrary javax.xml.transform source.
|
void |
parse(java.lang.String source)
parses a grammar from the specified source
|
private void |
popInclusionContext() |
void |
popState()
pops the previous state from the stack
|
private org.xml.sax.Locator[] |
prepareLocation(org.xml.sax.Locator[] param) |
private void |
pushInclusionContext() |
void |
pushState(State newState,
State parentState,
StartTagInfo startTag)
pushs the current state into the stack and sets new one
|
void |
reportError(java.lang.Exception nestedException,
java.lang.String propertyName) |
void |
reportError(java.lang.Exception nestedException,
java.lang.String propertyName,
java.lang.Object arg1) |
void |
reportError(org.xml.sax.Locator[] locs,
java.lang.String propertyName,
java.lang.Object[] args) |
void |
reportError(java.lang.String propertyName) |
void |
reportError(java.lang.String propertyName,
java.lang.Object arg1) |
void |
reportError(java.lang.String propertyName,
java.lang.Object[] args,
java.lang.Exception nestedException,
org.xml.sax.Locator[] errorLocations)
reports an error to the controller
|
void |
reportError(java.lang.String propertyName,
java.lang.Object arg1,
java.lang.Object arg2) |
void |
reportError(java.lang.String propertyName,
java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3) |
void |
reportWarning(java.lang.String propertyName) |
void |
reportWarning(java.lang.String propertyName,
java.lang.Object arg1) |
void |
reportWarning(java.lang.String propertyName,
java.lang.Object[] args,
org.xml.sax.Locator[] locations)
reports a warning to the controller
|
void |
reportWarning(java.lang.String propertyName,
java.lang.Object arg1,
java.lang.Object arg2) |
org.xml.sax.InputSource |
resolveLocation(State sourceState,
java.lang.String uri)
obtains InputSource for the specified url.
|
java.lang.String |
resolveNamespacePrefix(java.lang.String prefix) |
void |
runBackPatchJob()
Performs all back-patchings.
|
private void |
runBackPatchJob(java.util.Vector vec) |
void |
setDeclaredLocationOf(java.lang.Object o) |
void |
setDocumentLocator(org.xml.sax.Locator loc) |
void |
setLocator(org.xml.sax.Locator locator) |
java.lang.String[] |
splitQName(java.lang.String qName)
Resolves a QName into a pair of (namespace URI,local name).
|
void |
startPrefixMapping(java.lang.String prefix,
java.lang.String uri) |
void |
switchSource(org.xml.sax.InputSource source,
State newState)
start reading input from a source defined by a SAX InputSource.
|
void |
switchSource(javax.xml.transform.Source source,
State newState)
Start reading input from a source defined by a javax.xml.transform source.
|
void |
switchSource(State sourceState,
java.lang.String url,
State newState)
Switchs InputSource to the specified URL and
parses it by the specified state.
|
characters, endDocument, endElement, error, fatalError, getContentHandler, getDTDHandler, getEntityResolver, getErrorHandler, getFeature, getParent, getProperty, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, setContentHandler, setDTDHandler, setEntityResolver, setErrorHandler, setFeature, setParent, setProperty, skippedEntity, startDocument, startElement, unparsedEntityDecl, warning
private org.xml.sax.Locator locator
public final Controller controller
public final javax.xml.parsers.SAXParserFactory parserFactory
public final ExpressionPool pool
public static final GrammarReader.PrefixResolver basePrefixResolver
public GrammarReader.PrefixResolver prefixResolver
private GrammarReader.InclusionContext pendingIncludes
public final GrammarReader.BackwardReferenceMap backwardReference
private final java.util.Map declaredLocations
private final java.util.Vector backPatchJobs
private final java.util.Vector delayedBackPatchJobs
public static final java.lang.String ERR_MALPLACED_ELEMENT
public static final java.lang.String ERR_CHARACTERS
public static final java.lang.String ERR_DISALLOWED_ATTRIBUTE
public static final java.lang.String ERR_MISSING_ATTRIBUTE
public static final java.lang.String ERR_BAD_ATTRIBUTE_VALUE
public static final java.lang.String ERR_MISSING_ATTRIBUTE_2
public static final java.lang.String ERR_CONFLICTING_ATTRIBUTES
public static final java.lang.String ERR_RECURSIVE_INCLUDE
public static final java.lang.String ERR_FRAGMENT_IDENTIFIER
public static final java.lang.String ERR_UNDEFINED_DATATYPE
public static final java.lang.String ERR_DATATYPE_ALREADY_DEFINED
public static final java.lang.String ERR_MISSING_CHILD_EXPRESSION
public static final java.lang.String ERR_MORE_THAN_ONE_CHILD_EXPRESSION
public static final java.lang.String ERR_MORE_THAN_ONE_CHILD_TYPE
public static final java.lang.String ERR_MISSING_CHILD_TYPE
public static final java.lang.String ERR_ILLEGAL_FINAL_VALUE
public static final java.lang.String ERR_RUNAWAY_EXPRESSION
public static final java.lang.String ERR_MISSING_TOPLEVEL
public static final java.lang.String WRN_MAYBE_WRONG_NAMESPACE
public static final java.lang.String WRN_DEPRECATED_TYPENAME
public static final java.lang.String ERR_BAD_TYPE
public static final java.lang.String ERR_RECURSIVE_DATATYPE
protected GrammarReader(GrammarReaderController _controller, javax.xml.parsers.SAXParserFactory parserFactory, ExpressionPool pool, State initialState)
protected static javax.xml.parsers.SAXParserFactory createParserFactory()
public abstract Grammar getResultAsGrammar()
protected abstract boolean isGrammarElement(StartTagInfo tag)
public void startPrefixMapping(java.lang.String prefix, java.lang.String uri) throws org.xml.sax.SAXException
startPrefixMapping
in interface org.xml.sax.ContentHandler
startPrefixMapping
in class org.xml.sax.helpers.XMLFilterImpl
org.xml.sax.SAXException
public void endPrefixMapping(java.lang.String prefix) throws org.xml.sax.SAXException
endPrefixMapping
in interface org.xml.sax.ContentHandler
endPrefixMapping
in class org.xml.sax.helpers.XMLFilterImpl
org.xml.sax.SAXException
public java.util.Iterator iterateInscopeNamespaces()
public java.lang.String[] splitQName(java.lang.String qName)
protected Expression interceptExpression(State state, Expression exp)
public XSDatatype getBackwardCompatibleType(java.lang.String typeName)
private void pushInclusionContext()
private void popInclusionContext()
public final org.xml.sax.InputSource resolveLocation(State sourceState, java.lang.String uri) throws AbortException
sourceState
- The base URI of this state is used to resolve the resource.AbortException
public final java.lang.String combineURI(java.lang.String baseURI, java.lang.String relativeURI)
public final java.lang.String combineURL(java.lang.String baseURI, java.lang.String relativeURI)
public void switchSource(State sourceState, java.lang.String url, State newState) throws AbortException
sourceState
- this state is used to resolve the URL.newState
- this state will parse top-level of new XML source.
this state receives document element by its createChildState method.AbortException
public void switchSource(org.xml.sax.InputSource source, State newState)
source
- newState
- public void switchSource(javax.xml.transform.Source source, State newState)
source
- newState
- public final void parse(java.lang.String source)
parse
in interface org.xml.sax.XMLReader
parse
in class org.xml.sax.helpers.XMLFilterImpl
public final void parse(org.xml.sax.InputSource source)
parse
in interface org.xml.sax.XMLReader
parse
in class org.xml.sax.helpers.XMLFilterImpl
public void parse(javax.xml.transform.Source source) throws javax.xml.transform.TransformerConfigurationException, javax.xml.transform.TransformerException
SAXSource.sourceToInputSource(Source)
,
then this API will use that. Otherwise, it will use a transformer to
create a stream of SAX events. In that later case, the grammar controller
will not be called for any errors on the source side or to resolve
any references; the caller is responsible for making separate arrangements.source
- javax.xml.transform.TransformerConfigurationException
javax.xml.transform.TransformerException
public final void _parse(java.lang.Object source, org.xml.sax.Locator errorSource)
public void setDeclaredLocationOf(java.lang.Object o)
public org.xml.sax.Locator getDeclaredLocationOf(java.lang.Object o)
public void detectUndefinedOnes(ReferenceContainer container, java.lang.String errMsg)
public void pushState(State newState, State parentState, StartTagInfo startTag)
public void popState()
public final State getCurrentState()
public abstract State createExpressionChildState(State parent, StartTagInfo tag)
public void setDocumentLocator(org.xml.sax.Locator loc)
setDocumentLocator
in interface org.xml.sax.ContentHandler
setDocumentLocator
in class org.xml.sax.helpers.XMLFilterImpl
public java.lang.String resolveNamespacePrefix(java.lang.String prefix)
resolveNamespacePrefix
in interface org.relaxng.datatype.ValidationContext
public boolean isUnparsedEntity(java.lang.String entityName)
isUnparsedEntity
in interface org.relaxng.datatype.ValidationContext
public boolean isNotation(java.lang.String notationName)
isNotation
in interface org.relaxng.datatype.ValidationContext
public java.lang.String getBaseUri()
getBaseUri
in interface org.relaxng.datatype.ValidationContext
public final void onID(org.relaxng.datatype.Datatype dt, StringToken token)
IDContextProvider2
onID
in interface IDContextProvider2
public final void addBackPatchJob(GrammarReader.BackPatch job)
public final void addBackPatchJob(XSDatatypeExp job)
public final void runBackPatchJob()
private final void runBackPatchJob(java.util.Vector vec)
public final void reportError(java.lang.String propertyName)
public final void reportError(java.lang.String propertyName, java.lang.Object arg1)
public final void reportError(java.lang.String propertyName, java.lang.Object arg1, java.lang.Object arg2)
public final void reportError(java.lang.String propertyName, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3)
public final void reportError(java.lang.Exception nestedException, java.lang.String propertyName)
public final void reportError(java.lang.Exception nestedException, java.lang.String propertyName, java.lang.Object arg1)
public final void reportError(org.xml.sax.Locator[] locs, java.lang.String propertyName, java.lang.Object[] args)
public final void reportWarning(java.lang.String propertyName)
public final void reportWarning(java.lang.String propertyName, java.lang.Object arg1)
public final void reportWarning(java.lang.String propertyName, java.lang.Object arg1, java.lang.Object arg2)
private org.xml.sax.Locator[] prepareLocation(org.xml.sax.Locator[] param)
public final void reportError(java.lang.String propertyName, java.lang.Object[] args, java.lang.Exception nestedException, org.xml.sax.Locator[] errorLocations)
public final void reportWarning(java.lang.String propertyName, java.lang.Object[] args, org.xml.sax.Locator[] locations)
public static javax.xml.transform.Source inputSourceFromLSInput(org.w3c.dom.ls.LSInput input)
input
- protected abstract java.lang.String localizeMessage(java.lang.String propertyName, java.lang.Object[] args)
public void setLocator(org.xml.sax.Locator locator)
public org.xml.sax.Locator getLocator()