私は常に、XMLSchema と DTD は同等であると理解していましたが、後者は複雑な関係 (継承など) をモデル化するときに使用するのがより面倒であることを理解していました。
最近、次のような構造を持つドキュメントを検証するスキーマを構築したいと考えました。
<data>
<array>
<int></int>
<int></int>
</array>
</array>
<float></float>
<float></float>
</array>
<int><int>
<float></float>
</data>
< data > 内の要素は任意の順序で表示でき、それぞれのカーディナリティは 0..* XMLSchema を使用し、< xs:all > を使用して複合型を定義すると、要素の順序が乱れる可能性がありますが、最大カーディナリティは 1 です。 < xs:sequence > と < xs:choice > は他の明白な候補ですが、私が望むよりも制限的です。
次に、DTD が次のようにこれを達成できるように見えることに気付きました。
<!ELEMENT data (array | float | int)*>
同等のスキーマを構築する方法はありますか、またはここで DTD を使用する必要がありますか?