次のクラスのXMLドキュメントをXMLスキーマとして表現することは可能ですか?
- ルート要素「root」には、最初の子として正確に1つの要素「message」が含まれます
- その後、任意の子要素が続く場合がありますが、それ以上の「メッセージ」要素はありません。
インスタンスの例:
<root>
<message type="S">Order saved</message>
<order number="4711"/>
</root>
<root>
<message type="S">3 countries selected</message>
<country value="ES">Spain</country>
<country value="FR">France</country>
<country value="IT">Italy</country>
</root>
私のアイデアは、次のように1つxs:element
のシーケンスを使用することでした。xs:any
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="message" maxOccurs="1">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="type"></xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:any processContents="skip" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
ただし、2つの「メッセージ」の子を含むドキュメントは渡されます(2番目の「メッセージ」要素はxs:anyに準拠するため)。