[英]XML Schema: single element name and type with different attributes restriction
我需要指定這樣的XML片段:
<address type="work">...</address>
<address type="home">...</address>
work
地址是必需的,但home
地址是可選的。 如何在XML模式中實現該限制?
這是我的address
complexType:
<xs:complexType name="AddressType">
<xs:sequence>
<xs:element name="street" type="xs:string"></xs:element>
<xs:element name="postalCode" type="PostalCodeType"></xs:element>
<xs:element name="town" type="xs:string"></xs:element>
</xs:sequence>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="work" />
<xs:enumeration value="home" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
我列出了這樣的address
元素:
<xs:element name="address" type="AddressType"></xs:element>
<xs:element name="address" type="AddressType" minOccurs="0"></xs:element>
那么,如何指定第一個為type="work"
地址,而另一個為type="home"
地址呢?
在XSD 1.0中,我不知道一種實現您想要的內容的方法。 (XML的設計基於不同種類的對象稱為不同事物的前提;如果您希望家庭住址和工作地址具有不同的驗證行為,則有充分的證據表明它們對於您的目的而言是不同的,不應被稱為同一事物。如果您將元素命名為WorkAddress和HomeAddress,就沒有問題。如果我們不對處理器撒謊,事情會變得更好。)
在XSD 1.1中,您可以在內容模型中指定“地址”必須至少出現一次,並使用一個斷言來檢查第一次出現的類型是否為type =“ work”,第二次出現的類型是否為“ =” home“。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.