Как проверить идентификатор электронной почты в XML-схеме - PullRequest
12 голосов
/ 27 января 2010

Привет! Я создал схему для проверки идентификатора электронной почты. который может подтвердить, если идентификатор электронной почты abc@def.com и adbc@def.co.in и abc@def.co.in.pune Но я хочу проверить только abc@def.com и adbc@def.co.in, потому что я думаю, что электронная почта может иметь максимум 2 точки после символа @ так что третий будет неверный идентификатор электронной почты Итак, как проверить идентификатор электронной почты, используя схему Ниже приведена схема

<xsd:element name="SSEM" minOccurs="0">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="CNT" minOccurs="0" maxOccurs="unbounded">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="EM" minOccurs="1" nillable="true" type ="singleEmailID"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

Спасибо Сунил Кумар Саху

Ответы [ 4 ]

29 голосов
/ 27 января 2010

Вам необходимо определить шаблон для сопоставления с действительными электронными письмами. Шаблоны определяются с использованием синтаксиса регулярных выражений. Как только вы определили простой тип (на основе xs:string) с соответствующим шаблоном, вы можете использовать его для своего типа электронной почты.

В Интернете есть несколько мест, где приведены примеры таких типов и шаблонов. Пример типа электронной почты предоставлен здесь .

Приведенный здесь пример выглядит следующим образом (я немного отредактировал его, чтобы прояснить ситуацию):

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > 

  <xsd:element name="A" type="emailAddress"/> 

  <xsd:simpleType name="emailAddress"> 
    <xsd:restriction base="xsd:string"> 
      <xsd:pattern value="[^@]+@[^\.]+\..+"/> 
    </xsd:restriction> 
  </xsd:simpleType> 
</xsd:schema>
7 голосов
/ 27 января 2010

Вы можете использовать <xs:simpleType> на основе строки и шаблона регулярного выражения для проверки адресов электронной почты:

<xsd:simpleType name="emailAddress">
    <xsd:restriction base="xsd:string">
        <xsd:pattern value="([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})"/>
    </xsd:restriction>
</xsd:simpleType>

Используйте любое регулярное выражение электронной почты, которое вам нравится :-), посмотрите некоторые примеры на RegexLib.Net .

Затем используйте этот тип в вашей базовой XML-схеме:

<xsd:element name="email" type="emailAddress" />

Может быть проверено онлайн-валидатором: https://www.corefiling.com/opensource/schemaValidate.html

1 голос
/ 20 февраля 2010

Используйте приведенный ниже валидатор схемы для проверки идентификатора электронной почты

<xsd:simpleType name="emailAddress">
    <xsd:restriction base="xsd:string">
        <xsd:pattern value="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"/>
    </xsd:restriction>
</xsd:simpleType>
0 голосов
/ 17 сентября 2013

Используйте этот валидатор для проверки электронной почты также с апострофом:

<xsd:simpleType name="emailAddress">
    <xsd:restriction base="xsd:string">
        <xsd:pattern value="^([0-9a-zA-Z_\.\'\-]+)*@[0-9a-zA-Z\-]+[a-zA-Z\.]+Dollar symbol"/>
    </xsd:restriction>
</xsd:simpleType>

Это будет работать как проверка электронной почты с апострофом: -)

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