2010-06-10 6 views
0

Ce qui suit semble fonctionner pour le format MM-YYYY mais j'ai maintenant un cas où il peut être vide ou avoir une date. Est-ce possible ou devrais-je pousser pour inclure uniquement l'attribut dans le XML s'il y a une date et rendre l'attribut facultatif?XSD Validation de date ou pas de date

<xs:attribute name="edition_date" use="required"> 
<xs:simpleType> 
    <xs:restriction base="AT_STR"> 
    <xs:length value="7"/> 
    <xs:pattern value="(0[1-9]|1[012])[-](19|20)\d\d"/> 
    </xs:restriction> 
</xs:simpleType> 

Répondre

2

comprennent uniquement l'attribut dans le fichier XML s'il y a une date et faire l'attribut en option

On dirait que la bonne option pour moi

0

Faire l'attribut facultatif, et inclure uniquement l'attribut dans le XML s'il y a une date est une bonne option, mais dans certains cas, vous n'avez pas le contrôle sur la génération du XML. Dans ce cas, vous pouvez essayer le modèle suivant dans le XSD

<xs:simpleType name="edition_date"> 
    <xs:restriction base="xs:string"> 
     <xs:maxLength value="7"/> 
     <xs:pattern value="((0[1-9]|1[012])[-](19|20)\d\d)?"/>  
    </xs:restriction>  
</xs:simpleType>  

Ceci est un modèle semblable à la vôtre, mais l'utilisation du? L'opérateur indique que le motif peut apparaître zéro ou une fois, et permettra donc une chaîne vide. Notez également l'utilisation de xs: maxLength au lieu de xs: length. Ce n'est pas le cas, car le motif n'autorise qu'une longueur fixe.