我試圖用ID
類型屬性限制兩種類型的工會:XSD:定義的ID類型的限制與聯盟
<attribute name="metaDataID" use="required">
<simpleType>
<union>
<simpleType>
<restriction base="ID">
<enumeration value="from" />
<enumeration value="to" />
<enumeration value="cc" />
<enumeration value="bcc" />
<enumeration value="subject" />
<enumeration value="sendTime" />
</restriction>
</simpleType>
<simpleType>
<restriction base="ID">
<pattern value="attachment\d+-metadata" />
</restriction>
</simpleType>
</union>
</simpleType>
</attribute>
所以基本思想是屬性值應該與枚舉{from/to/cc/bcc/subject/sendTime}或模式「attachment \ d + -metadata」匹配。
當使用JAXB我收到以下錯誤驗證:
The attribute use 'metaDataID' in this type has type 'null', which is not validly derived from 'ID', the type of the matching attribute use in the base type.
這對我來說很有意義。 metaDataID
的新定義不再具有類型ID
。但是我不能在simpleType
或union
元素上指定類型,所以我不知道如何指定聯合的結果也是ID
類型。我也曾嘗試:
<attribute name="metaDataID" use="required">
<simpleType>
<restriction base="ID">
<union>
...
</union>
</restriction>
</simpleType>
</attribute>
但限制不允許工會它們下面。這甚至有可能嗎?
謝謝!無論如何,我會使用你的模式,因爲它更容易閱讀。它看起來像XSD 1.1在這方面沒有幫助,雖然我不能確定,因爲我不認爲JAXB支持1.1。 – 2015-04-06 05:42:09