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