public class RestrictionChecker
extends java.lang.Object
ExpressionWalker is used to walk the content model thoroughly. Depending on the current context, different walkers are used so that we can detect contextual restrictions properly.
For each ElementExp and AttributeExp, its name class is checked to detect the constraint set out in the section 7.1.6. Also, a set is used to avoid redundant checks.
Modifier and Type | Class and Description |
---|---|
private class |
RestrictionChecker.DefaultChecker
The base class of all other context-specific checker.
|
private class |
RestrictionChecker.DuplicateAttributesChecker |
private class |
RestrictionChecker.DuplicateElementsChecker |
protected class |
RestrictionChecker.DuplicateNameChecker |
private class |
RestrictionChecker.ListChecker |
(package private) class |
RestrictionChecker.NameClassWalker |
Modifier and Type | Field and Description |
---|---|
private RestrictionChecker.DuplicateAttributesChecker |
attDupChecker
Object that checks duplicate attributes in a content model.
|
private RestrictionChecker.DuplicateElementsChecker |
elemDupChecker
Object that checks conflicting elements in interleave.
|
private static java.lang.String |
ERR_ANYNAME_IN_ANYNAME |
private static java.lang.String |
ERR_ANYNAME_IN_NSNAME |
private static java.lang.String |
ERR_ATTRIBUTE_IN_ATTRIBUTE |
private static java.lang.String |
ERR_ATTRIBUTE_IN_EXCEPT |
private static java.lang.String |
ERR_ATTRIBUTE_IN_LIST |
private static java.lang.String |
ERR_ATTRIBUTE_IN_START |
private static java.lang.String |
ERR_DATA_IN_INTERLEAVE_IN_LIST |
private static java.lang.String |
ERR_DATA_IN_START |
private static java.lang.String |
ERR_DUPLICATE_ATTRIBUTES |
private static java.lang.String |
ERR_DUPLICATE_ELEMENTS |
private static java.lang.String |
ERR_ELEMENT_IN_ATTRIBUTE |
private static java.lang.String |
ERR_ELEMENT_IN_EXCEPT |
private static java.lang.String |
ERR_ELEMENT_IN_LIST |
private static java.lang.String |
ERR_EMPTY_IN_EXCEPT |
private static java.lang.String |
ERR_EMPTY_IN_START |
private static java.lang.String |
ERR_INTERLEAVE_IN_EXCEPT |
private static java.lang.String |
ERR_INTERLEAVE_IN_START |
private static java.lang.String |
ERR_LIST_IN_EXCEPT |
private static java.lang.String |
ERR_LIST_IN_LIST |
private static java.lang.String |
ERR_LIST_IN_START |
private static java.lang.String |
ERR_NSNAME_IN_NSNAME |
private static java.lang.String |
ERR_ONEORMORE_IN_EXCEPT |
private static java.lang.String |
ERR_ONEORMORE_IN_START |
private static java.lang.String |
ERR_REPEATED_GROUPED_ATTRIBUTE |
private static java.lang.String |
ERR_SEQUENCE_IN_EXCEPT |
private static java.lang.String |
ERR_SEQUENCE_IN_START |
private static java.lang.String |
ERR_TEXT_IN_EXCEPT |
private static java.lang.String |
ERR_TEXT_IN_LIST |
private static java.lang.String |
ERR_TEXT_IN_START |
private static java.lang.String |
ERR_VALUE_IN_INTERLEAVE_IN_LIST |
private Expression |
errorContext
The source location of this expression should be also reported in case of error.
|
private NameClassVisitor |
inAnyNameClass
Used to visit children of AnyNameClass
|
private ExpressionWalker |
inAttribute
Used to visit children of attributes.
|
private ExpressionWalker |
inElement
Used to visit children of elements.
|
private ExpressionWalker |
inExcept
Used to visit children of the 'except' clause of data.
|
private ExpressionWalker |
inGroupInOneOrMoreInElement
Used to visit children of group/interleave in oneOrMore in elements.
|
private ExpressionWalker |
inInterleaveInList
Used to visit children of interleaves in lists.
|
private ExpressionWalker |
inList
Used to visit children of lists.
|
private RestrictionChecker.NameClassWalker |
inNameClass
Used to visit name classes.
|
private NameClassVisitor |
inNsNameClass
Used to visit children of NamespaceNameClass
|
private ExpressionWalker |
inOneOrMoreInElement
Used to visit children of oneOrMore in elements.
|
private ExpressionWalker |
inStart
Used to visit the start pattern.
|
private RELAXNGReader |
reader
Reader object to which errors are reported.
|
private java.util.Set |
visitedExps
Visited ElementExp/AttributeExps.
|
Constructor and Description |
---|
RestrictionChecker(RELAXNGReader _reader) |
Modifier and Type | Method and Description |
---|---|
void |
check()
Traverses the grammar and performs the contextual check.
|
void |
checkNameClass(NameClass nc)
Checks the contextual restriction on a name class.
|
private void |
reportError(Expression exp,
java.lang.String errorMsg) |
private void |
reportError(Expression exp,
java.lang.String errorMsg,
java.lang.Object[] args) |
private final RELAXNGReader reader
private Expression errorContext
private final java.util.Set visitedExps
private RestrictionChecker.DuplicateAttributesChecker attDupChecker
private RestrictionChecker.DuplicateElementsChecker elemDupChecker
private final ExpressionWalker inExcept
private final ExpressionWalker inGroupInOneOrMoreInElement
private final ExpressionWalker inOneOrMoreInElement
private final ExpressionWalker inElement
private final ExpressionWalker inAttribute
private final ExpressionWalker inInterleaveInList
private final ExpressionWalker inList
private final ExpressionWalker inStart
private final RestrictionChecker.NameClassWalker inNameClass
private final NameClassVisitor inAnyNameClass
private final NameClassVisitor inNsNameClass
private static final java.lang.String ERR_ATTRIBUTE_IN_EXCEPT
private static final java.lang.String ERR_ELEMENT_IN_EXCEPT
private static final java.lang.String ERR_LIST_IN_EXCEPT
private static final java.lang.String ERR_TEXT_IN_EXCEPT
private static final java.lang.String ERR_EMPTY_IN_EXCEPT
private static final java.lang.String ERR_SEQUENCE_IN_EXCEPT
private static final java.lang.String ERR_INTERLEAVE_IN_EXCEPT
private static final java.lang.String ERR_ONEORMORE_IN_EXCEPT
private static final java.lang.String ERR_REPEATED_GROUPED_ATTRIBUTE
private static final java.lang.String ERR_ELEMENT_IN_ATTRIBUTE
private static final java.lang.String ERR_ATTRIBUTE_IN_ATTRIBUTE
private static final java.lang.String ERR_ATTRIBUTE_IN_LIST
private static final java.lang.String ERR_ELEMENT_IN_LIST
private static final java.lang.String ERR_LIST_IN_LIST
private static final java.lang.String ERR_TEXT_IN_LIST
private static final java.lang.String ERR_ATTRIBUTE_IN_START
private static final java.lang.String ERR_LIST_IN_START
private static final java.lang.String ERR_TEXT_IN_START
private static final java.lang.String ERR_EMPTY_IN_START
private static final java.lang.String ERR_SEQUENCE_IN_START
private static final java.lang.String ERR_INTERLEAVE_IN_START
private static final java.lang.String ERR_DATA_IN_START
private static final java.lang.String ERR_ONEORMORE_IN_START
private static final java.lang.String ERR_DATA_IN_INTERLEAVE_IN_LIST
private static final java.lang.String ERR_VALUE_IN_INTERLEAVE_IN_LIST
private static final java.lang.String ERR_ANYNAME_IN_ANYNAME
private static final java.lang.String ERR_ANYNAME_IN_NSNAME
private static final java.lang.String ERR_NSNAME_IN_NSNAME
private static final java.lang.String ERR_DUPLICATE_ATTRIBUTES
private static final java.lang.String ERR_DUPLICATE_ELEMENTS
public RestrictionChecker(RELAXNGReader _reader)
public void check()
private void reportError(Expression exp, java.lang.String errorMsg)
private void reportError(Expression exp, java.lang.String errorMsg, java.lang.Object[] args)
public void checkNameClass(NameClass nc)
If an error is found, it is reported through GrammarReader.