Top Description Fields Constructors Methods
com.sun.msv.reader.relax.core.checker

public Class IdAbuseChecker

extends Object
implements RELAXExpressionVisitorVoid
Class Inheritance
All Implemented Interfaces
com.sun.msv.grammar.relax.RELAXExpressionVisitorVoid, com.sun.msv.grammar.ExpressionVisitorVoid
Imports
java.util.Iterator, .Set, org.relaxng.datatype.Datatype, com.sun.msv.datatype.xsd.IDREFType, .IDType, com.sun.msv.grammar.AttributeExp, .ChoiceExp, .ConcurExp, .DataExp, .ElementExp, .Expression, .InterleaveExp, .ListExp, .MixedExp, .OneOrMoreExp, .OtherExp, .ReferenceExp, .SequenceExp, .SimpleNameClass, .ValueExp, com.sun.msv.grammar.relax.AttPoolClause, .ElementRules, .HedgeRules, .RELAXExpressionVisitorVoid, .RELAXModule, .TagClause, com.sun.msv.reader.relax.core.RELAXCoreReader

makes sure that ID/IDREF are not abused. RELAX has the following constraint over the use of ID/IDREF.

First, ID and IDREF can be only used as attribute values. They cannot be used from type attribute of elementRules.

Second, if <tag> clause declares directly or indirectly (by referencing attPool) one of its attribute as ID/IDREF type, it must satisfies either (or both) of the following statement.

  1. no other tag clause shares the same tag name.
  2. no other attribute of non-ID/IDREF types shares the same attribute name.
Author
Kohsuke KAWAGUCHI

Field Summary

Modifier and TypeField and Description
private String
private final Set<AttributeExp>
idAttributes

set of AttributeExps: that have ID/IDREF values

private final RELAXModule
private final Set<String>
nonIdAttrNames

set of Strings: names of non-ID/IDREF attributes

private final Set<String>
overloadedNames

set of Strings: tag names that are used more than once in this module

private final RELAXCoreReader
private final Set<String>
tagNames

set of Strings: tag names that are used in this module

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public static void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
public void
private void
run()

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

currentTagNameback to summary
private String currentTagName
idAttributesback to summary
private final Set<AttributeExp> idAttributes

set of AttributeExps: that have ID/IDREF values

moduleback to summary
private final RELAXModule module
nonIdAttrNamesback to summary
private final Set<String> nonIdAttrNames

set of Strings: names of non-ID/IDREF attributes

overloadedNamesback to summary
private final Set<String> overloadedNames

set of Strings: tag names that are used more than once in this module

readerback to summary
private final RELAXCoreReader reader
tagNamesback to summary
private final Set<String> tagNames

set of Strings: tag names that are used in this module

Constructor Detail

IdAbuseCheckerback to summary
private IdAbuseChecker(RELAXCoreReader r, RELAXModule m)

Method Detail

checkback to summary
public static void check(RELAXCoreReader reader, RELAXModule module)
onAnyStringback to summary
public void onAnyString()

Implements com.sun.msv.grammar.ExpressionVisitorVoid.onAnyString.

onAttPoolback to summary
public void onAttPool(AttPoolClause exp)

Implements com.sun.msv.grammar.relax.RELAXExpressionVisitorVoid.onAttPool.

onAttributeback to summary
public void onAttribute(AttributeExp exp)

Implements com.sun.msv.grammar.ExpressionVisitorVoid.onAttribute.

onChoiceback to summary
public void onChoice(ChoiceExp exp)

Implements com.sun.msv.grammar.ExpressionVisitorVoid.onChoice.

onConcurback to summary
public void onConcur(ConcurExp exp)

Implements com.sun.msv.grammar.ExpressionVisitorVoid.onConcur.

onDataback to summary
public void onData(DataExp exp)

Implements com.sun.msv.grammar.ExpressionVisitorVoid.onData.

onElementback to summary
public void onElement(ElementExp exp)

Implements com.sun.msv.grammar.ExpressionVisitorVoid.onElement.

onElementRulesback to summary
public void onElementRules(ElementRules exp)

Implements com.sun.msv.grammar.relax.RELAXExpressionVisitorVoid.onElementRules.

onEpsilonback to summary
public void onEpsilon()

Implements com.sun.msv.grammar.ExpressionVisitorVoid.onEpsilon.

onHedgeRulesback to summary
public void onHedgeRules(HedgeRules exp)

Implements com.sun.msv.grammar.relax.RELAXExpressionVisitorVoid.onHedgeRules.

onInterleaveback to summary
public void onInterleave(InterleaveExp exp)

Implements com.sun.msv.grammar.ExpressionVisitorVoid.onInterleave.

onListback to summary
public void onList(ListExp exp)

Implements com.sun.msv.grammar.ExpressionVisitorVoid.onList.

onMixedback to summary
public void onMixed(MixedExp exp)

Implements com.sun.msv.grammar.ExpressionVisitorVoid.onMixed.

onNullSetback to summary
public void onNullSet()

Implements com.sun.msv.grammar.ExpressionVisitorVoid.onNullSet.

onOneOrMoreback to summary
public void onOneOrMore(OneOrMoreExp exp)

Implements com.sun.msv.grammar.ExpressionVisitorVoid.onOneOrMore.

onOtherback to summary
public void onOther(OtherExp exp)

Implements com.sun.msv.grammar.ExpressionVisitorVoid.onOther.

onRefback to summary
public void onRef(ReferenceExp exp)

Implements com.sun.msv.grammar.ExpressionVisitorVoid.onRef.

onSequenceback to summary
public void onSequence(SequenceExp exp)

Implements com.sun.msv.grammar.ExpressionVisitorVoid.onSequence.

onTagback to summary
public void onTag(TagClause exp)

Implements com.sun.msv.grammar.relax.RELAXExpressionVisitorVoid.onTag.

onValueback to summary
public void onValue(ValueExp exp)

Implements com.sun.msv.grammar.ExpressionVisitorVoid.onValue.

runback to summary
private void run()