Patent ID: 8341515

Claim:
A method for validating unique particle attribution (UPA) constraints in an extensible markup language (XML) schema, comprising: receiving an input argument including one particle of the XML schema; verifying particle occurrence information of the particle through validation that optional particles of an optional latter portion of a repeating term do not collide with particles of a beginning portion of the repeating term; verifying particle sequence model group information of the particle through validation that optional particles of a latter portion of a first subsequence of the sequence model group information do not collide with particles of a beginning portion of a second subsequence of the sequence model group information; verifying particle choice model group information of the particle through validation that particles of a beginning portion of any two different branches of the XML schema do not collide; verifying particle all model group information of the particle through validation that particles of beginning portions of all model group members do not collide and that particles of a beginning portion of a first all model group member do not collide with optional particles of a latter portion of a second all model group member; and recursively calling additional instances of the method for validating UPA such that all particles contained in the input argument are subject to verification of UPA constraints, wherein the recursively calling additional instances includes calling, for all particles recursively defined in the particle of the input argument, an instance of the method for validating UPA such that each instance of the method returns a Boolean value indicating whether each particle of all particles recursively defined in the particle of the input argument are valid in terms of unique particle attribution constraints, wherein the Boolean value of each instance of the method is based upon at least seven properties of respective particles, the at least seven properties including, a number of particles contained in a particle, wherein the number of particles contained in a particle include any particle recursively defined within the particle, opacity of a particle, wherein the opacity of a particle is a Boolean value representative of whether the particle can match an empty string, a first set of a particle, wherein the first set of a particle represents all terminals in a particle that match a first symbol in a string matching the particle, optional trailing particles of a particle, wherein the optional trailing particles of a particle represent suffixes of the particle that do not need to be matched, optional leading terminals of a particle, wherein the optional leading terminals of a particle represent all terminals that lead strings matching members of the optional leading terminals for the particle, overlapping of particles, and collision of particles.