Bonjour à tous,
J'ai eu besoin dans mon xml schema, de déclarer que des éléments puissent apparaître dans n'importe quel ordre et autant de fois que voulu, j'ai donc utiliser un <sequence> et <choice> imbriquer, voici un exemple :
Je veux étendre ce type en rajoutant un élément, j'utilise ce code :
Je pense que le code obtenu au final ressemble à quelque chose de ce genre (après extension):
Mais cela ne répond plus à mon premier besoin (autant d'élément que voulu et dans n'importe quel ordre), je voudrai plutôt obtenir ce qui suit :
mais en utilisant une extension
Est ce que j'ai correctement compris comment les extensions marchent ? Si non, comment cela marche t-il, si oui, comment faire pour résoudre mon problème ?
Merci d'avance.
Modifié par Kahor (09 Jun 2008 - 14:33)
J'ai eu besoin dans mon xml schema, de déclarer que des éléments puissent apparaître dans n'importe quel ordre et autant de fois que voulu, j'ai donc utiliser un <sequence> et <choice> imbriquer, voici un exemple :
<xs:complexType ="mainType">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="element1" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="element2" minOccurs="0" maxOccurs="unbounded" />
</xs:choice>
</xs:sequence>
</xs:complexType>
Je veux étendre ce type en rajoutant un élément, j'utilise ce code :
<xs:complexType name="extendedType>
<xs:complexContent>
<xs:extension base="mainType">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="element3" minOccurs="0" maxOccurs="unbounded" />
</xs:choice>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
Je pense que le code obtenu au final ressemble à quelque chose de ce genre (après extension):
<xs:complexType ="finalType">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="element1" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="element2" minOccurs="0" maxOccurs="unbounded" />
</xs:choice>
</xs:sequence>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="element3" minOccurs="0" maxOccurs="unbounded" />
</xs:choice>
</xs:sequence>
</xs:complexType>
Mais cela ne répond plus à mon premier besoin (autant d'élément que voulu et dans n'importe quel ordre), je voudrai plutôt obtenir ce qui suit :
<xs:complexType ="finalType">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="element1" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="element2" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="element3" minOccurs="0" maxOccurs="unbounded" />
</xs:choice>
</xs:sequence>
</xs:complexType>
mais en utilisant une extension
Est ce que j'ai correctement compris comment les extensions marchent ? Si non, comment cela marche t-il, si oui, comment faire pour résoudre mon problème ?
Merci d'avance.
Modifié par Kahor (09 Jun 2008 - 14:33)