Package com.sun.msv.reader
Class GrammarReader
java.lang.Object
org.xml.sax.helpers.XMLFilterImpl
com.sun.msv.reader.GrammarReader
- All Implemented Interfaces:
IDContextProvider2,org.relaxng.datatype.ValidationContext,ContentHandler,DTDHandler,EntityResolver,ErrorHandler,XMLFilter,XMLReader
- Direct Known Subclasses:
RELAXReader,TREXBaseReader,XMLSchemaReader
base implementation of grammar readers that read grammar from SAX2 stream.
GrammarReader class can be used as a ContentHandler that parses a grammar.
So the typical usage is
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.
- Author:
- Kohsuke KAWAGUCHI
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceclassmemorizes what declarations are referenced from where.classstatic interfacenamespace prefix to URI conversion map. -
Field Summary
FieldsModifier and TypeFieldDescriptionkeeps track of all backward references to every ReferenceExp.static final GrammarReader.PrefixResolverThe namespace prefix resolver that only resolves "xml" prefix.final Controllerthis object receives errors and warningsstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringfinal SAXParserFactoryReader may create another SAXParser from this factoryfinal ExpressionPoolthis object must be used to create a new expressionstatic final Stringstatic final String -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedGrammarReader(GrammarReaderController _controller, SAXParserFactory parserFactory, ExpressionPool pool, State initialState) constructor that should be called from parse method. -
Method Summary
Modifier and TypeMethodDescriptionfinal voidparses a grammar from the specified sourcefinal voidfinal voidfinal StringcombineURI(String baseURI, String relativeURI) converts the relative URL to the absolute one by using the specified base URL.final StringcombineURL(String baseURI, String relativeURI) Deprecated.use the combineURI method.abstract StatecreateExpressionChildState(State parent, StartTagInfo tag) this method must be implemented by the derived class to create language-default expresion state.protected static SAXParserFactoryCreates a default SAXParserFactory.voiddetectUndefinedOnes(ReferenceContainer container, String errMsg) detects undefined ReferenceExp and reports it as an error.voidendPrefixMapping(String prefix) getBackwardCompatibleType(String typeName) tries to obtain a DataType object by resolving obsolete names.final Stategets current State object.abstract Grammargets the parsed AGM.static SourceinputSourceFromLSInput(LSInput input) This is a stopgap until we can wean more of this code from SAX-dependence.protected ExpressioninterceptExpression(State state, Expression exp) intercepts an expression made by ExpressionState before it is passed to the parent state.protected abstract booleanchecks if given element is that of the grammar elements.booleanisNotation(String notationName) booleanisUnparsedEntity(String entityName) Iterates Map.Entry objects which has the prefix as key and the namespace URI as value.protected abstract StringlocalizeMessage(String propertyName, Object[] args) formats localized message with argumentsfinal voidonID(org.relaxng.datatype.Datatype dt, StringToken token) this method is called when a type with ID semantics is matched.final voidparses a grammar from the specified sourcevoidParse from an arbitrary javax.xml.transform source.final voidparse(InputSource source) parses a grammar from the specified sourcevoidpopState()pops the previous state from the stackvoidpushState(State newState, State parentState, StartTagInfo startTag) pushs the current state into the stack and sets new onefinal voidreportError(Exception nestedException, String propertyName) final voidreportError(Exception nestedException, String propertyName, Object arg1) final voidreportError(String propertyName) final voidreportError(String propertyName, Object arg1) final voidreportError(String propertyName, Object[] args, Exception nestedException, Locator[] errorLocations) reports an error to the controllerfinal voidreportError(String propertyName, Object arg1, Object arg2) final voidreportError(String propertyName, Object arg1, Object arg2, Object arg3) final voidreportError(Locator[] locs, String propertyName, Object[] args) final voidreportWarning(String propertyName) final voidreportWarning(String propertyName, Object arg1) final voidreportWarning(String propertyName, Object[] args, Locator[] locations) reports a warning to the controllerfinal voidreportWarning(String propertyName, Object arg1, Object arg2) final InputSourceresolveLocation(State sourceState, String uri) obtains InputSource for the specified url.resolveNamespacePrefix(String prefix) final voidPerforms all back-patchings.voidvoidvoidsetLocator(Locator locator) String[]splitQName(String qName) Resolves a QName into a pair of (namespace URI,local name).voidstartPrefixMapping(String prefix, String uri) voidswitchSource(State sourceState, String url, State newState) Switchs InputSource to the specified URL and parses it by the specified state.voidswitchSource(Source source, State newState) Start reading input from a source defined by a javax.xml.transform source.voidswitchSource(InputSource source, State newState) start reading input from a source defined by a SAX InputSource.Methods inherited from class org.xml.sax.helpers.XMLFilterImpl
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, warningMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.xml.sax.ContentHandler
declaration
-
Field Details
-
controller
this object receives errors and warnings -
parserFactory
Reader may create another SAXParser from this factory -
pool
this object must be used to create a new expression -
basePrefixResolver
The namespace prefix resolver that only resolves "xml" prefix. This class should be used as the base resolver. -
prefixResolver
-
backwardReference
keeps track of all backward references to every ReferenceExp. this map should be used to report the source of error of undefined-something. -
ERR_MALPLACED_ELEMENT
- See Also:
-
ERR_CHARACTERS
- See Also:
-
ERR_DISALLOWED_ATTRIBUTE
- See Also:
-
ERR_MISSING_ATTRIBUTE
- See Also:
-
ERR_BAD_ATTRIBUTE_VALUE
- See Also:
-
ERR_MISSING_ATTRIBUTE_2
- See Also:
-
ERR_CONFLICTING_ATTRIBUTES
- See Also:
-
ERR_RECURSIVE_INCLUDE
- See Also:
-
ERR_FRAGMENT_IDENTIFIER
- See Also:
-
ERR_UNDEFINED_DATATYPE
- See Also:
-
ERR_DATATYPE_ALREADY_DEFINED
- See Also:
-
ERR_MISSING_CHILD_EXPRESSION
- See Also:
-
ERR_MORE_THAN_ONE_CHILD_EXPRESSION
- See Also:
-
ERR_MORE_THAN_ONE_CHILD_TYPE
- See Also:
-
ERR_MISSING_CHILD_TYPE
- See Also:
-
ERR_ILLEGAL_FINAL_VALUE
- See Also:
-
ERR_RUNAWAY_EXPRESSION
- See Also:
-
ERR_MISSING_TOPLEVEL
- See Also:
-
WRN_MAYBE_WRONG_NAMESPACE
- See Also:
-
WRN_DEPRECATED_TYPENAME
- See Also:
-
ERR_BAD_TYPE
- See Also:
-
ERR_RECURSIVE_DATATYPE
- See Also:
-
-
Constructor Details
-
GrammarReader
protected GrammarReader(GrammarReaderController _controller, SAXParserFactory parserFactory, ExpressionPool pool, State initialState) constructor that should be called from parse method.
-
-
Method Details
-
createParserFactory
Creates a default SAXParserFactory. -
getResultAsGrammar
gets the parsed AGM. Should any error happens, this method should returns null. derived classes should implement type-safe getGrammar method, along with this method. -
isGrammarElement
checks if given element is that of the grammar elements. -
startPrefixMapping
- Specified by:
startPrefixMappingin interfaceContentHandler- Overrides:
startPrefixMappingin classXMLFilterImpl- Throws:
SAXException
-
endPrefixMapping
- Specified by:
endPrefixMappingin interfaceContentHandler- Overrides:
endPrefixMappingin classXMLFilterImpl- Throws:
SAXException
-
iterateInscopeNamespaces
Iterates Map.Entry objects which has the prefix as key and the namespace URI as value. -
splitQName
Resolves a QName into a pair of (namespace URI,local name). Therefore this method returns null if it fails to process QName. -
interceptExpression
intercepts an expression made by ExpressionState before it is passed to the parent state. derived class can perform further wrap-up before it is received by the parent. This mechanism is used by RELAXReader to handle occurs attribute. -
getBackwardCompatibleType
tries to obtain a DataType object by resolving obsolete names. this method is useful for backward compatibility purpose. -
resolveLocation
obtains InputSource for the specified url. Also this method allows GrammarReaderController to redirect or prohibit inclusion.- Parameters:
sourceState- The base URI of this state is used to resolve the resource.- Returns:
- always return non-null valid object
- Throws:
AbortException
-
combineURI
converts the relative URL to the absolute one by using the specified base URL. -
combineURL
Deprecated.use the combineURI method. -
switchSource
Switchs InputSource to the specified URL and parses it by the specified state. The method will return after the parsing of the new source is completed. derived classes can use this method to realize semantics of 'include'.- Parameters:
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.- Throws:
AbortException
-
switchSource
start reading input from a source defined by a SAX InputSource.- Parameters:
source-newState-
-
switchSource
Start reading input from a source defined by a javax.xml.transform source.- Parameters:
source-newState-
-
parse
parses a grammar from the specified source- Specified by:
parsein interfaceXMLReader- Overrides:
parsein classXMLFilterImpl
-
parse
parses a grammar from the specified source- Specified by:
parsein interfaceXMLReader- Overrides:
parsein classXMLFilterImpl
-
parse
Parse from an arbitrary javax.xml.transform source. If the Source can be processed bySAXSource.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.- Parameters:
source-- Throws:
TransformerConfigurationExceptionTransformerException
-
_parse
parses a grammar from the specified source -
setDeclaredLocationOf
-
getDeclaredLocationOf
-
detectUndefinedOnes
detects undefined ReferenceExp and reports it as an error. this method is used in the final wrap-up process of parsing. -
pushState
pushs the current state into the stack and sets new one -
popState
public void popState()pops the previous state from the stack -
getCurrentState
gets current State object. -
createExpressionChildState
this method must be implemented by the derived class to create language-default expresion state.- Returns:
- null if the start tag is an error.
-
setDocumentLocator
- Specified by:
setDocumentLocatorin interfaceContentHandler- Overrides:
setDocumentLocatorin classXMLFilterImpl
-
resolveNamespacePrefix
- Specified by:
resolveNamespacePrefixin interfaceorg.relaxng.datatype.ValidationContext
-
isUnparsedEntity
- Specified by:
isUnparsedEntityin interfaceorg.relaxng.datatype.ValidationContext
-
isNotation
- Specified by:
isNotationin interfaceorg.relaxng.datatype.ValidationContext
-
getBaseUri
- Specified by:
getBaseUriin interfaceorg.relaxng.datatype.ValidationContext
-
onID
Description copied from interface:IDContextProvider2this method is called when a type with ID semantics is matched. It is the callee's responsibility that stores ID and checks doubly defined ID, if it is necessary.- Specified by:
onIDin interfaceIDContextProvider2
-
addBackPatchJob
-
addBackPatchJob
-
runBackPatchJob
public final void runBackPatchJob()Performs all back-patchings. -
reportError
-
reportError
-
reportError
-
reportError
-
reportError
-
reportError
-
reportError
-
reportWarning
-
reportWarning
-
reportWarning
-
reportError
public final void reportError(String propertyName, Object[] args, Exception nestedException, Locator[] errorLocations) reports an error to the controller -
reportWarning
reports a warning to the controller -
inputSourceFromLSInput
This is a stopgap until we can wean more of this code from SAX-dependence.- Parameters:
input-- Returns:
-
localizeMessage
formats localized message with arguments -
setLocator
-
getLocator
-