XML-схема для нескольких получателей электронной почты

Мне нужен образец XSD для поддержки нескольких получателей электронной почты в новом элементе. Мне нужен адрес электронной почты каждого получателя в другом элементе. Может ли кто-нибудь помочь мне с объяснением?

Пример:

<EmailReceipts> 
    <address1></address1>
    <address2></address2>
</EmailReceipts>

person Mohan    schedule 26.05.2015    source источник


Ответы (1)


Во-первых, я бы рекомендовал не вставлять порядковый номер в элементы address:

<EmailReceipts> 
  <address>[email protected]</address>
  <address>[email protected]</address>
</EmailReceipts>

Затем этот XSD проверит приведенный выше XML (а также другие документы XML с дополнительными элементами address):

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="EmailReceipts">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="address" maxOccurs="unbounded" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Приведенный выше XSD позволит использовать любое строковое содержимое для элементов address. Если вы хотите быть более строгим, вы можете использовать регулярное выражение, чтобы ограничить значения для address:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="EmailReceipts">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="address" maxOccurs="unbounded" type="EmailAddressType"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="EmailAddressType">
    <xs:restriction base="xs:string">
      <xs: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})"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

Обратите внимание, что приведенное выше регулярное выражение является одним из много возможных, каждый из которых имеет разную степень общности и специфичности по синтаксис, который сложнее, чем вы можете себе представить.

person kjhughes    schedule 26.05.2015