public class XMLSchemaReader extends GrammarReader implements XSDatatypeResolver
Modifier and Type | Class and Description |
---|---|
static interface |
XMLSchemaReader.RefResolver |
static class |
XMLSchemaReader.StateFactory
creates various State object, which in turn parses grammar.
|
private static interface |
XMLSchemaReader.Type |
GrammarReader.BackPatch, GrammarReader.BackwardReferenceMap, GrammarReader.ChainPrefixResolver, GrammarReader.PrefixResolver
Modifier and Type | Field and Description |
---|---|
private java.util.Map<java.lang.String,java.lang.String> |
additionalNamespaceMap |
protected java.lang.String |
attributeFormDefault
value of the "attributeFormDefault" attribute.
|
protected java.lang.String |
blockDefault
value of the "blockDefault" attribute.
|
protected java.lang.String |
chameleonTargetNamespace
The intended target namespace of the chameleon schema.
|
ComplexTypeExp |
complexUrType
expression that matches to "ur-type" when used as a complex type.
|
protected XMLSchemaSchema |
currentSchema |
private java.util.Set<XMLSchemaSchema> |
definedSchemata
set of XMLSchemaGrammar that is already defined.
|
boolean |
doDuplicateDefinitionCheck
a flag that indicates State objects should check duplicate definitions.
|
protected java.lang.String |
elementFormDefault
value of the "elementFormDefault" attribute.
|
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 |
protected java.lang.String |
finalDefault
value of the "finalDefault" attribute.
|
protected XMLSchemaGrammar |
grammar
grammar object which is being under construction.
|
private boolean |
issuedOldNamespaceWarning |
java.util.Map<java.lang.String,java.util.Set<java.lang.String>> |
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 |
protected static org.iso_relax.verifier.Schema |
xmlSchema4XmlSchema
Schema for schema of W3C XML Schema.
|
static java.lang.String |
XMLSchemaNamespace
namespace URI of XML Schema declarations.
|
static java.lang.String |
XMLSchemaNamespace_old |
static java.lang.String |
XMLSchemaSchemaLocationAttributes |
protected XMLSchemaSchema |
xsdSchema
XMLSchemaSchema object that has XMLSchemaNamespace as its target namespace.
|
ReferenceExp |
xsiSchemaLocationExp
content model that matches to
optional xsi:schemaLocation or xsi:noNamespaceSchemaLocation.
|
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 and Description |
---|
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) |
Modifier and Type | Method and Description |
---|---|
private Expression |
_processOccurs(Expression item,
int minOccurs,
int maxOccurs) |
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".
|
java.util.Map<java.lang.String,java.lang.String> |
getAdditionalNamespaceMap() |
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.
|
private XMLSchemaReader.Type |
getType(XMLSchemaTypeExp exp) |
private XMLSchemaReader.Type |
getType(XSDatatype dt) |
static org.iso_relax.verifier.Schema |
getXmlSchemaForXmlSchema() |
protected Expression |
interceptExpression(State state,
Expression exp)
intercepts an expression made by ExpressionState
before it is passed to the parent state.
|
protected boolean |
isGrammarElement(StartTagInfo tag)
checks if given element is that of the grammar elements.
|
boolean |
isSchemaDefined(XMLSchemaSchema schema) |
boolean |
isSchemaNamespace(java.lang.String ns) |
private boolean |
isSubstitutable(ElementDeclExp c,
ElementDeclExp d)
implementation of "SCC: Substitution Group OK (Transitive)".
|
protected java.lang.String |
localizeMessage(java.lang.String propertyName,
java.lang.Object[] args)
formats localized message with arguments
|
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(javax.xml.transform.Source schema,
GrammarReaderController controller)
Convenience method to create a reader and read a single scheme.
|
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.
|
protected java.lang.String |
resolveNamespaceOfAttributeDecl(java.lang.String formValue) |
private java.lang.String |
resolveNamespaceOfDeclaration(java.lang.String formValue,
java.lang.String defaultValue) |
protected java.lang.String |
resolveNamespaceOfElementDecl(java.lang.String formValue) |
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.
|
void |
setAdditionalNamespaceMap(java.util.Map<java.lang.String,java.lang.String> additionalNamespaceMap) |
java.lang.String[] |
splitQName(java.lang.String qName)
Resolves a QName into a pair of (namespace URI,local name).
|
protected void |
switchSource(State sourceState,
State newRootState) |
protected void |
wrapUp()
performs final wrap-up of parsing.
|
_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, startPrefixMapping, switchSource, switchSource, switchSource
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 java.util.Map<java.lang.String,java.lang.String> additionalNamespaceMap
protected static org.iso_relax.verifier.Schema xmlSchema4XmlSchema
public final ReferenceExp xsiSchemaLocationExp
public static final java.lang.String XMLSchemaSchemaLocationAttributes
public final ComplexTypeExp complexUrType
protected java.lang.String attributeFormDefault
protected java.lang.String elementFormDefault
protected java.lang.String finalDefault
protected java.lang.String blockDefault
protected final XMLSchemaGrammar grammar
protected XMLSchemaSchema currentSchema
protected final XMLSchemaSchema xsdSchema
public final java.util.Map<java.lang.String,java.util.Set<java.lang.String>> parsedFiles
public final XMLSchemaReader.StateFactory sfactory
public static final java.lang.String XMLSchemaNamespace
public static final java.lang.String XMLSchemaNamespace_old
private boolean issuedOldNamespaceWarning
private final java.util.Set<XMLSchemaSchema> definedSchemata
protected java.lang.String chameleonTargetNamespace
When parsing a chameleon schema (inclusion of a schema without the targetNamespace attribute), this field is set to the target namespace of the callee, so that any reference occured in the chameleon schema is treated correctly.
This field must be set to null in other cases. In that case, QName resolution is handled just normally.
This field is maintained by SchemaIncludedState
.
public boolean doDuplicateDefinitionCheck
public static final java.lang.String ERR_MAXOCCURS_IS_NECESSARY
public static final java.lang.String ERR_UNIMPLEMENTED_FEATURE
public static final java.lang.String ERR_UNDECLARED_PREFIX
public static final java.lang.String ERR_INCONSISTENT_TARGETNAMESPACE
public static final java.lang.String ERR_IMPORTING_SAME_NAMESPACE
public static final java.lang.String ERR_DUPLICATE_SCHEMA_DEFINITION
public static final java.lang.String ERR_UNDEFINED_ELEMENTTYPE
public static final java.lang.String ERR_UNDEFINED_ATTRIBUTE_DECL
public static final java.lang.String ERR_UNDEFINED_ATTRIBUTE_GROUP
public static final java.lang.String ERR_UNDEFINED_COMPLEX_TYPE
public static final java.lang.String ERR_UNDEFINED_SIMPLE_TYPE
public static final java.lang.String ERR_UNDEFINED_COMPLEX_OR_SIMPLE_TYPE
public static final java.lang.String ERR_UNDEFINED_ELEMENT_DECL
public static final java.lang.String ERR_UNDEFINED_GROUP
public static final java.lang.String ERR_UNDEFINED_SCHEMA
public static final java.lang.String WRN_UNSUPPORTED_ANYELEMENT
public static final java.lang.String WRN_OBSOLETED_NAMESPACE
public static final java.lang.String ERR_UNDEFINED_OR_FORWARD_REFERENCED_TYPE
public static final java.lang.String ERR_REDEFINE_UNDEFINED
public static final java.lang.String ERR_DUPLICATE_ATTRIBUTE_DEFINITION
public static final java.lang.String ERR_DUPLICATE_COMPLEXTYPE_DEFINITION
public static final java.lang.String ERR_DUPLICATE_ATTRIBUTE_GROUP_DEFINITION
public static final java.lang.String ERR_DUPLICATE_GROUP_DEFINITION
public static final java.lang.String ERR_DUPLICATE_ELEMENT_DEFINITION
public static final java.lang.String ERR_DUPLICATE_IDENTITY_CONSTRAINT_DEFINITION
public static final java.lang.String ERR_BAD_XPATH
public static final java.lang.String ERR_UNDEFINED_KEY
public static final java.lang.String ERR_INVALID_BASETYPE_FOR_SIMPLECONTENT
public static final java.lang.String ERR_KEY_FIELD_NUMBER_MISMATCH
public static final java.lang.String ERR_KEYREF_REFERRING_NON_KEY
public static final java.lang.String ERR_UNRELATED_TYPES_IN_SUBSTITUTIONGROUP
public static final java.lang.String ERR_RECURSIVE_SUBSTITUTION_GROUP
public static final java.lang.String WRN_IMPLICIT_URTYPE_FOR_ELEMENT
public XMLSchemaReader(GrammarReaderController controller)
public XMLSchemaReader(GrammarReaderController controller, javax.xml.parsers.SAXParserFactory parserFactory)
public XMLSchemaReader(GrammarReaderController controller, javax.xml.parsers.SAXParserFactory parserFactory, ExpressionPool pool)
public XMLSchemaReader(GrammarReaderController controller, javax.xml.parsers.SAXParserFactory parserFactory, XMLSchemaReader.StateFactory stateFactory, ExpressionPool pool)
public static XMLSchemaGrammar parse(java.lang.String grammarURL, javax.xml.parsers.SAXParserFactory factory, GrammarReaderController controller)
public static XMLSchemaGrammar parse(org.xml.sax.InputSource grammar, javax.xml.parsers.SAXParserFactory factory, GrammarReaderController controller)
public static XMLSchemaGrammar parse(javax.xml.transform.Source schema, GrammarReaderController controller) throws javax.xml.transform.TransformerConfigurationException, javax.xml.transform.TransformerException
schema
- controller
- javax.xml.transform.TransformerConfigurationException
javax.xml.transform.TransformerException
public static org.iso_relax.verifier.Schema getXmlSchemaForXmlSchema()
public final XMLSchemaGrammar getResult()
public Grammar getResultAsGrammar()
GrammarReader
getResultAsGrammar
in class GrammarReader
public XMLSchemaSchema getOrCreateSchema(java.lang.String namespaceURI)
public State createExpressionChildState(State parent, StartTagInfo tag)
GrammarReader
createExpressionChildState
in class GrammarReader
public State createModelGroupState(State parent, StartTagInfo tag)
public State createAttributeState(State parent, StartTagInfo tag)
public State createFacetState(State parent, StartTagInfo tag)
protected boolean isGrammarElement(StartTagInfo tag)
GrammarReader
isGrammarElement
in class GrammarReader
public final void markSchemaAsDefined(XMLSchemaSchema schema)
public final boolean isSchemaDefined(XMLSchemaSchema schema)
protected java.lang.String resolveNamespaceOfAttributeDecl(java.lang.String formValue)
protected java.lang.String resolveNamespaceOfElementDecl(java.lang.String formValue)
private java.lang.String resolveNamespaceOfDeclaration(java.lang.String formValue, java.lang.String defaultValue)
public XSDatatype resolveBuiltinDataType(java.lang.String typeLocalName)
public SimpleTypeExp resolveBuiltinSimpleType(java.lang.String typeLocalName)
public boolean isSchemaNamespace(java.lang.String ns)
public XSDatatypeExp resolveXSDatatype(java.lang.String typeQName)
resolveXSDatatype
in interface XSDatatypeResolver
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.public Expression resolveQNameRef(StartTagInfo tag, java.lang.String attName, XMLSchemaReader.RefResolver resolver)
public java.lang.String[] splitQName(java.lang.String qName)
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.
splitQName
in class GrammarReader
protected Expression interceptExpression(State state, Expression exp)
GrammarReader
interceptExpression
in class GrammarReader
public Expression processOccurs(StartTagInfo startTag, Expression item)
public Expression processOccurs(Expression item, int minOccurs, int maxOccurs)
maxOccurs
- -1 to represent "unbounded".private Expression _processOccurs(Expression item, int minOccurs, int maxOccurs)
protected void switchSource(State sourceState, State newRootState) throws AbortException
AbortException
protected void wrapUp()
private XMLSchemaReader.Type getType(XMLSchemaTypeExp exp)
private XMLSchemaReader.Type getType(XSDatatype dt)
private boolean isSubstitutable(ElementDeclExp c, ElementDeclExp d)
c
- the substitution headd
- a member of the substitution group of c.protected java.lang.String localizeMessage(java.lang.String propertyName, java.lang.Object[] args)
GrammarReader
localizeMessage
in class GrammarReader
public java.util.Map<java.lang.String,java.lang.String> getAdditionalNamespaceMap()
public void setAdditionalNamespaceMap(java.util.Map<java.lang.String,java.lang.String> additionalNamespaceMap)