Schéma XML motif de restriction de ne pas permettre que les cordes à vide
Dans mon schéma XML j'ai élément de type chaîne de caractères que je ne veux pas être vide (s'il contient des espaces vides etc je considère également qu'il est vide)
J'ai appliqué restrinction que j'ai trouvé à http://blogs.msdn.com/b/neerajag/archive/2005/08/12/450723.aspx
<xsd:restriction base = "xsd:string">
<xs:minLength value="1" />
<xs:pattern value=".*[^\s].*" />
</xsd:restriction>
Que exactement ce modèle de faire et faire ce que j'attends?
OriginalL'auteur jlp | 2011-05-16
Vous devez vous connecter pour publier un commentaire.
n'est-ce pas exactement ce que vous voulez?
Si la chaîne ne contient que des espaces (les sauts de ligne, retour chariot, tabulation, attaque et de fuite des espaces), le processeur va les supprimer si la validation échoue; si il y a autre chose, de validation de réussir.
(notez bien: interne des séquences de deux ou plusieurs espaces seront supprimés - assurez-vous que vous êtes ok avec ça)
Cela fonctionne, mais il fonctionne tout simplement parce qu'il utilise: <xs:espaces value="fermer"/> restriction. Donc pas d'autre magie est là.
OriginalL'auteur Frederik
Le modèle:
.*
(.
correspond à tout caractère).\s
est des espaces, donc[^\s]
est "correspond à quelque chose qui n'est pas un espace. La première^
dans le match nie la normale correspond à aucun de ces caractères.correspond à tout caractère" est la version rapide. La version complète comprend une note que, selon le moteur d'expressions régulières, il peut ne pas correspondre à des retours à la ligne par défaut. Essayez de remplacer
.*
avec[.\s]*
comme\s
correspond comprend à la fois le saut de ligne et retour chariot.Pourriez vous s'il vous plaît écrivez modèle qui satisfait aux exigences de la question?
Ce besoin? La question est "quel est ce modèle?".
chaîne n'est pas vide (seulement les espaces et retours à la ligne signifie est vide aussi)
OriginalL'auteur Richard
Je ne sais pas si c'est toujours utile, mais j'ai trouvé un meilleur modèle que le premier publié. Ici, il est:
À l'aide d'Eclipse, semble fonctionner correctement.
Cette solution est la seule de toutes les réponses qui fonctionne pour mon cas d'utilisation +1
Ce seul fonctionne très bien, la différence par rapport au fil des affiches exemple, c'est qu'il utilise \s*, au lieu d' .*, . ne correspond pas de saut de ligne!
OriginalL'auteur maurizeio
À la recherche au sujet du post "motif de ne pas permettre que les cordes à vide", qui est toujours sans réponse. Vous pouvez le faire en utilisant
<xsd:whiteSpace value="collapse" />
balise pour interdire les espaceswhiteSpace
contrainte à"collapse"
, il va faire ce qui suitles espaces, les retours chariot
Référence: W3C espaces
Merci pour le tuyau. J'ai aussi parlé du W3C pour référence W3C blanc, w3.org/TR/xmlschema-2/#rf-whiteSpace Point de 2,3 semble parfaitement correct. Bien qu'aucune mention du point 1, mais il travaille également mis à Jour la Référence
Excellente mise à jour sur la référence. Je suis encore un petit peu pas sûr de #1 (#2, 3 sont certainement correctes, comme vous le notez). Sur la #1, n'est-il pas convertir ces types d'espaces en espaces, plutôt que de simplement les enlever? (et puis, par la suite, s'effondre tous les espaces d'un espace unique...)
OriginalL'auteur M. Atif Riaz