wake-up-neo.com

Unterschied zwischen <xsd: all> und <xsd: sequence> bei der Schemadefinition?

Ich verwende xsd:all in einem komplexen Typ. Wenn ich bei der Validierung alle obligatorischen Elemente vermisse, werden alle Elemente angezeigt. Das genaue fehlende Element wird nicht angezeigt.

Aber wenn ich xsd:sequence benutze, kann ich genau das fehlende Element erhalten.

Gibt es einen Unterschied zwischen diesen beiden?

xsd:sequence: XML-Element muss in derselben Reihenfolge sein.

xsd:all: Das XML-Element kann eine beliebige Reihenfolge sein.

57
user1679378

<xsd:all> gibt an, dass die untergeordneten Elemente in beliebiger Reihenfolge angezeigt werden können.

<xsd:sequence> gibt an, dass untergeordnete Elemente nur in der angegebenen Reihenfolge erscheinen können.

Beispiel für die Sequenz:

<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>

Wenn Sie aus dieser xsd-Datei ein XML erstellen, sieht es ungefähr so ​​aus:

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

Beispiel für alle:

<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>

Wenn Sie aus diesem Xsd eine XML-Datei erstellen, könnte dies ungefähr so ​​aussehen:

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

Mehr Infos auf xsd: alle
Weitere Informationen in der xsd: -Sequenz

Ich hoffe, ich habe deine Frage beantwortet.

100

Unterschied:

  • xsd: Alle - "Kindelemente können in beliebiger Reihenfolge erscheinen und jedes Kindelement kann null oder einmal auftreten" (dh maxOccurs kann 0 oder 1 sein)
  • xsd: sequence - "Untergeordnete Elemente müssen in einer Sequenz erscheinen. Jedes untergeordnete Element kann von 0 bis zu einer beliebigen Anzahl von Malen vorkommen."

Aus den W3Schools-Tutorials hier und hier .

18
kamituel

Alle Anzeige

Das <all>-Kennzeichen gibt an, dass die untergeordneten Elemente in beliebiger Reihenfolge angezeigt werden können und jedes untergeordnete Element nur einmal vorkommen darf: 

Sequenzanzeige

Das <sequence>-Kennzeichen gibt an, dass die untergeordneten Elemente in einer bestimmten Reihenfolge angezeigt werden müssen:

Verweislink

2
NPKR

Das Schema definiert lediglich, was ein konformes Dokument darstellt.

Wie die Nichtkonformität gemeldet wird, bleibt dem Prüfer überlassen. Es gibt nichts, was einen Prüfer davon abhält, genau zu berichten, welche Felder fehlen, aber anscheinend tut der von Ihnen verwendete nicht. 

Ob es sich hierbei um einen Fehler oder ein Design handelt, müssen Sie mit dem Anbieter des Validators besprechen.

1
Joachim Lous

wenn wir unter Tag verwenden, bedeutet dies, dass alle Elemente, die in diesem complexType deklariert sind, in XML-Dokument in der gleichen Reihenfolge angezeigt werden müssen. Andernfalls erhalten Sie eine Fehlermeldung. denn es ist nicht notwendig, die Elemente in der richtigen Reihenfolge anzugeben. 

0
user3423648