Użyj schematu XML, aby rozszerzyć element zamiast typu złożonego

Załóżmy, że mam jakiś schemat:

<xsd:schema ...>
    <xsd:element name="foo">
         <xsd:complexType>
             <xsd:sequence>
                 <xsd:element name="fooElement" type="xs:string" />
             </xsd:sequence>
         </xsd:complexType>
    </xsd:element>
</xsd:schema>

To definiuje jakiś elementfoo który ma w sobie jakiś elementfooElement z ciągiem typu. Chciałbym teraz rozszerzyć elementfoo mieć także elementbarElement i nazwij to rozszerzeniebar.

Aby skomplikować sprawy, załóżmy, że zdefiniował to ktoś innyfoo a schematu nie można zmienić. Chociaż przykład tutaj jest trywialny, załóżmy również, że zawartośćfoo może być bardziej skomplikowane, a zdefiniowanie nowego schematu nie jest tak proste, jak kopiowanie elementufooElement.

W efekcie chciałbym zdefiniować nowy schemat:

<xsd:schema xmlns:fns="otherschema" ...>
    <xsd:import namespace="otherschema" />
    <xsd:element name="bar">
         <xsd:complexContent>
             <xsd:extension base="fns:foo">
                 <xsd:sequence>
                     <xsd:element name="barElement" type="xs:string" />
                 </xsd:sequence>
             </xsd:extension>
         </xsd:complexContent>
    </xsd:element>
</xsd:schema>

Niestety<xsd:extension>jestbase atrybut akceptuje tylko argumenty typu XSD, a nie elementy. Jak rozszerzyć element? (czy mogę rozszerzyć element?)

questionAnswers(1)

yourAnswerToTheQuestion