Bonjour,
Je n'arrives pas à définir le fonctionnement suivant dans mon schémas xsd. Quand je teste la validation d'un xml à partir de mon xsd, cela ne réagit pas du tout comme je veux.
En gros je cherche à avoir un fonctionnement similaire aux flux rss (je vais donc prendre l'exemple des rss pour la suite).
Je voudrais, dans un élément <channel> avoir obligatoirement les éléments <title> <link> et <description> en un et un seul exemplaire, ainsi qu'optionnellement les éléments <language> et <copyrigth> en 0 ou 1 exemplaire.
Je me suis basé sur le xsd suivant pour le faire : http://www.thearchitect.co.uk/schemas/rss-2_0.xsd
Hélas, quand je lance une validation xml par le biais du xsd, celà n'indique aucune erreur si mon xml a deux balises <title>, encore moins s'il n'y en a aucune...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <xs:complexType name="RssChannel"> <xs:sequence> <xs:choice maxOccurs="unbounded"> <xs:element name="title" type="xs:string"> </xs:element> <xs:element name="link" type="xs:anyURI"> </xs:element> <xs:element name="description" type="xs:string"> </xs:element> <xs:element name="language" type="xs:language" minOccurs="0"> </xs:element> <xs:element name="copyright" type="xs:string" minOccurs="0"> </xs:element> </xs:choice> </xs:sequence> </xs:complexType>
Je ne peux pas utiliser une simple séquence, car je ne veux pas contraindre d'ordre entre les balises, et ne peux pas utiliser un simple choice, car il faut pouvoir mettre toutes les balises si envie.
Avez vous une idée pour obtenir le bon fonctionnement?
Partager