SQL Server - проверка XML: недопустимое значение простого типа - PullRequest
4 голосов
/ 03 октября 2011

Я пытаюсь проверить ввод XML по схеме XML в SQL Server 2005 и получаю сообщение об ошибке при проверке электронной почты:

Сообщение 6926, уровень 16, состояние 1,Строка 4

Проверка XML: недопустимое значение простого типа: 'john_doe@yahoo.com'.Расположение: / : xxx [1] / : ггг [1] / *: Email [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 проверен.

Я протестировал свое регулярное выражение (которое вы можете найти в MSDN для проверки электронной почты) с помощью различных инструментов, и все они говорят, что это правильно.Но не SQL Server.

Почему он не проверяет подчеркивания?Что-то особенное, что я должен сделать в SQL Server?

1 Ответ

2 голосов
/ 04 октября 2011

Нашел ссылку о проблеме с обходным решением. http://www.agilior.pt/blogs/rodrigo.guerreiro/archive/2008/11/14/5965.aspx

Очевидно, \w должен включать подчеркивание и делает это, за исключением случаев, когда речь идет об обработке схем XSD. Так что это не конкретная проблема SQL Server. У меня точно такое же поведение при проверке XML с использованием XMLSpy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...