2015-05-26 74 views
1

我需要一個示例XSD來支持新元素中的多個電子郵件收件人。我需要每個收件人的電子郵件地址在不同的元素。任何人都可以幫我解釋一下嗎?多個電子郵件收件人的XML模式

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

回答

1

首先,我建議不嵌入在address元素的索引號:

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

然後這個XSD將驗證上述XML(以及作爲具有附加address元素的其他XML文檔):

<?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> 

注意,上述正則表達式是onemany的可能,每個都具有不同程度的普遍性和特殊性通過syntax that is more involved than you might imagine

相關問題