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?)