12

以下のこの例では、

        <xs:complexType>
        <xs:choice minOccurs="3" maxOccurs="unbounded">
            <xs:element ref="Start"/>
            <xs:element ref="Center"/>
            <xs:element ref="End"/>
            <xs:element ref="PI" minOccurs="0"/>
            <xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
        </xs:choice>
        </xs:complexType>

minOccurs> 1の場合はどうなりますか?これは、要素「開始」が3回発生する可能性があることを意味しますか?

4

2 に答える 2

12

選択肢の minOccurs > 1 の場合はどうなりますか? これは、要素「開始」が 3 回発生する可能性があることを意味しますか?

はい<Start>、3回以上発生する可能性があります! minOccurs の選択肢を 1 より多くすると、一連の要素を複数回表示したり、異なる要素を複数回表示したりできます。

詳細な説明: 上記の例では、minOccurs を 3 for として適用し<Choice>、maxOccurs を unbounded として適用しました! つまり、.. の下にリストされている子要素<Choice>、そのうちの 3 つ、または 3 回繰り返されるタグは、親の下に表示されます。サンプル XML を以下に示します。

<parent>これらの一連のタグがthenというノードの下に表示されると仮定します。

  <parent>
    <Start>Start1</Start>
    <Center>Center1</Center>
    <End>End1</End>
  </parent>

- - - - また - - - -

  <parent>
    <Center>Start1</Center>
    <Center>Center1</Center>
    <Feature>End1</Feature>
  </parent>

- - - - また - - - -

 <parent>
    <Start>Start1</Start>
    <Start>Start1</Start>
    <Start>Start1</Start>
    <Start>Start1</Start>
  </parent>

上記の組み合わせはすべて有効です。

しかし、「PI」と「機能」に対して minOccurs="0" も定義しています..

この追加により、Validator は子要素のない親も渡します。すなわち:

  <parent>
  </parent>

これら 2 つの要素から minOccurs を削除すると、検証により、少なくとも 3 つのタグを親の下に含めることが強制されます。

また、maxOccurs="unbounded"for FeatureElement を使用しても意味がありません。付けても外しても挙動は変わりません。

于 2012-12-21T08:35:31.540 に答える
4

冗長な大量の先のとがった括弧ではなく、読みやすい正規表現のような構文では、次のようになります。

(開始 | 中央 | 終了 | PI? | フィーチャー*){3,}

これは、括弧内に 3 回以上含まれるものを意味し、毎回同じ項目である必要はありません。null 可能な代替手段があることを考えると - PI? および Feature* - 選択肢の中で、式全体も null 可能です。つまり、ゼロを含む任意の数の null も制約を満たすことになります。

特定の質問に答えるために、はい、「開始」は3回(またはそれ以上)発生する可能性があります。実際のところ、それは何度でも発生する可能性があります。

于 2012-12-21T22:56:53.387 に答える