org.apache.xerces.impl.xs.models

Class XSDFACM

Implemented Interfaces:
XSCMValidator

public class XSDFACM
extends java.lang.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.

Version:
$Id: XSDFACM.java,v 1.10 2003/04/30 20:24:49 sandygao Exp $

Author:
Neil Graham, IBM

Fields inherited from interface org.apache.xerces.impl.xs.models.XSCMValidator

FIRST_ERROR, SUBSEQUENT_ERROR

Constructor Summary

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

Method Summary

boolean
checkUniqueParticleAttribution(SubstitutionGroupHandler subGroupHandler)
check whether this content violates UPA constraint.
boolean
endContentModel(int[] state)
The method indicates the end of list of children
boolean
isFinalState(int state)
check whether the given state is one of the final states
Object
oneTransition(org.apache.xerces.xni.QName curElem, int[] state, SubstitutionGroupHandler subGroupHandler)
one transition only
int[]
startContentModel()
This methods to be called on entering a first element whose type has this content model.
Vector
whatCanGoHere(int[] state)
Check which elements are valid to appear at this point.

Constructor Details

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.

Method Details

checkUniqueParticleAttribution

public boolean checkUniqueParticleAttribution(SubstitutionGroupHandler subGroupHandler)
            throws XMLSchemaException
check whether this content violates UPA constraint.
Specified by:
checkUniqueParticleAttribution in interface XSCMValidator

Parameters:

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


endContentModel

public boolean endContentModel(int[] state)
The method indicates the end of list of children
Specified by:
endContentModel in interface XSCMValidator

Parameters:
state - Current state of the content model

Returns:
true if the last state was a valid final 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(org.apache.xerces.xni.QName curElem,
                            int[] state,
                            SubstitutionGroupHandler subGroupHandler)
one transition only
Specified by:
oneTransition in interface XSCMValidator

Parameters:
curElem - The current element's QName

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.


startContentModel

public int[] startContentModel()
This methods to be called on entering a first element whose type has this content model. It will return the initial state of the content model
Specified by:
startContentModel in interface XSCMValidator

Returns:
Start state of the content model


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.
Specified by:
whatCanGoHere in interface XSCMValidator

Parameters:
state - the current state

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


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