2010-10-06 10 views
3

Je dois créer un fichier XSD pour la vérification de la structure XML, comme d'habitude. Après avoir généré le XSD (avec XMLSpy), j'ai trouvé une partie du fichier qui me pose problème. J'ai une énumération comme ceci:XSD Enumération sur une plage de valeurs

<xs:enumeration value="1"/> 
    <xs:enumeration value="1011"/> 
    <xs:enumeration value="1032"/> 

et ainsi de suite. Le problème est que tout entier donné dans cette énumération doit être considéré comme valide, et je ne peux pas écrire des balises d'énumération de 1 à, disons, 65635.

Et je ne sais pas non plus combien de ces éléments enum seront nécessaires , car le nombre de ces tags d'énumération sur le fichier XML n'est pas corrigé!

Comment puis-je dire au XSD que toute valeur entière est correcte, et qu'il n'y a pas de correspondance minimale ou maximale dans le fichier XML pour cette énumération?

Merci à l'avance (et désolé pour mon anglais!)

Répondre

6

Votre question ne montre pas assez d'informations pour donner une réponse exacte, mais cela va probablement résoudre votre problème.  

Vous avez probablement un code comme ceci:

<xs:element name="foobar" type="enumType"/> 

<xs:simpleType name="enumType"> 
    <xs:restriction base="xs:integer"> 
    <xs:enumeration value="1"/> 
    <xs:enumeration value="1011"/> 
    <xs:enumeration value="1032"/> 
    </xs:restriction> 
</xs:simpleType> 

Ce morceau de schéma définit un élément <foobar> et un type simple enumType qui est le type de contenu de l'élément <foobar>. Donc, vous avez demandé:

Comment puis-je dire la XSD que toute valeur entière est ok, et qu'il n'y a aucune correspondance minimale ou maximale sur le fichier XML pour cette énumération?

Vous n'avez pas besoin d'énumérer séparément toutes les valeurs valides pour <foobar> comme vous avez à faire avec DTD. Au lieu de cela, vous pouvez simplement utiliser le predefined types du schéma XML dans l'attribut type.

Voici un exemple de code qui définit un élément <foobar> et lui permet de contenir n'importe quel nombre entier. Si j'ai mal interprété votre question, s'il vous plaît laissez un commentaire et définissez votre problème de plus près. Dire aussi plus de votre schéma serait utile.

+0

Problème résolu ... c'était juste mon ignorance de xsl qui a généré ceci! Merci beaucoup pour votre aide ... – nrocha

+0

il est possible de mettre en place une longueur fixe pour entier enum? comme adimoldovan

4

Pourquoi vous devez utiliser une énumération et non un type entier simple?

+0

Parce que je pourrais avoir plusieurs balises correspondant à ces valeurs (je veux dire aucune, une ou plusieurs) – nrocha

+0

et quelque chose comme ne va pas résoudre ça? Peut-être http://www.w3schools.com/Schema/schema_facets.asp peut vous aider. – kasten

Questions connexes