org.apache.xerces.impl.xs.models

Class XSDFACM

public class XSDFACM extends Object implements XSCMValidator

DFAContentModel is the implementation of XSCMValidator that does all of the non-trivial element content validation. This class does the conversion from the regular expression to the DFA that it then uses in its validation algorithm.

INTERNAL:

Usage of this class is not supported. It may be altered or removed at any time.

Version: $Id: XSDFACM.java,v 1.13 2004/10/06 15:14:52 mrglavas Exp $

Author: Neil Graham, IBM

Constructor Summary
XSDFACM(CMNode syntaxTree, int leafCount)
Constructs a DFA content model.
Method Summary
booleancheckUniqueParticleAttribution(SubstitutionGroupHandler subGroupHandler)
check whether this content violates UPA constraint.
booleanendContentModel(int[] state)
booleanisFinalState(int state)
check whether the given state is one of the final states
ObjectoneTransition(QName curElem, int[] state, SubstitutionGroupHandler subGroupHandler)
one transition only
int[]startContentModel()
VectorwhatCanGoHere(int[] state)
Check which elements are valid to appear at this point.

Constructor Detail

XSDFACM

public XSDFACM(CMNode syntaxTree, int leafCount)
Constructs a DFA content model.

Parameters: syntaxTree The syntax tree of the content model. leafCount The number of leaves.

Throws: RuntimeException Thrown if DFA can't be built.

Method Detail

checkUniqueParticleAttribution

public boolean checkUniqueParticleAttribution(SubstitutionGroupHandler subGroupHandler)
check whether this content violates UPA constraint.

Parameters: subGroupHandler the substitution group handler

Returns: true if this content model contains other or list wildcard

endContentModel

public boolean endContentModel(int[] state)

isFinalState

public boolean isFinalState(int state)
check whether the given state is one of the final states

Parameters: state the state to check

Returns: whether it's a final state

oneTransition

public Object oneTransition(QName curElem, int[] state, SubstitutionGroupHandler subGroupHandler)
one transition only

Parameters: curElem The current element's QName state stack to store the previous state subGroupHandler the substitution group handler

Returns: null if transition is invalid; otherwise the Object corresponding to the XSElementDecl or XSWildcardDecl identified. Also, the state array will be modified to include the new state; this so that the validator can store it away.

Throws: RuntimeException thrown on error

startContentModel

public int[] startContentModel()

whatCanGoHere

public Vector whatCanGoHere(int[] state)
Check which elements are valid to appear at this point. This method also works if the state is in error, in which case it returns what should have been seen.

Parameters: state the current state

Returns: a Vector whose entries are instances of either XSWildcardDecl or XSElementDecl.

Copyright B) 1999-2005 Apache XML Project. All Rights Reserved.