Во-первых, я бы рекомендовал не вставлять порядковый номер в элементы 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