Titel eindigt uiteraard met maxOccurs="unbounded", maar dat paste niet meer 
Ik ben bezig met een XML Schema waaraan XML-streams die ik teruggeef moeten voldoen. Ik wil 1 .xsd-bestand maken, waarin alle mogelijkheden staan die teruggegeven kunnen worden.
Ik heb een gedeelte 'result' met een code en omschrijving, en een gedeelte 'details' met alle details (zie onderaan voor een voorbeeld XML- en XSD-bestand).
Van het 'details'-gedeelte wil ik een 'vergaarbak' voor allerlei rotzooi maken, dus niet gebonden aan volgorde of iets. Daarom valt 'xs:sequence' af als tag voor regel 20; 'xs:all' heeft wel het willekeurige karakter (je kan de tags in elke volgorde plaatsen), maar dan is maxOccurs="1" per definitie. Zoekend kwam ik erachter dat je naast deze twee ook nog 'xs:choice' hebt, maar daarbij kan je maar 1 tag uit het rijtje kiezen (dus bijv. 10 personen, maar dan mag een 'count' niet meer).
Is er een manier om de voordelen van al deze constructies te verenigen? Ofwel dat ik, volgens onderstaand voorbeeld, een 'count'-element mag hebben en meerdere 'person'-elementen, maar dat de volgorde niet uitmaakt?
Bijvoorbeeld:
Met als bijbehorend XML-schema (highlighting werkt helaas niet?):
Ik ben bezig met een XML Schema waaraan XML-streams die ik teruggeef moeten voldoen. Ik wil 1 .xsd-bestand maken, waarin alle mogelijkheden staan die teruggegeven kunnen worden.
Ik heb een gedeelte 'result' met een code en omschrijving, en een gedeelte 'details' met alle details (zie onderaan voor een voorbeeld XML- en XSD-bestand).
Van het 'details'-gedeelte wil ik een 'vergaarbak' voor allerlei rotzooi maken, dus niet gebonden aan volgorde of iets. Daarom valt 'xs:sequence' af als tag voor regel 20; 'xs:all' heeft wel het willekeurige karakter (je kan de tags in elke volgorde plaatsen), maar dan is maxOccurs="1" per definitie. Zoekend kwam ik erachter dat je naast deze twee ook nog 'xs:choice' hebt, maar daarbij kan je maar 1 tag uit het rijtje kiezen (dus bijv. 10 personen, maar dan mag een 'count' niet meer).
Is er een manier om de voordelen van al deze constructies te verenigen? Ofwel dat ik, volgens onderstaand voorbeeld, een 'count'-element mag hebben en meerdere 'person'-elementen, maar dat de volgorde niet uitmaakt?
Bijvoorbeeld:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| <xml>
<result>
<code>1</code>
<descr>Geen fouten</descr>
</result>
<details>
<count>2</count>
<person>
<name>Siemen</person>
<tel>012-345678</tel>
</person>
<person>
<name>Klaas</person>
<tel>012-987654</tel>
</person>
</details>
</xml> |
Met als bijbehorend XML-schema (highlighting werkt helaas niet?):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
| <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="..." elementFormDefault="qualified">
<xs:element name="xml">
<xs:complexType>
<xs:sequence>
<!-- Result code(s) and description(s) -->
<xs:element name="result" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="code"/>
<xs:element name="descr"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- Details of the result -->
<xs:element name="details" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence> / <xs:all> / <xs:???>
<!-- Date -->
<xs:element name="date" minOccurs="0"/>
<!-- Number of results returned -->
<xs:element name="count" minOccurs="0"/>
<!-- List of persons -->
<xs:element name="person" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name"/>
<xs:element name="tel"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema> |