OK. Ich denke, ich verstehe, dass du es weißt. Ihre XML wie folgt aussieht:
<?xml version="1.0"?>
<house>
<ownerName>aaa</ownerName>
<ownerLastName>bbb</ownerLastName>
<rooms>
<room1>kitchen</room1>
<room2>living room</room2>
<room3></room3>
<room4></room4>
<room5></room5>
</rooms>
</house>
Sie wollen, dass die ownerName
und ownerLastName
Elemente in beliebiger Reihenfolge auftreten, obwohl sie beide vorhanden sein müssen. Aus Ihrer Beschreibung ist nicht klar, dass die Position des Elements rooms
wichtig ist. Ich habe angenommen, dass es so ist. Es ist der Import, dass die Kindelemente von rooms
in Reihenfolge bleiben.
Splitting dies, können wir eine complexType
für die Räume (so das Modell fertig ist)
<xs:complexType name="RoomType">
<xs:simpleContent>
<xs:extension base="xs:string"/>
</xs:simpleContent>
</xs:complexType>
<xs:element name="RoomsType">
<xs:complexType>
<xs:sequence>
<xs:element name="room1" type="RoomType"/>
<xs:element name="room2" type="RoomType"/>
<xs:element name="room3" type="RoomType"/>
<xs:element name="room4" type="RoomType"/>
<xs:element name="room5" type="RoomType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Dies gibt uns die Abfolge von Räumen, um definieren.
Es gibt einige Einschränkungen bei der Verwendung von xs:all
, also habe ich es hier vermieden (Sie können nicht in einer Sequenz zum Beispiel verwenden). Damit die Eigennamen in beliebiger Reihenfolge vorkommen können, habe ich zwei Sequenzen gewählt. Die Auswahl ist in eine andere Sequenz eingebettet, um sicherzustellen, dass das rooms
Element die letzte ist.
<xs:complexType name="HouseType">
<xs:sequence>
<xs:choice>
<xs:sequence>
<xs:element ref="ownerName"/>
<xs:element ref="ownerLastName"/>
</xs:sequence>
<xs:sequence>
<xs:element ref="ownerLastName"/>
<xs:element ref="ownerName"/>
</xs:sequence>
</xs:choice>
<xs:element name="rooms" type="HouseType"/>
</xs:sequence>
</xs:complexType>
<xs:element name="house" type="HouseType"/>
Nun, wenn Sie tatsächlich nicht über die Bestellung oder ownerLastName
egal, ownerName
undhouse
dann können Sie xs:all
ohne Probleme verwenden:
<xs:complexType name="HouseType">
<xs:all>
<xs:element ref="ownerName"/>
<xs:element ref="ownerLastName"/>
<xs:element name="rooms" type="HouseType"/>
</xs:all>
</xs:complexType>
, die erfordert, dass Sie alle drei haben Elemente in beliebiger Reihenfolge vorhanden.
Bitte posten Sie weitere Informationen. Die Antwort ist "Ja", aber Ihre Frage ist zu vage, um mehr zu sagen. Wenn Sie etwas XML veröffentlichen könnten, würde es helfen. –
ok Ich möchte eine XML-Validierung, die wie das irgendwie aussieht: \t aaa \t bbb ownerLastName> \t \t \t Küche \t \t Wohnzimmer \t \t \t \t \t \t \t Das Kind Elemente des Zimmers immer in dieser Reihenfolge apper werden, aber der Name und Nachname in beliebiger Reihenfolge angezeigt werden. Also wollte ich die Kindelemente von Räumen in einer Sequenz auflisten und die Namenselemente in einem All-Tag. –
AirPoland