Joh*_*oDo 5 .net xml sql sql-server xsd
我试图根据 SQL Server 2005 中的 XML 架构验证 XML 输入,但在验证电子邮件时出现错误:
消息 6926,16 级,状态 1,第 4 行
XML 验证:无效的简单类型值:“john_doe@yahoo.com”。位置: / :xxx[1]/ :yyy[1]/*:电子邮件[1]
电子邮件字段在架构中定义为:
<xsd:simpleType name="EMailType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" />
</xsd:restriction>
</xsd:simpleType>
Run Code Online (Sandbox Code Playgroud)
每个与正则表达式匹配的电子邮件地址都被视为有效,但其中包含下划线的地址除外(johnDoe@yahoo.com可以,john.doe@yahoo.com可以,但john_doe@yahoo.com不行)。
如果我删除下划线,XML 就会被验证。
我已经使用各种工具测试了我的正则表达式(您可以在 MSDN 上找到用于验证电子邮件的正则表达式),他们都说它是有效的。但不是 SQL Server。
为什么它不验证下划线?我必须在 SQL Server 中做一些特别的事情吗?
找到了有关该问题的链接以及解决方法。http://www.agilior.pt/blogs/rodrigo.guerreiro/archive/2008/11/14/5965.aspx
显然\w应该包含下划线并且这样做,除非涉及到处理 XSD 模式。所以这不是特定的 SQL Server 问题。使用 XMLSpy 验证 XML 时,我有完全相同的行为。
| 归档时间: |
|
| 查看次数: |
4059 次 |
| 最近记录: |