P
Philipp
Hello,
I'm learning W3C Schema 1.0 and have encountered a problem. I want to
make a complex type which requires to contain exactly 1 instance of each
of a list of elements (a, b, c) and at least once a choice of several
other elements ( d1 | d2 | d3 ). This in any order.
I have come up with the following which is (unfortunately) invalid XSD 1.0:
<complexType name="root">
<all>
<element name="a" type="string"></element>
<element name="b" type="string"></element>
<element name="c" type="string"></element>
<choice maxOccurs="unbounded" minOccurs="1">
<element name="d1" type="string"></element>
<element name="d2" type="string"></element>
<element name="d3" type="string"></element>
</choice>
</all>
</complexType>
If somebody can help me make up a valid schema for this, I would be very
thankful. Below are some XML examples to clarify what I expected.
Thanks Phil
=== XML example ===
VALID (a,b,c are there, and at least one d*)
<root>
<a />
<b />
<c />
<d1 />
</root>
VALID (order changed, that's OK)
<root>
<a />
<d1 />
<c />
<b />
</root>
VALID (multiple d* are OK)
<root>
<a />
<d2 />
<b />
<c />
<d3 />
<d2 />
</root>
INVALID (a appears twice, bad)
<root>
<a />
<b />
<c />
<d1 />
<a />
</root>
INVALID (no d* element, bad)
<root>
<a />
<b />
<c />
</root>
I'm learning W3C Schema 1.0 and have encountered a problem. I want to
make a complex type which requires to contain exactly 1 instance of each
of a list of elements (a, b, c) and at least once a choice of several
other elements ( d1 | d2 | d3 ). This in any order.
I have come up with the following which is (unfortunately) invalid XSD 1.0:
<complexType name="root">
<all>
<element name="a" type="string"></element>
<element name="b" type="string"></element>
<element name="c" type="string"></element>
<choice maxOccurs="unbounded" minOccurs="1">
<element name="d1" type="string"></element>
<element name="d2" type="string"></element>
<element name="d3" type="string"></element>
</choice>
</all>
</complexType>
If somebody can help me make up a valid schema for this, I would be very
thankful. Below are some XML examples to clarify what I expected.
Thanks Phil
=== XML example ===
VALID (a,b,c are there, and at least one d*)
<root>
<a />
<b />
<c />
<d1 />
</root>
VALID (order changed, that's OK)
<root>
<a />
<d1 />
<c />
<b />
</root>
VALID (multiple d* are OK)
<root>
<a />
<d2 />
<b />
<c />
<d3 />
<d2 />
</root>
INVALID (a appears twice, bad)
<root>
<a />
<b />
<c />
<d1 />
<a />
</root>
INVALID (no d* element, bad)
<root>
<a />
<b />
<c />
</root>