Google Groupes n'accepte plus les nouveaux posts ni abonnements Usenet. Les contenus de l'historique resteront visibles.

XSD: xs:choice maxOccurs > 1

2 vues
Accéder directement au premier message non lu

robson

non lue,
7 oct. 2009, 02:14:4107/10/2009
à
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.

Martin Honnen

non lue,
14 oct. 2009, 09:29:2614/10/2009
à
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/

0 nouveau message