OK。私はあなたが理解していると思う。
<?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>
あなたは、彼らが両方存在している必要がありますが、ownerName
とownerLastName
要素は任意の順序で発生します:あなたのXMLは次のようになります。あなたの記述から、rooms
要素の位置が重要であることは明らかではありません。私はそれを前提としています。 rooms
の子要素がそのまま残ります。
分割これまで、我々はこれがために私たちの部屋のシーケンスを与える
<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>
(そのモデルが完了した)部屋のためのcomplexType
を定義することができます。
xs:all
の使用にはかなりの制限がありますので、ここでは避けています(たとえば、シーケンスで使用することはできません)。オーナネームを任意の順序で出現させるために、私は2つのシーケンスの中から選択しました。この選択は、rooms
要素が最後に来るように別のシーケンスに埋め込まれています。
今
<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"/>
、あなたが実際にオーダーまたはownerLastName
を気にしない場合は、ownerName
とhouse
その後は問題なくxs:all
を使用することができます。
<xs:complexType name="HouseType">
<xs:all>
<xs:element ref="ownerName"/>
<xs:element ref="ownerLastName"/>
<xs:element name="rooms" type="HouseType"/>
</xs:all>
</xs:complexType>
あなたはすべての3つを持っていることを必要とします要素は任意の順序で存在します。
さらに詳しい情報を記入してください。答えは「はい」ですが、あなたの質問はあまりにも漠然としています。いくつかのXMLを投稿すれば助けになるでしょう。 –
は大丈夫、私はこのように何とかなXML検証する: \t AAAを \t BBB ownerLastName> \t \t \t キッチン \t \t リビングルーム \t \t \t \t \t \t \t 部屋の子要素は常にその順序でapperますが、名前と姓は、任意の順序で表示されます。だから私はシーケンスの中の部屋の子要素とすべてのタグの中の名前要素をリストしたいと思っていました。 –
AirPoland