要素の順序が強制されない XSD スキーマに取り組んでいます。つまり、要素は任意の順序で表示できます。一部の要素はオプションであり、一部は必須です。私の知る限り、xs:sequence はこの種の状況に適していますが、xs:sequence は要素の順序を強制するため、強制に関しては非常に緩和された xs:choice しか残されていません。たとえば、次の例を考えてみましょう。
<p>
<c1>can appear 0 to infinite # of times</c1>
<c2>must appear exactly once</c2>
<c1>here the optional element appears again</c1>
</p>
私のXSDは次のようになります。
<xs:element name="p">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="c1" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="c2" minOccurs="1" maxOccurs="1" />
</xs:choice>
</xs:complexType>
ただし、上記の XSD は、要素「c2」が 1 回だけ出現することを強制しません。要素 "c2" が完全に存在しないか、2 回以上表示されていても、XML は有効であると見なされます。
私が許可できる方法は本当にありますか:
- 任意の順序の要素と
- xs:choice? 内にオプション要素と必須要素の両方を混在させますか?