2010-11-08 22 views
0

Je travaille sur un fichier XSD et lors de la validation d'un fichier XML, je souhaite limiter les éléments vides. Par exemple.,Prévenir les éléments vides en XML via XSD

<myElement>this is not empty</myElement>

passerait la validation, mais

<myElement/> ou <myElement></myElement>

ne passeraient pas la validation.

Merci pour toute aide que vous pouvez offrir!

ps. J'ai accidentellement posté ceci au https://stackoverflow.com/questions/4126546/prevent-empty-elements-in-xml-via-xsd sous un compte non enregistré. Je m'excuse pour tout inconvénient.

MISE À JOUR: L'élément ne doit pas pouvoir exister dans le fichier XML, donc je ne peux pas utiliser minOccurs = "1".

Répondre

3

Vous pouvez faire quelque chose comme

<xs:simpleType name="myString"> 
    <xs:restriction base="xs:string"> 
    <xs:minLength value="1"/> 
    </xs:restriction> 
</xs:simpleType> 

<xs:element name="root" type="myString"></xs:element> 

Cependant qui correspond toujours à <root> </root> mais vous pouvez utiliser une restriction de regex changer que si elle est un problème.

+0

Cela fonctionnerait-il si minOccurs = "0"? – hmcclungiii

+1

Oui, ça a fait l'affaire! Merci! – hmcclungiii

0

Vous pouvez avoir besoin de minOccurs="0" pour demander l'étiquette, puis avoir une expression rationnelle de validation qui vérifie un ou plusieurs caractères.

+0

L'élément ne doit pas pouvoir exister dans le fichier XML, donc je ne peux pas utiliser minOccurs = "1". Merci pour l'aide en tout cas! J'ai mis à jour le PO pour refléter cela. – hmcclungiii

+0

Voir changement - faites-le minOccurs = '0' dans ce cas. Le reste s'applique toujours. – duffymo