What is a State?
States read source data line-by-line and can be indefinitely nested. Each Line is checked by the State Engine.
For the Current State, each Nested State is checked to see if it’s “Line” value can be matched. If a matching “Line” is found, that State becomes the Current State. If no Nested State matches, each EndState is checked in the same way. If one matches, then the Current State is exited. The default destination is the State in which the Current State is nested. A specific Ancestor State can be referenced, in which case it becomes the Current State. If the referenced EndState definition is not found, the Root State will then become the Current State.
Upon entering a State, if the Line it is based upon has Parameters, the defined Parameters are extracted from the source into the x result.
If a State has no Nested States or EndStates, the State exits after extracting data to the parent State. This is the same action as if a single EndState were used with no Line to match or destination defined.
When all the Lines of the source are exhausted, this preprocessor returns XML formatted data to the Form Template for processing.