2
  1. XMLファイルを検証するためのスキーマを作成する必要があります。
  2. Motherタグ内の要素は、SonまたはDaughter
  3. SonまたはDaughter要素にシーケンスがありません。
  4. Son複数の要素を使用することはできません(1人の息子のみ)。
  5. ただしDaughter、複数の場合もあります(複数の娘)。

だから私の質問は、このためのXMLスキーマをどのように書くかです。これは私が書いたものです。代わりに私も<xsd:all>試しました。しかし、私はこれを克服する方法を理解できませんでした。 <xsd:sequence><xsd:choice>

<xsd:complexType name="Mother">     
 <xsd:all>
  <xsd:element name="Son" type="string" minOccurs="0" maxOccurs="1"/>
  <xsd:element name="Daughter" type="string" minOccurs="0" maxOccurs="1"/>
 </xsd:all>
</xsd:complexType>

-------------------------------これらは正しいXMLファイルです------------- -------------------

複数の娘と

<Mother>
<Son>Jhon</Son>
<Daughter>Rose</Daughter>
<Daughter>Ann</Daughter>
</Mother>

シーケンスが異なる

<Mother>
<Daughter>Rose</Daughter>
<Son>Jhon</Son>
<Daughter>Ann</Daughter>
</Mother>

息子なしまたは娘なしまたは両方なし

<Mother>
<Daughter>Rose</Daughter>
</Mother>
4

1 に答える 1

2

sequenceこの特定のケースでは、0個以上のDaughter要素、続いて0個または1個Son、次に別の0個以上Daughterの要素として実行できます。

<xsd:complexType name="Mother">     
 <xsd:sequence>
  <xsd:element name="Daughter" type="string" minOccurs="0" maxOccurs="unbounded"/>
  <xsd:element name="Son" type="string" minOccurs="0" maxOccurs="1"/>
  <xsd:element name="Daughter" type="string" minOccurs="0" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>

要素の内容が単なる文字列よりも複雑な場合は、個別のトップレベル要素を宣言し、それらを使用して参照する傾向があります。<xsd:element ref="Daughter" minOccurs=....

于 2013-03-20T10:35:32.267 に答える