XSD: xs:choice maxOccurs > 1

07/10/2009 - 08:14 von robson | Report spam
Hallo zusammen,

ich bin gerad dabei eine XML-Schnittstelle mittels XSD zu
spezifizieren und bin dabei auf folgendes Problem gestoßen:

Folgendes XML ist zu validieren:

<root>
<node1>...</node1>
<node2>...</node2>
<node3>...</node3>
</root>

wobei mindestens ein node(n)-element und höchstens 3 elemente
vorhanden sein dürfen.
Und jetzt kommts: Wenn ein node(n)-element vorhanden ist, darf es nur
einmal vorkommen.

Ich habe es so versucht:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="root" type="rootType"/>
<xs:complexType name="rootType">
<xs:choice minOccurs="1" maxOccurs="3">
<xs:element name="node1" type="xs:string"/>
<xs:element name="node2" type="xs:string"/>
<xs:element name="node3" type="xs:string"/>
</xs:choice>
</xs:complexType>
</xs:schema>

Allerdings gelingt mir damit nicht die Hàufigkeit eines node(n)-
Elements (z.b. "node1") genau auf "1" festzusetzen. Da die Reihenfolge
der nodes nicht zwingend ist möchte ich am liebsten auf die Verwendung
einer Sequenz verzichten.

Jemand ne Idee wie man sowas bewerkstelligen könnte?

Gruß Robson

BTW: ein explizites Setzen von maxOccurs="1" auf die nodes bringt
nichts da dies dem choice offensichtlich egal zu seien scheint.
 

Lesen sie die antworten

#1 Martin Honnen
14/10/2009 - 15:29 | Warnen spam
robson wrote:

ich bin gerad dabei eine XML-Schnittstelle mittels XSD zu
spezifizieren und bin dabei auf folgendes Problem gestoßen:

Folgendes XML ist zu validieren:

<root>
<node1>...</node1>
<node2>...</node2>
<node3>...</node3>
</root>

wobei mindestens ein node(n)-element und höchstens 3 elemente
vorhanden sein dürfen.
Und jetzt kommts: Wenn ein node(n)-element vorhanden ist, darf es nur
einmal vorkommen.



xs:all macht doch genau, was du verlangst. Jedes Element darf einmal
vorkommen und die Reihenfolge ist beliebig.
http://www.w3.org/TR/xmlschema-0/#element-all


Martin Honnen MVP XML
http://msmvps.com/blogs/martin_honnen/

Ähnliche fragen