1

XSD ファイルで 2 つの要素を定義したいと思います。これらの要素は何度も「無制限」に発生する可能性がありますが、それらは常に次々に発生する必要があります。例:

XML ファイル:

<company/>
<address/>
<customer/>
<customerContact/>
<customer/>
<customerContact/>
<customer/>
<customerContact/>

問題は、次の XSD 定義が

<xs:element name="company" type="companyType"/>
<xs:element name="address" type="addressType"/>
<xs:element name="customer" type="customerType" maxOccurs="unbounded"/>
<xs:element name="customerContact" type="customerContactType" maxOccurs="unbounded"/>

次のようなXMLファイルでのみ機能します

<company/>
<address/>
<customer/>
<customer/>
<customer/>
<customerContact/>
<customerContact/>
<customerContact/>

ここで、customercustomerContactは交互になりません。customer または customerContactという要素を定義し、その要素の繰り返しを許可するというアイデアがありました。それは私の問題を解決しますが、有効として受け入れられない他のソリューションも許可します。

きれいな解決策は、XMLを次のようにすることだと思います

<company/>
<address/>
<customerEnvelope>
    <customer/>
    <customerContact/>
<customerEnvelope>
<customerEnvelope>
    <customer/>
    <customerContact/>
</customerEnvelope>

customerEnvelopeを繰り返します。残念ながら、XML 構造は既に顧客から提供されているため、ここで変更を加えることはできません。

この種の構造を XSD で定義することは可能ですか、それとも上記の回避策を使用する必要がありますか?

4

1 に答える 1

3
<xs:element name="company" type="companyType"/>
<xs:element name="address" type="addressType"/>
<xs:sequence maxOccurs="unbounded">
  <xs:element name="customer" type="customerType"/>
  <xs:element name="customerContact" type="customerContactType"/>
</xs:sequence>
于 2013-01-23T01:25:31.457 に答える