このXmlSchemaフラグメントがあるとします。
<xs:element name= "A">
<xs:complexType>
<xs:sequence>
<xs:element ref="A1" maxOccurs="1"/>
<xs:element ref="A2" maxOccurs="unbounded"/>
<xs:element ref="A3" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
XmlSchemaValidator.GetExpectedParticles()メソッドを使用して、Aの子に循環します。complexTypeはシーケンスであるため、兄弟を検証するには、前の兄弟を検証する必要があります。コンテキストを終了すると、GetExpectedPartciles()が次の兄弟を返します。
したがって、リストのA1アイテムにいるときは、次のコード行を呼び出します。
validator.ValidateElement("A1", null, null); --> validate and enter in the Context of A1
validator.ValidateEndOfAttributes(null); --> End the validation of Attributes
validator.SkipToEndElement(null); --> Exit from the context; only when the ComplexType is a Sequence
A2要素に到達すると、GetExpetectedParticlesは、ループの場合と同様に、同じ要素A2を返し、A3要素に到達できません(または方法がわかりません)。これは、maxoccursに制限がないためだと思います。
だから問題は、どうすれば次の兄弟A3にジャンプできますか?