0
我喜歡下面的XSD有一個類型層次結構:A型 - > B型 - > C型...更改simpleType元素的限制兒童型
現在B型的定義如下:
<xs:complexType name="TypeB">
<xs:complexContent>
<xs:extension base="TypeA" >
<xs:sequence>
...
<xs:element name="ElementA" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
C型並不需要添加到B型的任何元件因此被定義一樣:
<xs:complexType name="TypeC">
<xs:complexContent>
<xs:extension base="TypeB">
</xs:extension>
</xs:complexContent>
</xs:complexType>
現在對於ElementA的Type C限制已經改變 - 它的maxIncluse應該是5而不是10.
我可以改變Type C,但改變Type B不應該破壞兼容性。 有沒有辦法在不破壞兼容性/現有層次的情況下更改限制?
Visual Studio中告訴我: '元素具有相同名稱並且在相同範圍內必須具有相同類型.'當我在類型C中使用'
MrWombat
這很奇怪。我用oXygen成功地嘗試了這個模式,並且一切正常,以驗證第一個文檔並拒絕第二個文檔。 Visual Studio背後的模式處理器是什麼? –
對不起,這是我的錯! 謝謝你的幫助! – MrWombat