Supponiamo ho qualche schema:Utilizzare XML Schema di estendere un elemento piuttosto che un complexType
<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>
Questo definisce qualche elemento foo
che ha al suo interno un elemento fooElement
con tipo stringa. Vorrei ora estendere l'elemento foo
per avere anche un elemento barElement
e chiamare questa estensione bar
.
Per complicare le cose, supponiamo anche che qualcun altro abbia definito foo
e che lo schema non possa essere modificato. Sebbene l'esempio qui sia banale, assumiamo anche che il contenuto di foo
potrebbe essere più complicato e che la definizione di un nuovo schema non è tanto semplice quanto la copia dell'elemento fooElement
.
In effetti, mi piacerebbe definire un nuovo schema:
<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>
Purtroppo <xsd:extension>
's base
attributo accetta solo argomenti di tipo XSD, non elementi. Come estendere un elemento? (Posso estendere un elemento?)
Grande domanda, mi piacerebbe fare la stessa identica cosa - e sono incredulo che sembra impossibile. Pazzo! –