I need to extend an element in an XSD schema. In the original schema, the element is defined as:
<xsd:element name="RemarkText">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="C-Infinite">
<xsd:attribute name="IdRef" type="IDREF" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
All the examples I have seem regarding extensions seem to deal with extending types. If this was originally defined as:
<xsd:complexType name="RemarkText_Type">
<xsd:simpleContent>
<xsd:extension base="C-Infinite">
<xsd:attribute name="IdRef" type="IDREF" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:element name="RemarkText" type="RemarkText_Type"/>
Then, I think I would know what to do.
But is it possible to extend an element, rather than a type?
The redefine tag can only be used with group, attributeGroup, complexType and simpleType.
Its not possible to use it on an element.
It is not possible to extend or restrict an element either. You can extend or restrict the complexType it is based on. You can then use the new type without modifying the original element definition by adding the xs:type attribute in the xml to indicate the type complexType being used.
(source: liquid-technologies.com)
But then the XML needs to use the xsi:type=”NameExType” if you want to use the extended NameExType.
Using a graphical editor like Liquid XML Studio makes things a lot easier though.