0

この問題のスキーマを作成するためにいくつかのアプローチを試みましたが、成功しませんでした。それが可能かどうかはよくわかりません。

基本的に、ルート ノード<root>があり、子<A><B>、およびを持つことができるとし<C>ます。

xml を出力するプログラムの反復ごとに、A、B、および C ノードが作成され、子としてルートに追加されます。ただし、各反復で常に各 A、B、および C が使用されるとは限りません。その場合、ノードは出力されません。したがって、例として次のようなものを取得します。

<A>sfs</A> <!-- first iteration used A, B, and C -->
<B>sfs</B>
<C>ss</C>
<A>fff</A> <!-- second iteration used A, and C, not B -->
<C>ss</C>
<B>fff</B> <!-- third iteration used only B -->

私はこの方法で出力するプログラムを書いたわけではなく、このフォーマットに対して何の権限もありません。

たとえば、私が知っていることは、A が 10 個、C が 2 個、B が 5 個を超えることはあり得ないということです。ただし、順序は保証されません。

したがって、ルート内に A、B、および C ノードのみが存在し、A が 10 個、C が 2 個、および B が 5 個以下であることを確認するための XSD が必要でした。

xs:choice と maxOccurs unbounded を使用することで、最初の部分を達成できます。これは、A、B、および C ノードのみを保証しますが、それらの数を強制する方法を理解できないようです。

この問題に対する巧妙な回避策はありますか?

4

1 に答える 1

1

XSD を使用してこの種の構造を検証するためにできることはあまりありません。XSD は非常に制限的です。

おそらく、xml を使用してから、シリアル化解除されたインスタンスをコードでチェックする方がよいでしょう。

于 2012-06-21T13:51:08.740 に答える