No momento, estou escrevendo um SDK em torno de um padrão xml bem antigo e complicado. Há um esquema xml fornecido e estou confuso com esta construção:
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:choice>
<xs:element ref="A" minOccurs="0" />
<xs:element ref="B" />
</xs:choice>
<xs:element ref="C" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="D" minOccurs="0" maxOccurs="unbounded" />
</xs:choice>
</xs:complexType>
Não tenho a mínima ideia de como entender isso... especialmente a escolha interna. Então escolha significa pegar exatamente um elemento dos listados, certo? Mas B não tem min ou max ocorrendo, então o padrão é 1. Então exatamente 1 elemento de B é necessário. Como escolher A então?