Package com.sun.msv.reader.trex.ng
Class RELAXNGReader
- java.lang.Object
-
- org.xml.sax.helpers.XMLFilterImpl
-
- com.sun.msv.reader.GrammarReader
-
- com.sun.msv.reader.trex.TREXBaseReader
-
- com.sun.msv.reader.trex.ng.RELAXNGReader
-
- All Implemented Interfaces:
IDContextProvider2
,org.relaxng.datatype.ValidationContext
,org.xml.sax.ContentHandler
,org.xml.sax.DTDHandler
,org.xml.sax.EntityResolver
,org.xml.sax.ErrorHandler
,org.xml.sax.XMLFilter
,org.xml.sax.XMLReader
- Direct Known Subclasses:
RELAXNGCompReader
public class RELAXNGReader extends TREXBaseReader
reads RELAX NG grammar from SAX2 and constructs abstract grammar model.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
RELAXNGReader.AbortException
protected static class
RELAXNGReader.RefExpParseInfo
information necessary to correctly parse pattern definitions.static class
RELAXNGReader.StateFactory
creates various State object, which in turn parses grammar.-
Nested classes/interfaces inherited from class com.sun.msv.reader.GrammarReader
GrammarReader.BackPatch, GrammarReader.BackwardReferenceMap, GrammarReader.ChainPrefixResolver, GrammarReader.PrefixResolver
-
-
Field Summary
Fields Modifier and Type Field Description protected RELAXNGReader.RefExpParseInfo
currentNamedPattern
Info about the current ReferenceExp object which is being defined.private org.relaxng.datatype.DatatypeLibrary
datatypeLib
currently active datatype library.private org.relaxng.datatype.DatatypeLibraryFactory
datatypeLibraryFactory
DatatypeLibrary factory object.protected java.lang.String
datatypeLibURI
the namespace URI of the currently active datatype library.protected boolean
directRefernce
Flag to indicate whether we saw <element> or not.private LightStack
dtLibStack
private LightStack
dtLibURIStack
static java.lang.String
ERR_BAD_DATA_VALUE
static java.lang.String
ERR_BAD_FACET
static java.lang.String
ERR_INCONSISTENT_COMBINE
static java.lang.String
ERR_INCONSISTENT_KEY_TYPE
static java.lang.String
ERR_INFOSET_URI_ATTRIBUTE
static java.lang.String
ERR_INVALID_PARAMETERS
static java.lang.String
ERR_MULTIPLE_EXCEPT
static java.lang.String
ERR_NAKED_INFINITE_ATTRIBUTE_NAMECLASS
static java.lang.String
ERR_NOT_ABSOLUTE_URI
static java.lang.String
ERR_REDEFINING_UNDEFINED
static java.lang.String
ERR_UNDEFINED_DATATYPE_1
static java.lang.String
ERR_UNDEFINED_KEY
static java.lang.String
ERR_UNKNOWN_DATATYPE_VOCABULARY_1
static java.lang.String
ERR_XMLNS_ATTRIBUTE
private java.util.Map
refExpParseInfos
Map from ReferenceExps to RefExpParseInfos.static java.lang.String
RELAXNGNamespace
Namespace URI of RELAX NGprotected static org.iso_relax.verifier.Schema
relaxNGSchema4Schema
Schema for schema of RELAX NG.protected RestrictionChecker
restrictionChecker
Contextual restriction checker.-
Fields inherited from class com.sun.msv.reader.trex.TREXBaseReader
ERR_BAD_COMBINE, ERR_COMBINE_MISSING, ERR_DUPLICATE_DEFINITION, ERR_INTERLEAVED_ANYSTRING, ERR_INTERLEAVED_STRING, ERR_MISSING_CHILD_NAMECLASS, ERR_MORE_THAN_ONE_NAMECLASS, ERR_NONEXISTENT_PARENT_GRAMMAR, ERR_REPEATED_STRING, ERR_SEQUENCED_STRING, ERR_UNDECLARED_PREFIX, ERR_UNDEFINED_PATTERN, ERR_UNKNOWN_DATATYPE_VOCABULARY, grammar, sfactory, targetNamespace, WRN_COMBINE_IGNORED, WRN_OBSOLETED_XMLSCHEMA_NAMSPACE
-
Fields inherited from class com.sun.msv.reader.GrammarReader
backwardReference, basePrefixResolver, controller, ERR_BAD_ATTRIBUTE_VALUE, ERR_BAD_TYPE, ERR_CHARACTERS, ERR_CONFLICTING_ATTRIBUTES, ERR_DATATYPE_ALREADY_DEFINED, ERR_DISALLOWED_ATTRIBUTE, ERR_FRAGMENT_IDENTIFIER, ERR_ILLEGAL_FINAL_VALUE, ERR_MALPLACED_ELEMENT, ERR_MISSING_ATTRIBUTE, ERR_MISSING_ATTRIBUTE_2, ERR_MISSING_CHILD_EXPRESSION, ERR_MISSING_CHILD_TYPE, ERR_MISSING_TOPLEVEL, ERR_MORE_THAN_ONE_CHILD_EXPRESSION, ERR_MORE_THAN_ONE_CHILD_TYPE, ERR_RECURSIVE_DATATYPE, ERR_RECURSIVE_INCLUDE, ERR_RUNAWAY_EXPRESSION, ERR_UNDEFINED_DATATYPE, parserFactory, pool, prefixResolver, WRN_DEPRECATED_TYPENAME, WRN_MAYBE_WRONG_NAMESPACE
-
-
Constructor Summary
Constructors Constructor Description RELAXNGReader(GrammarReaderController controller)
easy-to-use constructor.RELAXNGReader(GrammarReaderController controller, javax.xml.parsers.SAXParserFactory parserFactory)
easy-to-use constructor.RELAXNGReader(GrammarReaderController controller, javax.xml.parsers.SAXParserFactory parserFactory, RELAXNGReader.StateFactory stateFactory, ExpressionPool pool)
full constructor
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
checkRunawayExpression(ReferenceExp node, java.util.Stack items, java.util.Set visitedExps)
State
createExpressionChildState(State parent, StartTagInfo tag)
this method must be implemented by the derived class to create language-default expresion state.protected State
createNameClassChildState(State parent, StartTagInfo tag)
void
endDocument()
void
endElement(java.lang.String a, java.lang.String b, java.lang.String c)
org.relaxng.datatype.DatatypeLibrary
getCurrentDatatypeLibrary()
org.relaxng.datatype.DatatypeLibraryFactory
getDatatypeLibraryFactory()
Returns the datatypeLibraryFactory.protected TREXGrammar
getGrammar()
protected RELAXNGReader.RefExpParseInfo
getRefExpParseInfo(ReferenceExp exp)
Gets RefExpParseInfo object for the specified ReferenceExp.static org.iso_relax.verifier.Schema
getRELAXNGSchema4Schema()
protected RELAXNGReader.StateFactory
getStateFactory()
protected boolean
isGrammarElement(StartTagInfo tag)
checks if given element is that of the grammar elements.protected java.lang.String
localizeMessage(java.lang.String propertyName, java.lang.Object[] args)
formats localized message with argumentsstatic TREXGrammar
parse(java.lang.String grammarURL, javax.xml.parsers.SAXParserFactory factory, GrammarReaderController controller)
loads RELAX NG patternstatic TREXGrammar
parse(org.xml.sax.InputSource grammar, javax.xml.parsers.SAXParserFactory factory, GrammarReaderController controller)
loads RELAX NG patternorg.relaxng.datatype.Datatype
resolveDataType(java.lang.String localName)
obtains a named DataType object referenced by a local name.org.relaxng.datatype.DatatypeLibrary
resolveDataTypeLibrary(java.lang.String uri)
obtains the DataTypeLibrary that represents the specified namespace URI.java.lang.String
resolveNamespacePrefix(java.lang.String prefix)
void
setDatatypeLibraryFactory(org.relaxng.datatype.DatatypeLibraryFactory datatypeLibraryFactory)
Sets the datatypeLibraryFactory.void
startDocument()
void
startElement(java.lang.String a, java.lang.String b, java.lang.String c, org.xml.sax.Attributes d)
void
wrapUp()
performs final wrap-up.-
Methods inherited from class com.sun.msv.reader.trex.TREXBaseReader
getResult, getResultAsGrammar, getTargetNamespace
-
Methods inherited from class com.sun.msv.reader.GrammarReader
_parse, addBackPatchJob, addBackPatchJob, combineURI, combineURL, createParserFactory, detectUndefinedOnes, endPrefixMapping, getBackwardCompatibleType, getBaseUri, getCurrentState, getDeclaredLocationOf, getLocator, inputSourceFromLSInput, interceptExpression, isNotation, isUnparsedEntity, iterateInscopeNamespaces, onID, parse, parse, parse, popState, pushState, reportError, reportError, reportError, reportError, reportError, reportError, reportError, reportError, reportWarning, reportWarning, reportWarning, reportWarning, resolveLocation, runBackPatchJob, setDeclaredLocationOf, setDocumentLocator, setLocator, splitQName, startPrefixMapping, switchSource, switchSource, switchSource
-
Methods inherited from class org.xml.sax.helpers.XMLFilterImpl
characters, error, fatalError, getContentHandler, getDTDHandler, getEntityResolver, getErrorHandler, getFeature, getParent, getProperty, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, setContentHandler, setDTDHandler, setEntityResolver, setErrorHandler, setFeature, setParent, setProperty, skippedEntity, unparsedEntityDecl, warning
-
-
-
-
Field Detail
-
relaxNGSchema4Schema
protected static org.iso_relax.verifier.Schema relaxNGSchema4Schema
Schema for schema of RELAX NG.
-
refExpParseInfos
private final java.util.Map refExpParseInfos
Map from ReferenceExps to RefExpParseInfos.
-
currentNamedPattern
protected RELAXNGReader.RefExpParseInfo currentNamedPattern
Info about the current ReferenceExp object which is being defined. This field is maintained by DefineState.This field is set to null when there is an error, or the pattern being defined is being re-defined.
This is a part of the process of the recursive self reference error detection.
-
directRefernce
protected boolean directRefernce
Flag to indicate whether we saw <element> or not. If we don't see any <element> between <define>/<start> and <ref>/<parentRef>, then that reference will go tocurrentNamedPattern.refs
.This is a part of the process of the recursive self reference error detection.
-
RELAXNGNamespace
public static final java.lang.String RELAXNGNamespace
Namespace URI of RELAX NG- See Also:
- Constant Field Values
-
datatypeLibraryFactory
private org.relaxng.datatype.DatatypeLibraryFactory datatypeLibraryFactory
DatatypeLibrary factory object.
-
restrictionChecker
protected final RestrictionChecker restrictionChecker
Contextual restriction checker.
-
datatypeLib
private org.relaxng.datatype.DatatypeLibrary datatypeLib
currently active datatype library. This field is maintained by this class. In case of an error, this field may be set to null after issuing an error. So care should be taken not to report the same error again.
-
datatypeLibURI
protected java.lang.String datatypeLibURI
the namespace URI of the currently active datatype library. The empty string indicates the built-in datatype library.
-
dtLibStack
private final LightStack dtLibStack
-
dtLibURIStack
private final LightStack dtLibURIStack
-
ERR_BAD_FACET
public static final java.lang.String ERR_BAD_FACET
- See Also:
- Constant Field Values
-
ERR_INVALID_PARAMETERS
public static final java.lang.String ERR_INVALID_PARAMETERS
- See Also:
- Constant Field Values
-
ERR_BAD_DATA_VALUE
public static final java.lang.String ERR_BAD_DATA_VALUE
- See Also:
- Constant Field Values
-
ERR_UNDEFINED_KEY
public static final java.lang.String ERR_UNDEFINED_KEY
- See Also:
- Constant Field Values
-
ERR_UNDEFINED_DATATYPE_1
public static final java.lang.String ERR_UNDEFINED_DATATYPE_1
- See Also:
- Constant Field Values
-
ERR_INCONSISTENT_KEY_TYPE
public static final java.lang.String ERR_INCONSISTENT_KEY_TYPE
- See Also:
- Constant Field Values
-
ERR_INCONSISTENT_COMBINE
public static final java.lang.String ERR_INCONSISTENT_COMBINE
- See Also:
- Constant Field Values
-
ERR_REDEFINING_UNDEFINED
public static final java.lang.String ERR_REDEFINING_UNDEFINED
- See Also:
- Constant Field Values
-
ERR_UNKNOWN_DATATYPE_VOCABULARY_1
public static final java.lang.String ERR_UNKNOWN_DATATYPE_VOCABULARY_1
- See Also:
- Constant Field Values
-
ERR_MULTIPLE_EXCEPT
public static final java.lang.String ERR_MULTIPLE_EXCEPT
- See Also:
- Constant Field Values
-
ERR_NOT_ABSOLUTE_URI
public static final java.lang.String ERR_NOT_ABSOLUTE_URI
- See Also:
- Constant Field Values
-
ERR_INFOSET_URI_ATTRIBUTE
public static final java.lang.String ERR_INFOSET_URI_ATTRIBUTE
- See Also:
- Constant Field Values
-
ERR_XMLNS_ATTRIBUTE
public static final java.lang.String ERR_XMLNS_ATTRIBUTE
- See Also:
- Constant Field Values
-
ERR_NAKED_INFINITE_ATTRIBUTE_NAMECLASS
public static final java.lang.String ERR_NAKED_INFINITE_ATTRIBUTE_NAMECLASS
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
RELAXNGReader
public RELAXNGReader(GrammarReaderController controller)
easy-to-use constructor.
-
RELAXNGReader
public RELAXNGReader(GrammarReaderController controller, javax.xml.parsers.SAXParserFactory parserFactory)
easy-to-use constructor.
-
RELAXNGReader
public RELAXNGReader(GrammarReaderController controller, javax.xml.parsers.SAXParserFactory parserFactory, RELAXNGReader.StateFactory stateFactory, ExpressionPool pool)
full constructor
-
-
Method Detail
-
parse
public static TREXGrammar parse(java.lang.String grammarURL, javax.xml.parsers.SAXParserFactory factory, GrammarReaderController controller)
loads RELAX NG pattern
-
parse
public static TREXGrammar parse(org.xml.sax.InputSource grammar, javax.xml.parsers.SAXParserFactory factory, GrammarReaderController controller)
loads RELAX NG pattern
-
getRELAXNGSchema4Schema
public static org.iso_relax.verifier.Schema getRELAXNGSchema4Schema()
-
localizeMessage
protected java.lang.String localizeMessage(java.lang.String propertyName, java.lang.Object[] args)
Description copied from class:GrammarReader
formats localized message with arguments- Overrides:
localizeMessage
in classTREXBaseReader
-
getGrammar
protected TREXGrammar getGrammar()
-
getRefExpParseInfo
protected RELAXNGReader.RefExpParseInfo getRefExpParseInfo(ReferenceExp exp)
Gets RefExpParseInfo object for the specified ReferenceExp.
-
isGrammarElement
protected boolean isGrammarElement(StartTagInfo tag)
Description copied from class:GrammarReader
checks if given element is that of the grammar elements.- Specified by:
isGrammarElement
in classGrammarReader
-
getDatatypeLibraryFactory
public org.relaxng.datatype.DatatypeLibraryFactory getDatatypeLibraryFactory()
Returns the datatypeLibraryFactory.
-
setDatatypeLibraryFactory
public void setDatatypeLibraryFactory(org.relaxng.datatype.DatatypeLibraryFactory datatypeLibraryFactory)
Sets the datatypeLibraryFactory.
-
getStateFactory
protected RELAXNGReader.StateFactory getStateFactory()
-
createNameClassChildState
protected State createNameClassChildState(State parent, StartTagInfo tag)
- Overrides:
createNameClassChildState
in classTREXBaseReader
-
createExpressionChildState
public State createExpressionChildState(State parent, StartTagInfo tag)
Description copied from class:GrammarReader
this method must be implemented by the derived class to create language-default expresion state.- Overrides:
createExpressionChildState
in classTREXBaseReader
- Returns:
- null if the start tag is an error.
-
resolveDataType
public org.relaxng.datatype.Datatype resolveDataType(java.lang.String localName)
obtains a named DataType object referenced by a local name.
-
resolveDataTypeLibrary
public org.relaxng.datatype.DatatypeLibrary resolveDataTypeLibrary(java.lang.String uri)
obtains the DataTypeLibrary that represents the specified namespace URI. If the specified URI is undefined, then this method issues an error to the user and must return a dummy datatype library.
-
checkRunawayExpression
private void checkRunawayExpression(ReferenceExp node, java.util.Stack items, java.util.Set visitedExps) throws RELAXNGReader.AbortException
- Throws:
RELAXNGReader.AbortException
-
wrapUp
public void wrapUp()
Description copied from class:TREXBaseReader
performs final wrap-up. This method is called from the RootState object, after the parsing is completed.This method has to be called after the run-away expression check is done.
- Overrides:
wrapUp
in classTREXBaseReader
-
getCurrentDatatypeLibrary
public org.relaxng.datatype.DatatypeLibrary getCurrentDatatypeLibrary()
-
resolveNamespacePrefix
public java.lang.String resolveNamespacePrefix(java.lang.String prefix)
- Specified by:
resolveNamespacePrefix
in interfaceorg.relaxng.datatype.ValidationContext
- Overrides:
resolveNamespacePrefix
in classGrammarReader
-
startDocument
public void startDocument() throws org.xml.sax.SAXException
- Specified by:
startDocument
in interfaceorg.xml.sax.ContentHandler
- Overrides:
startDocument
in classorg.xml.sax.helpers.XMLFilterImpl
- Throws:
org.xml.sax.SAXException
-
endDocument
public void endDocument() throws org.xml.sax.SAXException
- Specified by:
endDocument
in interfaceorg.xml.sax.ContentHandler
- Overrides:
endDocument
in classorg.xml.sax.helpers.XMLFilterImpl
- Throws:
org.xml.sax.SAXException
-
startElement
public void startElement(java.lang.String a, java.lang.String b, java.lang.String c, org.xml.sax.Attributes d) throws org.xml.sax.SAXException
- Specified by:
startElement
in interfaceorg.xml.sax.ContentHandler
- Overrides:
startElement
in classTREXBaseReader
- Throws:
org.xml.sax.SAXException
-
endElement
public void endElement(java.lang.String a, java.lang.String b, java.lang.String c) throws org.xml.sax.SAXException
- Specified by:
endElement
in interfaceorg.xml.sax.ContentHandler
- Overrides:
endElement
in classTREXBaseReader
- Throws:
org.xml.sax.SAXException
-
-