本质上我想这样做:
<xs:complexType name="test1">
<xs:sequence>
<xs:element name="test1Value"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="test2">
<xs:complexContent>
<xs:extension base="tns:test1">
<xs:sequence>
<xs:element name="test2Value"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="refer1">
<xs:sequence>
<xs:element name="refer1Value" type="tns:test1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="refer2">
<xs:complexContent>
<xs:restriction base="tns:refer1">
<xs:sequence>
<xs:element name="refer1Value" type="tns:test2"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
通常,您可以通过添加 xsi:type 来定义“test1”时插入“test2”实例,以便正确解析。但是问题是,我可以强制 - 对于特定的子类型 refer2 - 你必须使用限制发送 test2 类型吗?
这是否仍然需要设置 xsi:type 是一个不同的(尽管很有趣)问题。
请注意,与上一个问题(限制 XML Schema 元素以包含更具体的类型)不同,目的不是使用自定义标记来指示可以通过选择或替换组实现的更具体的子类型,而是使用 xsi:type表示特定的亚型。