Package org.apache.xerces.impl.xs.models
Class XSDFACM
- java.lang.Object
-
- org.apache.xerces.impl.xs.models.XSDFACM
-
- All 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.INTERNAL:
- Usage of this class is not supported. It may be altered or removed at any time.
- Version:
- $Id: XSDFACM.java 806363 2009-08-20 21:18:48Z mrglavas $
- Author:
- Neil Graham, IBM
-
-
Field Summary
-
Fields inherited from interface org.apache.xerces.impl.xs.models.XSCMValidator
FIRST_ERROR, SUBSEQUENT_ERROR
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancheckUniqueParticleAttribution(SubstitutionGroupHandler subGroupHandler)check whether this content violates UPA constraint.booleanendContentModel(int[] state)The method indicates the end of list of childrenjava.lang.StringgetTermName(int termId)Returns the name of the term (element or wildcard) for the given identifier.booleanisCompactedForUPA()Checks if this content model has had its min/maxOccurs values reduced for purposes of speeding up UPA.booleanisFinalState(int state)check whether the given state is one of the final statesint[]occurenceInfo(int[] state)Returns an array containing information about the current repeating term ornullif no occurrence counting was being performed at the current state.java.lang.ObjectoneTransition(org.apache.xerces.xni.QName curElem, int[] state, SubstitutionGroupHandler subGroupHandler)one transition onlyint[]startContentModel()This methods to be called on entering a first element whose type has this content model.java.util.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:
java.lang.RuntimeException- Thrown if DFA can't be built.
-
-
Method Detail
-
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 java.lang.Object oneTransition(org.apache.xerces.xni.QName curElem, int[] state, SubstitutionGroupHandler subGroupHandler)one transition only- Specified by:
oneTransitionin interfaceXSCMValidator- Parameters:
curElem- The current element's QNamestate- stack to store the previous statesubGroupHandler- 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:
java.lang.RuntimeException- thrown on error
-
startContentModel
public int[] startContentModel()
Description copied from interface:XSCMValidatorThis 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:
startContentModelin interfaceXSCMValidator- Returns:
- Start state of the content model
-
endContentModel
public boolean endContentModel(int[] state)
Description copied from interface:XSCMValidatorThe method indicates the end of list of children- Specified by:
endContentModelin interfaceXSCMValidator- Parameters:
state- Current state of the content model- Returns:
- true if the last state was a valid final state
-
checkUniqueParticleAttribution
public boolean checkUniqueParticleAttribution(SubstitutionGroupHandler subGroupHandler) throws XMLSchemaException
check whether this content violates UPA constraint.- Specified by:
checkUniqueParticleAttributionin interfaceXSCMValidator- Parameters:
subGroupHandler- the substitution group handler- Returns:
- true if this content model contains other or list wildcard
- Throws:
XMLSchemaException
-
whatCanGoHere
public java.util.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:
whatCanGoHerein interfaceXSCMValidator- Parameters:
state- the current state- Returns:
- a Vector whose entries are instances of either XSWildcardDecl or XSElementDecl.
-
occurenceInfo
public int[] occurenceInfo(int[] state)
Description copied from interface:XSCMValidatorReturns an array containing information about the current repeating term or
nullif no occurrence counting was being performed at the current state.If an array is returned it will have a length == 4 and will contain:
- a[0] :: min occurs
- a[1] :: max occurs
- a[2] :: current value of the counter
- a[3] :: identifier for the repeating term
- Specified by:
occurenceInfoin interfaceXSCMValidator- Parameters:
state- the current state- Returns:
- an array containing information about the current repeating term
-
getTermName
public java.lang.String getTermName(int termId)
Description copied from interface:XSCMValidatorReturns the name of the term (element or wildcard) for the given identifier.- Specified by:
getTermNamein interfaceXSCMValidator- Parameters:
termId- identifier for the element declaration or wildcard- Returns:
- the name of the element declaration or wildcard
-
isCompactedForUPA
public boolean isCompactedForUPA()
Description copied from interface:XSCMValidatorChecks if this content model has had its min/maxOccurs values reduced for purposes of speeding up UPA. If so, this content model should not be used for any purpose other than checking unique particle attribution- Specified by:
isCompactedForUPAin interfaceXSCMValidator- Returns:
- a boolean that says whether this content has been compacted for UPA
-
-