Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.sun.msv.reader.xmlschema
Class XMLSchemaReader

    java.lang.Object
      org.xml.sax.helpers.XMLFilterImpl
          com.sun.msv.reader.GrammarReader
              com.sun.msv.reader.xmlschema.XMLSchemaReader

All Implemented Interfaces:
  org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler, IDContextProvider2, ValidationContext, org.xml.sax.XMLFilter, org.xml.sax.XMLReader, XSDatatypeResolver

public class XMLSchemaReader
extends GrammarReader
implements XSDatatypeResolver

parses XML representation of XML Schema and constructs AGM.

Author:
  Kohsuke KAWAGUCHI

Nested Class Summary
`static interface` | `XMLSchemaReader.RefResolver`
`static class` | `XMLSchemaReader.StateFactory` creates various State object, which in turn parses grammar.

Nested classes inherited from class com.sun.msv.reader.GrammarReader
`GrammarReader.BackPatch, GrammarReader.BackwardReferenceMap, GrammarReader.ChainPrefixResolver, GrammarReader.PrefixResolver`

Field Summary
`ComplexTypeExp` | `complexUrType` expression that matches to "ur-type" when used as a complex type.
`boolean` | `doDuplicateDefinitionCheck` a flag that indicates State objects should check duplicate definitions.
`static java.lang.String` | `ERR_BAD_XPATH`
`static java.lang.String` | `ERR_DUPLICATE_ATTRIBUTE_DEFINITION`
`static java.lang.String` | `ERR_DUPLICATE_ATTRIBUTE_GROUP_DEFINITION`
`static java.lang.String` | `ERR_DUPLICATE_COMPLEXTYPE_DEFINITION`
`static java.lang.String` | `ERR_DUPLICATE_ELEMENT_DEFINITION`
`static java.lang.String` | `ERR_DUPLICATE_GROUP_DEFINITION`
`static java.lang.String` | `ERR_DUPLICATE_IDENTITY_CONSTRAINT_DEFINITION`
`static java.lang.String` | `ERR_DUPLICATE_SCHEMA_DEFINITION`
`static java.lang.String` | `ERR_IMPORTING_SAME_NAMESPACE`
`static java.lang.String` | `ERR_INCONSISTENT_TARGETNAMESPACE`
`static java.lang.String` | `ERR_INVALID_BASETYPE_FOR_SIMPLECONTENT`
`static java.lang.String` | `ERR_KEY_FIELD_NUMBER_MISMATCH`
`static java.lang.String` | `ERR_KEYREF_REFERRING_NON_KEY`
`static java.lang.String` | `ERR_MAXOCCURS_IS_NECESSARY`
`static java.lang.String` | `ERR_RECURSIVE_SUBSTITUTION_GROUP`
`static java.lang.String` | `ERR_REDEFINE_UNDEFINED`
`static java.lang.String` | `ERR_UNDECLARED_PREFIX`
`static java.lang.String` | `ERR_UNDEFINED_ATTRIBUTE_DECL`
`static java.lang.String` | `ERR_UNDEFINED_ATTRIBUTE_GROUP`
`static java.lang.String` | `ERR_UNDEFINED_COMPLEX_OR_SIMPLE_TYPE`
`static java.lang.String` | `ERR_UNDEFINED_COMPLEX_TYPE`
`static java.lang.String` | `ERR_UNDEFINED_ELEMENT_DECL`
`static java.lang.String` | `ERR_UNDEFINED_ELEMENTTYPE`
`static java.lang.String` | `ERR_UNDEFINED_GROUP`
`static java.lang.String` | `ERR_UNDEFINED_KEY`
`static java.lang.String` | `ERR_UNDEFINED_OR_FORWARD_REFERENCED_TYPE`
`static java.lang.String` | `ERR_UNDEFINED_SCHEMA`
`static java.lang.String` | `ERR_UNDEFINED_SIMPLE_TYPE`
`static java.lang.String` | `ERR_UNIMPLEMENTED_FEATURE`
`static java.lang.String` | `ERR_UNRELATED_TYPES_IN_SUBSTITUTIONGROUP`
`java.util.Map` | `parsedFiles` tables that store all SystemIds that we've read.
`XMLSchemaReader.StateFactory` | `sfactory`
`static java.lang.String` | `WRN_IMPLICIT_URTYPE_FOR_ELEMENT`
`static java.lang.String` | `WRN_OBSOLETED_NAMESPACE`
`static java.lang.String` | `WRN_UNSUPPORTED_ANYELEMENT`
`static java.lang.String` | `XMLSchemaNamespace` namespace URI of XML Schema declarations.
`static java.lang.String` | `XMLSchemaNamespace_old`
`static java.lang.String` | `XMLSchemaSchemaLocationAttributes`
`ReferenceExp` | `xsiSchemaLocationExp` content model that matches to optional xsi:schemaLocation or xsi:noNamespaceSchemaLocation.

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, locator, parserFactory, pool, prefixResolver, WRN_DEPRECATED_TYPENAME, WRN_MAYBE_WRONG_NAMESPACE`

Constructor Summary
`XMLSchemaReader(GrammarReaderController controller)` easy-to-use constructor.
`XMLSchemaReader(GrammarReaderController controller, javax.xml.parsers.SAXParserFactory parserFactory)`
`XMLSchemaReader(GrammarReaderController controller, javax.xml.parsers.SAXParserFactory parserFactory, ExpressionPool pool)`
`XMLSchemaReader(GrammarReaderController controller, javax.xml.parsers.SAXParserFactory parserFactory, XMLSchemaReader.StateFactory stateFactory, ExpressionPool pool)`

Method Summary
`State` | `createAttributeState(State parent, StartTagInfo tag)` creates a state object that parses "attribute","attributeGroup ref", and "anyAttribute".
`State` | `createExpressionChildState(State parent, StartTagInfo tag)` this method must be implemented by the derived class to create language-default expresion state.
`State` | `createFacetState(State parent, StartTagInfo tag)`
`State` | `createModelGroupState(State parent, StartTagInfo tag)` creates a state object that parses "all"/"group ref"/"choice" and "sequence".
`XMLSchemaSchema` | `getOrCreateSchema(java.lang.String namespaceURI)` gets a reference to XMLSchemaGrammar object whose target namespace is the specified one.
`XMLSchemaGrammar` | `getResult()`
`Grammar` | `getResultAsGrammar()` gets the parsed AGM.
`static org.iso_relax.verifier.Schema` | `getXmlSchemaForXmlSchema()`
`boolean` | `isSchemaDefined(XMLSchemaSchema schema)`
`boolean` | `isSchemaNamespace(java.lang.String ns)`
`void` | `markSchemaAsDefined(XMLSchemaSchema schema)`
`static XMLSchemaGrammar` | `parse(org.xml.sax.InputSource grammar, javax.xml.parsers.SAXParserFactory factory, GrammarReaderController controller)` loads XML Schema
`static XMLSchemaGrammar` | `parse(java.lang.String grammarURL, javax.xml.parsers.SAXParserFactory factory, GrammarReaderController controller)` loads XML Schema
`Expression` | `processOccurs(Expression item, int minOccurs, int maxOccurs)` Adds maxOccurs/minOccurs semantics to a given expression.
`Expression` | `processOccurs(StartTagInfo startTag, Expression item)` Adds maxOccurs/minOccurs semantics to a given expression.
`XSDatatype` | `resolveBuiltinDataType(java.lang.String typeLocalName)` resolves built-in datatypes (URI: http://www.w3.org/2001/XMLSchema)
`SimpleTypeExp` | `resolveBuiltinSimpleType(java.lang.String typeLocalName)` Gets a built-in datatype as SimpleTypeExp.
`Expression` | `resolveQNameRef(StartTagInfo tag, java.lang.String attName, XMLSchemaReader.RefResolver resolver)`
`XSDatatypeExp` | `resolveXSDatatype(java.lang.String typeQName)` Resolves a simple type name into the corresponding XSDatatypeExp object.
`java.lang.String[]` | `splitQName(java.lang.String qName)` Resolves a QName into a pair of (namespace URI,local name).

Methods inherited from class com.sun.msv.reader.GrammarReader
`_parse, addBackPatchJob, addBackPatchJob, combineURI, combineURL, detectUndefinedOnes, endPrefixMapping, getBackwardCompatibleType, getBaseUri, getCurrentState, getDeclaredLocationOf, isNotation, isUnparsedEntity, iterateInscopeNamespaces, onID, parse, parse, popState, pushState, reportError, reportError, reportError, reportError, reportError, reportError, reportError, reportError, reportWarning, reportWarning, reportWarning, reportWarning, resolveLocation, resolveNamespacePrefix, runBackPatchJob, setDeclaredLocationOf, setDocumentLocator, startPrefixMapping, 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`

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### xsiSchemaLocationExp

    public final ReferenceExp xsiSchemaLocationExp

  content model that matches to optional xsi:schemaLocation or xsi:noNamespaceSchemaLocation.

### XMLSchemaSchemaLocationAttributes

    public static final java.lang.String XMLSchemaSchemaLocationAttributes

See Also:
  Constant Field Values

### complexUrType

    public final ComplexTypeExp complexUrType

  expression that matches to "ur-type" when used as a complex type.

### parsedFiles

    public final java.util.Map parsedFiles

  tables that store all SystemIds that we've read. map from target namespace URI to set of system ids. This field is used to prevent double inclusion. Strictly speaking, comparision based on system id is not enough. The spec calls for "the necessity of establishing identity component by component" (section 4.2.1, last note).

### sfactory

    public final XMLSchemaReader.StateFactory sfactory

### XMLSchemaNamespace

    public static final java.lang.String XMLSchemaNamespace

  namespace URI of XML Schema declarations.

  See Also:
    Constant Field Values

### XMLSchemaNamespace_old

    public static final java.lang.String XMLSchemaNamespace_old

See Also:
  Constant Field Values

### doDuplicateDefinitionCheck

    public boolean doDuplicateDefinitionCheck

  a flag that indicates State objects should check duplicate definitions. This flag is set to false when in <redefine>. Otherwise this flag is true.

### ERR_MAXOCCURS_IS_NECESSARY

    public static final java.lang.String ERR_MAXOCCURS_IS_NECESSARY

See Also:
  Constant Field Values

### ERR_UNIMPLEMENTED_FEATURE

    public static final java.lang.String ERR_UNIMPLEMENTED_FEATURE

See Also:
  Constant Field Values

### ERR_UNDECLARED_PREFIX

    public static final java.lang.String ERR_UNDECLARED_PREFIX

See Also:
  Constant Field Values

### ERR_INCONSISTENT_TARGETNAMESPACE

    public static final java.lang.String ERR_INCONSISTENT_TARGETNAMESPACE

See Also:
  Constant Field Values

### ERR_IMPORTING_SAME_NAMESPACE

    public static final java.lang.String ERR_IMPORTING_SAME_NAMESPACE

See Also:
  Constant Field Values

### ERR_DUPLICATE_SCHEMA_DEFINITION

    public static final java.lang.String ERR_DUPLICATE_SCHEMA_DEFINITION

See Also:
  Constant Field Values

### ERR_UNDEFINED_ELEMENTTYPE

    public static final java.lang.String ERR_UNDEFINED_ELEMENTTYPE

See Also:
  Constant Field Values

### ERR_UNDEFINED_ATTRIBUTE_DECL

    public static final java.lang.String ERR_UNDEFINED_ATTRIBUTE_DECL

See Also:
  Constant Field Values

### ERR_UNDEFINED_ATTRIBUTE_GROUP

    public static final java.lang.String ERR_UNDEFINED_ATTRIBUTE_GROUP

See Also:
  Constant Field Values

### ERR_UNDEFINED_COMPLEX_TYPE

    public static final java.lang.String ERR_UNDEFINED_COMPLEX_TYPE

See Also:
  Constant Field Values

### ERR_UNDEFINED_SIMPLE_TYPE

    public static final java.lang.String ERR_UNDEFINED_SIMPLE_TYPE

See Also:
  Constant Field Values

### ERR_UNDEFINED_COMPLEX_OR_SIMPLE_TYPE

    public static final java.lang.String ERR_UNDEFINED_COMPLEX_OR_SIMPLE_TYPE

See Also:
  Constant Field Values

### ERR_UNDEFINED_ELEMENT_DECL

    public static final java.lang.String ERR_UNDEFINED_ELEMENT_DECL

See Also:
  Constant Field Values

### ERR_UNDEFINED_GROUP

    public static final java.lang.String ERR_UNDEFINED_GROUP

See Also:
  Constant Field Values

### ERR_UNDEFINED_SCHEMA

    public static final java.lang.String ERR_UNDEFINED_SCHEMA

See Also:
  Constant Field Values

### WRN_UNSUPPORTED_ANYELEMENT

    public static final java.lang.String WRN_UNSUPPORTED_ANYELEMENT

See Also:
  Constant Field Values

### WRN_OBSOLETED_NAMESPACE

    public static final java.lang.String WRN_OBSOLETED_NAMESPACE

See Also:
  Constant Field Values

### ERR_UNDEFINED_OR_FORWARD_REFERENCED_TYPE

    public static final java.lang.String ERR_UNDEFINED_OR_FORWARD_REFERENCED_TYPE

See Also:
  Constant Field Values

### ERR_REDEFINE_UNDEFINED

    public static final java.lang.String ERR_REDEFINE_UNDEFINED

See Also:
  Constant Field Values

### ERR_DUPLICATE_ATTRIBUTE_DEFINITION

    public static final java.lang.String ERR_DUPLICATE_ATTRIBUTE_DEFINITION

See Also:
  Constant Field Values

### ERR_DUPLICATE_COMPLEXTYPE_DEFINITION

    public static final java.lang.String ERR_DUPLICATE_COMPLEXTYPE_DEFINITION

See Also:
  Constant Field Values

### ERR_DUPLICATE_ATTRIBUTE_GROUP_DEFINITION

    public static final java.lang.String ERR_DUPLICATE_ATTRIBUTE_GROUP_DEFINITION

See Also:
  Constant Field Values

### ERR_DUPLICATE_GROUP_DEFINITION

    public static final java.lang.String ERR_DUPLICATE_GROUP_DEFINITION

See Also:
  Constant Field Values

### ERR_DUPLICATE_ELEMENT_DEFINITION

    public static final java.lang.String ERR_DUPLICATE_ELEMENT_DEFINITION

See Also:
  Constant Field Values

### ERR_DUPLICATE_IDENTITY_CONSTRAINT_DEFINITION

    public static final java.lang.String ERR_DUPLICATE_IDENTITY_CONSTRAINT_DEFINITION

See Also:
  Constant Field Values

### ERR_BAD_XPATH

    public static final java.lang.String ERR_BAD_XPATH

See Also:
  Constant Field Values

### ERR_UNDEFINED_KEY

    public static final java.lang.String ERR_UNDEFINED_KEY

See Also:
  Constant Field Values

### ERR_INVALID_BASETYPE_FOR_SIMPLECONTENT

    public static final java.lang.String ERR_INVALID_BASETYPE_FOR_SIMPLECONTENT

See Also:
  Constant Field Values

### ERR_KEY_FIELD_NUMBER_MISMATCH

    public static final java.lang.String ERR_KEY_FIELD_NUMBER_MISMATCH

See Also:
  Constant Field Values

### ERR_KEYREF_REFERRING_NON_KEY

    public static final java.lang.String ERR_KEYREF_REFERRING_NON_KEY

See Also:
  Constant Field Values

### ERR_UNRELATED_TYPES_IN_SUBSTITUTIONGROUP

    public static final java.lang.String ERR_UNRELATED_TYPES_IN_SUBSTITUTIONGROUP

See Also:
  Constant Field Values

### ERR_RECURSIVE_SUBSTITUTION_GROUP

    public static final java.lang.String ERR_RECURSIVE_SUBSTITUTION_GROUP

See Also:
  Constant Field Values

### WRN_IMPLICIT_URTYPE_FOR_ELEMENT

    public static final java.lang.String WRN_IMPLICIT_URTYPE_FOR_ELEMENT

See Also:
  Constant Field Values

Constructor Detail

### XMLSchemaReader

    public XMLSchemaReader(GrammarReaderController controller)

  easy-to-use constructor.

### XMLSchemaReader

    public XMLSchemaReader(GrammarReaderController controller,
                           javax.xml.parsers.SAXParserFactory parserFactory)

### XMLSchemaReader

    public XMLSchemaReader(GrammarReaderController controller,
                           javax.xml.parsers.SAXParserFactory parserFactory,
                           ExpressionPool pool)

### XMLSchemaReader

    public XMLSchemaReader(GrammarReaderController controller,
                           javax.xml.parsers.SAXParserFactory parserFactory,
                           XMLSchemaReader.StateFactory stateFactory,
                           ExpressionPool pool)

Method Detail

### parse

    public static XMLSchemaGrammar parse(java.lang.String grammarURL,
                                         javax.xml.parsers.SAXParserFactory factory,
                                         GrammarReaderController controller)

  loads XML Schema

### parse

    public static XMLSchemaGrammar parse(org.xml.sax.InputSource grammar,
                                         javax.xml.parsers.SAXParserFactory factory,
                                         GrammarReaderController controller)

  loads XML Schema

### getXmlSchemaForXmlSchema

    public static org.iso_relax.verifier.Schema getXmlSchemaForXmlSchema()

### getResult

    public final XMLSchemaGrammar getResult()

### getResultAsGrammar

    public 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 class `GrammarReader`

### getOrCreateSchema

    public XMLSchemaSchema getOrCreateSchema(java.lang.String namespaceURI)

  gets a reference to XMLSchemaGrammar object whose target namespace is the specified one. If there is no such object, this method creates a new instance and returns it.

### 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.

  Specified by:
    `createExpressionChildState` in class `GrammarReader`
  Returns:
    null if the start tag is an error.

### createModelGroupState

    public State createModelGroupState(State parent,
                                       StartTagInfo tag)

  creates a state object that parses "all"/"group ref"/"choice" and "sequence".

### createAttributeState

    public State createAttributeState(State parent,
                                      StartTagInfo tag)

  creates a state object that parses "attribute","attributeGroup ref", and "anyAttribute".

### createFacetState

    public State createFacetState(State parent,
                                  StartTagInfo tag)

### markSchemaAsDefined

    public final void markSchemaAsDefined(XMLSchemaSchema schema)

### isSchemaDefined

    public final boolean isSchemaDefined(XMLSchemaSchema schema)

### resolveBuiltinDataType

    public XSDatatype resolveBuiltinDataType(java.lang.String typeLocalName)

  resolves built-in datatypes (URI: http://www.w3.org/2001/XMLSchema)

  Returns:
    null if the type is not defined.

### resolveBuiltinSimpleType

    public SimpleTypeExp resolveBuiltinSimpleType(java.lang.String typeLocalName)

  Gets a built-in datatype as SimpleTypeExp.

  Returns:
    null if the type is not defined.

### isSchemaNamespace

    public boolean isSchemaNamespace(java.lang.String ns)

### resolveXSDatatype

    public XSDatatypeExp resolveXSDatatype(java.lang.String typeQName)

  Resolves a simple type name into the corresponding XSDatatypeExp object.

  Specified by:
    `resolveXSDatatype` in interface `XSDatatypeResolver`
  Parameters:
    `typeQName` - 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.

### resolveQNameRef

    public Expression resolveQNameRef(StartTagInfo tag,
                                      java.lang.String attName,
                                      XMLSchemaReader.RefResolver resolver)

### splitQName

    public java.lang.String[] splitQName(java.lang.String qName)

  Resolves a QName into a pair of (namespace URI,local name).

  When we are parsing a "chameleon schema", any reference to the default empty namespace("") has to be treated as a reference to the intended target namespace.

  Overrides:
    `splitQName` in class `GrammarReader`

### processOccurs

    public Expression processOccurs(StartTagInfo startTag,
                                    Expression item)

  Adds maxOccurs/minOccurs semantics to a given expression. For example, if this method receives A, minOccurs=0, and maxOccurs=3, then this method should return something like (A,(A,A?)?)?

### processOccurs

    public Expression processOccurs(Expression item,
                                    int minOccurs,
                                    int maxOccurs)

  Adds maxOccurs/minOccurs semantics to a given expression.

  Parameters:
    `maxOccurs` - -1 to represent "unbounded".

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD