簡體   English   中英

XML模式:具有不同屬性限制的單個元素名稱和類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM