Attribut- / Element-Kookkurrenz-Einschränkung in XML-Schema

8

Ist es möglich, ein XML-Schema zu erstellen, das einem Attribut / Element-Paar eine Co-Occurrence-Einschränkung auferlegt?

%Vor%

Das Schema sollte Folgendes beinhalten:

  • Wenn ein primitives -Element in einem Element primitive-list angegeben wird, sollte es das name -Attribut und das eingebettete enthalten definition -Element, aber nicht das ref -Attribut.
  • Wenn ein primitives -Element im zusammengesetzten Element angegeben wird, sollte es entweder das ref -Attribut oder die Definition Element. Der Name ist in beiden Fällen nicht erlaubt.

Ich bin mir ziemlich sicher, dass dies möglich ist, da sich das Element element im XML-Schema selbst genau so verhält. Also jeder, der im Besitz dieses heiligen Wissens ist, teilt bitte: -)

Vielen Dank im Voraus.

    
Maxim Vladimirsky 26.11.2008, 13:29
quelle

3 Antworten

9

Nachdem ich im Internet gesucht und in einigen Büchern gegraben habe, habe ich herausgefunden, wie ich das umsetzen kann.

Zunächst müssen wir einen generischen Typ definieren, der alle Attribute und Elemente beider Arten des primitiven -Elements enthält. Es wird angenommen, dass das Element definition irgendwo anders definiert ist.

%Vor%

Dann definieren wir zwei primitive Subtypen, die in der Primitivliste und verwendet werden sollen composite .

%Vor%

Nun können wir die Grundelement-Liste und zusammengesetzten Elemente in Bezug auf diese komplexen Typen wie folgt definieren:

%Vor%

Sehen wir uns die ursprünglichen Schemaanforderungen an und sehen Sie, wie sie durchgesetzt werden:

  
  • Wenn ein primitives -Element in einem Element primitive-list angegeben wird, sollte es das name -Attribut und das eingebettete enthalten definition -Element, aber nicht das ref -Attribut.
  •   

Diese Anforderung wird durch die Definition des Typs public-primitive allein erzwungen.

  
  • Wenn ein primitives -Element im zusammengesetzten Element angegeben wird, sollte es entweder das ref -Attribut oder die Definition Element. Der Name ist in beiden Fällen nicht erlaubt.
  •   

Diese Anforderung wird durch die Definition des Typs private-primitive und des xs: key -Elements erzwungen, das im primitiven -Element definiert ist innerhalb des composite Elements. Der xs: Schlüssel garantiert, dass entweder ref oder Definition vorhanden ist, aber nicht beides.

    
Maxim Vladimirsky 03.12.2008, 08:22
quelle
0

Ja, das ist möglich. Beim Erstellen Ihres XML-Schemas erstellen Sie einen komplexen Typ für jedes Szenario, basierend darauf, wo in der XML-Struktur das Element definiert ist.

Wenn ich einen Moment später komme, kann ich versuchen, ein Beispiel für dich zu bekommen. Ich habe einfach nicht die Zeit, alles perfekt für den Post zu bekommen.

Ich empfehle Ihnen persönlich, dieses w3schools-Tutorial zu lesen, da es Ihnen helfen könnte, was Sie brauchen.

    
Mitchel Sellers 26.11.2008 13:47
quelle
0

Ok, hier ist ein Beispiel, das bringt Sie in die Nähe, das einzige, was nicht behandelt wird, ist das primitive und ref-Attribut auf dem Composite. Wenn ich anschaue, was ich finden kann, scheint es fast unmöglich, dies über ein Schema zu tun. Ich bin zwar nicht 100% sicher, aber in allen Fällen, in denen ich dies gesehen habe, wird ein solches Schema für die Validierung auf hoher Ebene verwendet und der Prozesscode wird dann verwendet, um die einzelnen Elemente zu validieren.

%Vor%     
Mitchel Sellers 27.11.2008 07:54
quelle

Tags und Links