Friday, April 01, 2005

xs:extension

The elements you add in XSD extensions go after the elements in the extended complex type. So if your XSD looks like:

<xs:complexType>
<xs:sequence>
<xs:element name="BaseElement" type="xs:string/>
</xs:sequence>
</xs:complexType>

<xs:element name="TheExtension">
<xs:complexType>
<xs:complexContent>
<xs:extension base="MonitorConfig">
<xs:sequence>
<xs:element name="ExtensionElement" type="xs:string" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>

then valid XML would look like this:

<TheExtension>
<BaseElement>somevalue</BaseElement>
<ExtensionElement>someothervalue</ExtensionElement>
</TheExtension>

The extension definition looks unnecessarily complicated, but both complexType and complexContent are necessary (at least for the JAXB compiler).

No comments: