1. ホーム
  2. xml

[解決済み] スキーマ定義における<xsd:all>と<xsd:sequence>の違い?

2023-05-05 09:15:48

質問

私は xsd:all を使っています。検証中に必須要素を見逃してしまった場合、すべての要素が表示されます。見逃した要素そのものは表示されません。

しかし、もし私が xsd:sequence とすると、正確にミスした要素を取得することができます。

この2つに違いはあるのでしょうか?

xsd:sequence : XML要素は同じ順番でなければなりません。

しかし xsd:all : XMLの要素はどのような順番でも構いません。

どのように解決するのですか?

<xsd:all> は、子要素がどのような順序で現れてもよいことを指定します。

<xsd:sequence> は子要素が言及された順序でのみ現れることができることを指定します。

Sequenceの例です。

<xs:element name="compElement">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="ele1" type="xs:string"/>
      <xs:element name="ele2" type="xs:string"/>
      <xs:element name="ele3" type="xs:string"/>
      <xs:element name="ele4" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

では、このxsdからXMLを作成すると、以下のようになります。

<compElement>
  <ele1>First</ele1>
  <ele2>Second</ele2>
  <ele3>Third</ele3>
  <ele4>Fourth</ele4>
</compElement>

すべての人のための例です。

<xs:element name="compElement">
  <xs:complexType>
    <xs:all>
      <xs:element name="ele1" type="xs:string"/>
      <xs:element name="ele2" type="xs:string"/>
      <xs:element name="ele3" type="xs:string"/>
      <xs:element name="ele4" type="xs:string"/>
    </xs:all>
  </xs:complexType>
</xs:element>

このxsdからXMLファイルを作成すると、次のようなものになります。

<compElement>
  <ele2>Second</ele2>
  <ele1>First</ele1>
  <ele4>Fourth</ele4>
  <ele3>Third</ele3>
</compElement>

詳細情報 xsd:allに

その他の情報 xsd:sequenceについて

あなたの質問に答えられるといいのですが。