Je suis en train de valider une entrée XML par rapport à un schéma XML dans SQL Server 2005 et je reçois une erreur lors de la validation de l'e-mail:SQL Server - Validation XML: Valeur de type simple non valide
Msg 6926 , Niveau 16, État 1, Ligne 4
Validation XML: valeur de type simple non valide: '[email protected]'. Lieu:/: xxx [1]/: yyy [1]/*: Email [1]
Le champ email est défini dans le schéma comme:
<xsd:simpleType name="EMailType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" />
</xsd:restriction>
</xsd:simpleType>
Chaque adresse e-mail correspond à l'expression rationnelle est considéré comme valide, sauf pour quelque chose avec des traits de soulignement ([email protected]
est OK, [email protected]
est OK, mais [email protected]
ne l'est pas).
Si je supprime le trait de soulignement, le XML est validé.
J'ai testé mon expression rationnelle (qui est celle que vous pouvez trouver sur MSDN pour la validation des emails) avec divers outils et tous disent que c'est valide. Mais pas SQL Server.
Pourquoi ne valide-t-il pas les traits de soulignement? Y a-t-il quelque chose de spécial que je dois faire dans SQL Server?
Même problème: http://stackoverflow.com/questions/2973052/underscore-not-accepting-in-xml-schema-for-email-address – Asken
@Asken: ce poste traite une expression rationnelle non valide. Mon regexp est valide, SQL Server refuse de valider quelque chose avec des underscores dedans (d'après ce que j'ai pu trouver il a quelque chose à voir avec l'injection SQL puisque _ est un caractère générique de recherche) – JohnDoDo
Désolé c'est une question bête mais votre motif regexp ne permet pas de '_' droit? Au moins c'est le comportement en utilisant cela dans XMLSpy. Donc le message d'erreur de SQL Server est attendu parce que '_' n'est pas autorisé ou est-ce que je manque quelque chose? –