Package com.sun.msv.reader.relax.core
Class RELAXCoreReader
- java.lang.Object
-
- org.xml.sax.helpers.XMLFilterImpl
-
- com.sun.msv.reader.GrammarReader
-
- com.sun.msv.reader.relax.RELAXReader
-
- com.sun.msv.reader.relax.core.RELAXCoreReader
-
- All Implemented Interfaces:
IDContextProvider2
,XSDatatypeResolver
,org.relaxng.datatype.ValidationContext
,ContentHandler
,DTDHandler
,EntityResolver
,ErrorHandler
,XMLFilter
,XMLReader
- Direct Known Subclasses:
RELAXCoreIslandSchemaReader
public class RELAXCoreReader extends RELAXReader implements XSDatatypeResolver
reads RELAX module (classic RELAX module; no namespace extension) by SAX2 and constructs abstract grammar model. This class does not recognize extensions introduced by RELAX Namespace (like anyOtherElement, or <ref label="..." namespace="..." />.- Author:
- Kohsuke KAWAGUCHI
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
RELAXCoreReader.StateFactory
-
Nested classes/interfaces inherited from class com.sun.msv.reader.GrammarReader
GrammarReader.BackPatch, GrammarReader.BackwardReferenceMap, GrammarReader.ChainPrefixResolver, GrammarReader.PrefixResolver
-
-
Field Summary
-
Fields inherited from class com.sun.msv.reader.relax.RELAXReader
ERR_ILLEGAL_OCCURS, ERR_MISPLACED_OCCURS, RELAXCoreNamespace, sfactory
-
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 RELAXCoreReader(GrammarReaderController controller, SAXParserFactory parserFactory, ExpressionPool pool)
RELAXCoreReader(GrammarReaderController controller, SAXParserFactory parserFactory, RELAXCoreReader.StateFactory stateFactory, ExpressionPool pool, String expectedTargetNamespace)
full constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addUserDefinedType(XSDatatypeExp exp)
protected boolean
canHaveOccurs(ExpressionState state)
returns true if the given state can have "occurs" attribute.State
createExpressionChildState(State parent, StartTagInfo tag)
this method must be implemented by the derived class to create language-default expresion state.static org.iso_relax.verifier.Schema
getRELAXCoreSchema4Schema()
RELAXModule
getResult()
obtains parsed grammar object only if parsing was successful.Grammar
getResultAsGrammar()
gets the parsed AGM.protected RELAXCoreReader.StateFactory
getStateFactory()
protected boolean
isGrammarElement(StartTagInfo tag)
checks if given element is that of the grammar elements.protected String
localizeMessage(String propertyName, Object[] args)
formats localized message with argumentsstatic RELAXModule
parse(String moduleURL, SAXParserFactory factory, GrammarReaderController controller, ExpressionPool pool)
loads RELAX modulestatic RELAXModule
parse(InputSource module, SAXParserFactory factory, GrammarReaderController controller, ExpressionPool pool)
loads RELAX moduleprotected Expression
resolveAttPoolRef(String namespace, String role)
protected Expression
resolveElementRef(String namespace, String label)
obtains an Expression specified by given (namespace,label) pair.protected Expression
resolveHedgeRef(String namespace, String label)
obtains an Expression specified by given (namespace,label) pair.XSDatatypeExp
resolveXSDatatype(String typeName)
gets DataType object from type name.protected void
wrapUp()
-
Methods inherited from class com.sun.msv.reader.relax.RELAXReader
canHaveOccurs, createFacetState, getPool, interceptExpression
-
Methods inherited from class com.sun.msv.reader.GrammarReader
_parse, addBackPatchJob, addBackPatchJob, combineURI, combineURL, createParserFactory, detectUndefinedOnes, endPrefixMapping, getBackwardCompatibleType, getBaseUri, getCurrentState, getDeclaredLocationOf, getLocator, inputSourceFromLSInput, isNotation, isUnparsedEntity, iterateInscopeNamespaces, onID, parse, parse, parse, popState, pushState, reportError, reportError, reportError, reportError, reportError, reportError, reportError, reportError, reportWarning, reportWarning, reportWarning, reportWarning, resolveLocation, resolveNamespacePrefix, runBackPatchJob, setDeclaredLocationOf, setDocumentLocator, setLocator, splitQName, startPrefixMapping, switchSource, switchSource, switchSource
-
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, warning
-
-
-
-
Field Detail
-
relaxCoreSchema4Schema
protected static org.iso_relax.verifier.Schema relaxCoreSchema4Schema
Schema for schema of RELAX Core. Unless overrided, this schema for schema will be used to parse a RELAX Core schema. To override, call the full constructor of this class and change the parameter.
-
module
protected RELAXModule module
RELAX module object being under construction. object is created when target namespace is identified.
-
combinedAttPools
protected final ReferenceContainer combinedAttPools
contains all expressions that are going to be combined. ReferenceExp is used to wrap an expression to provide location information. (attPool element with combine attribute).
-
ERR_NAMESPACE_NOT_SUPPROTED
public static final String ERR_NAMESPACE_NOT_SUPPROTED
- See Also:
- Constant Field Values
-
ERR_INCONSISTENT_TARGET_NAMESPACE
public static final String ERR_INCONSISTENT_TARGET_NAMESPACE
- See Also:
- Constant Field Values
-
ERR_MISSING_TARGET_NAMESPACE
public static final String ERR_MISSING_TARGET_NAMESPACE
- See Also:
- Constant Field Values
-
ERR_MULTIPLE_TAG_DECLARATIONS
public static final String ERR_MULTIPLE_TAG_DECLARATIONS
- See Also:
- Constant Field Values
-
ERR_MORE_THAN_ONE_INLINE_TAG
public static final String ERR_MORE_THAN_ONE_INLINE_TAG
- See Also:
- Constant Field Values
-
ERR_MULTIPLE_ATTPOOL_DECLARATIONS
public static final String ERR_MULTIPLE_ATTPOOL_DECLARATIONS
- See Also:
- Constant Field Values
-
ERR_UNDEFINED_ELEMENTRULE
public static final String ERR_UNDEFINED_ELEMENTRULE
- See Also:
- Constant Field Values
-
ERR_UNDEFINED_HEDGERULE
public static final String ERR_UNDEFINED_HEDGERULE
- See Also:
- Constant Field Values
-
ERR_UNDEFINED_TAG
public static final String ERR_UNDEFINED_TAG
- See Also:
- Constant Field Values
-
ERR_UNDEFINED_ATTPOOL
public static final String ERR_UNDEFINED_ATTPOOL
- See Also:
- Constant Field Values
-
ERR_LABEL_COLLISION
public static final String ERR_LABEL_COLLISION
- See Also:
- Constant Field Values
-
ERR_ROLE_COLLISION
public static final String ERR_ROLE_COLLISION
- See Also:
- Constant Field Values
-
WRN_NO_EXPROTED_LABEL
public static final String WRN_NO_EXPROTED_LABEL
- See Also:
- Constant Field Values
-
ERR_EXPROTED_HEDGERULE_CONSTRAINT
public static final String ERR_EXPROTED_HEDGERULE_CONSTRAINT
- See Also:
- Constant Field Values
-
ERR_MULTIPLE_ATTRIBUTE_CONSTRAINT
public static final String ERR_MULTIPLE_ATTRIBUTE_CONSTRAINT
- See Also:
- Constant Field Values
-
ERR_ID_ABUSE
public static final String ERR_ID_ABUSE
- See Also:
- Constant Field Values
-
ERR_ID_ABUSE_1
public static final String ERR_ID_ABUSE_1
- See Also:
- Constant Field Values
-
WRN_ILLEGAL_RELAXCORE_VERSION
public static final String WRN_ILLEGAL_RELAXCORE_VERSION
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
RELAXCoreReader
public RELAXCoreReader(GrammarReaderController controller, SAXParserFactory parserFactory, ExpressionPool pool)
-
RELAXCoreReader
public RELAXCoreReader(GrammarReaderController controller, SAXParserFactory parserFactory, RELAXCoreReader.StateFactory stateFactory, ExpressionPool pool, String expectedTargetNamespace)
full constructor.- Parameters:
stateFactory
- this object creates all parsing state object. Parsing behavior can be modified by changing this object.expectedTargetNamespace
- expected value of 'targetNamespace' attribute. If this value is null, then the module must have 'targetNamepsace' attribute. If this value is non-null and module doesn't have targetNamespace attribute, then expectedTargetNamespace is used as the module's target namespace (chameleon effect). If expectedNamespace differs from the module's targetNamespace attribute, then an error will be issued.
-
-
Method Detail
-
parse
public static RELAXModule parse(String moduleURL, SAXParserFactory factory, GrammarReaderController controller, ExpressionPool pool)
loads RELAX module
-
parse
public static RELAXModule parse(InputSource module, SAXParserFactory factory, GrammarReaderController controller, ExpressionPool pool)
loads RELAX module
-
getRELAXCoreSchema4Schema
public static org.iso_relax.verifier.Schema getRELAXCoreSchema4Schema()
-
getResult
public final RELAXModule getResult()
obtains parsed grammar object only if parsing was successful.
-
getResultAsGrammar
public final Grammar getResultAsGrammar()
Description copied from class:GrammarReader
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.- Specified by:
getResultAsGrammar
in classGrammarReader
-
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
-
addUserDefinedType
public final void addUserDefinedType(XSDatatypeExp exp)
-
resolveXSDatatype
public XSDatatypeExp resolveXSDatatype(String typeName)
gets DataType object from type name. If undefined type name is specified, this method is responsible to report an error, and recovers.- Specified by:
resolveXSDatatype
in interfaceXSDatatypeResolver
- Parameters:
typeName
- The type of this value varies in the schema language. In XML Schema, for example, in which QNames are used to designate datatypes, this parameter will be QName. In RELAX Core, in which the same syntax is used but NCName is used to designate datatypes. So this parameter will be NCName.- Returns:
- A non-null valid object. An error should be reported and recovered by the callee.
-
getStateFactory
protected final RELAXCoreReader.StateFactory getStateFactory()
-
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 classRELAXReader
- Returns:
- null if the start tag is an error.
-
canHaveOccurs
protected boolean canHaveOccurs(ExpressionState state)
returns true if the given state can have "occurs" attribute.
-
resolveElementRef
protected Expression resolveElementRef(String namespace, String label)
Description copied from class:RELAXReader
obtains an Expression specified by given (namespace,label) pair. this method is called to parse <ref label="..." /> element.- Specified by:
resolveElementRef
in classRELAXReader
-
resolveHedgeRef
protected Expression resolveHedgeRef(String namespace, String label)
Description copied from class:RELAXReader
obtains an Expression specified by given (namespace,label) pair. this method is called to parse <hedgeRef label="..." /> element.- Specified by:
resolveHedgeRef
in classRELAXReader
-
resolveAttPoolRef
protected Expression resolveAttPoolRef(String namespace, String role)
-
wrapUp
protected void wrapUp()
-
localizeMessage
protected String localizeMessage(String propertyName, Object[] args)
Description copied from class:GrammarReader
formats localized message with arguments- Overrides:
localizeMessage
in classRELAXReader
-
-