je suis en train de définir une règle de régime en XSD, pour lequel une chaîne est de 8 caractères:XSD modèle d'expression régulière: ceci ou rien
<PostedDate>42183296</PostedDate>
et l'espace de remplissage est également autorisé:
<PostedDate> </PostedDate>
qui m'a conduit à la XSD:
<xs:simpleType name="DateFormat">
<xs:restriction base="xs:string">
<xs:length value="8" /> //exactly 8 characters long
</xs:simpleType>
mais la valeur peut également e Mpty (c.-à-d. zéro caractères):
<PostedDate></PostedDate>
<PostedDate />
ce qui m'a amené à essayer: naïvement
<xs:simpleType name="DateFormat">
<xs:restriction base="xs:string">
<xs:length value="8" /> //exactly 8 characters long
<xs:length value="0" /> //exactly 0 characters long
</xs:simpleType>
Ce qui bien sûr n'est pas autorisé.
Comme est souvent le cas dans XSD, la plupart des formats ne peuvent pas être représentés facilement avec XSD, donc je choisi de tenter une règle d'expression régulière:
.{8} | ""
qui essaie de convertir au type I xsd:
<xs:simpleType name="DateFormat">
<xs:restriction base="xs:string">
<xs:pattern value=".{8}|''" />
</xs:restriction>
</xs:simpleType>
Mais il ne fonctionne pas:
''20101111' is not facet-valid with respect to pattern '.{8}|''' for type 'DateFormat'
J'ai aussi essayé
<xs:pattern value="[0-9]{8}|''" />
<xs:pattern value="([0-9]{8})|('')" />
<xs:pattern value="(\d{8})|('')" />
Quelqu'un peut-il autre chose d'un modèle qui permet de résoudre la question correspondant soit - un certain modèle spécifique - vide
Bonus: peut Quelqu'un pointe vers l'endroit dans the XSD documentation qui dit que \d
correspond à des chiffres? Ou quels sont les autres codes de motif spéciaux?
Je pense que '\ d {8}?' Devrait fonctionner. '?' signifie que tout ce qui précède est optionnel. –