Use o XML Schema para estender um elemento em vez de um complexType
Suponha que eu tenha algum esquema:
<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>
Isso define algum elementofoo
que tem dentro de algum elementofooElement
com o tipo string. Eu gostaria de estender agora o elementofoo
também tem um elementobarElement
e ligue para esta extensãobar
.
Para complicar as coisas, vamos supor que outra pessoa tenha definidofoo
e o esquema não pode ser alterado. Embora o exemplo aqui seja trivial, vamos supor também que o conteúdo defoo
pode ser mais complicado, e definir um novo esquema não é tão simples quanto copiar o elementofooElement
.
Efetivamente, gostaria de definir um novo esquema:
<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>
Infelizmente<xsd:extension>
'sbase
atributo só aceita argumentos do tipo XSD, não elementos. Como faço para estender um elemento? (posso estender um elemento?)