SQL Server - XML验证:无效的简单类型值

时间:2011-10-03 12:55:37

标签: .net sql sql-server xml xsd

我正在尝试针对SQL Server 2005中的XML Schema验证XML输入,并且在验证电子邮件时出现错误:

  

Msg 6926,Level 16,State 1,Line 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>

与正则表达式匹配的每个电子邮件地址都被视为有效,除非其中包含下划线(johnDoe@yahoo.com没有问题,john.doe@yahoo.com没问题,但john_doe@yahoo.com不是)。

如果删除下划线,则验证XML。

我已经使用各种工具测试了我的regexp(你可以在MSDN上找到用于验证电子邮件的那个),他们都说它有效。但不是SQL Server。

为什么不验证下划线?我在SQL Server中必须做些什么特别的事情吗?

1 个答案:

答案 0 :(得分:2)

通过变通方法找到有关该问题的链接。 http://www.agilior.pt/blogs/rodrigo.guerreiro/archive/2008/11/14/5965.aspx

显然\w应该包含下划线,除非涉及处理XSD架构。所以这不是特定的SQL Server问题。使用XMLSpy验证XML时,我有完全相同的行为。