Я доволен повторением этого вопроса в первый раз, когда его спросили неправильно.XSD и полиморфизм
У меня есть это:
<xsd:complexType name="A">
<xsd:sequence>
<xsd:element name="options" type="options"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="B">
<xsd:complexContent>
<xsd:element name="options" type="ex_options"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="options">
<xsd:sequence>
...some options
</xsd:sequence>
</xsd:element>
<xsd:complexType name="ex_options">
<xsd:complexContent>
<xsd:extension base="options">
<xsd:sequence>
...some more options
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:element>
Так в основном у меня есть класс А с внутренним классом вариантов класса B наследует от класса A, и я хочу B.options наследовать от A.options, так что, когда мы делать webservices нам нужно только передать a, и когда мы вызываем getOptions, он вернет правильный объект B.options. В настоящее время с тем, как стоит xsd, я получаю сообщение о том, что в группе модели появляются несколько элементов с параметрами имени с разными типами. Ошибки находятся в типе B.
Ваш пример XSD не является корректным (исключая ... некоторые варианты ввода). Я предположил, что это пример того, что вы пробовали. Прочитав ваш ответ ниже, я получаю его сейчас. то, что вам кажется нужным, это два класса, где B расширяет A, а содержимое B расширяет содержимое A. – 2008-10-16 16:48:19