XML Schema extension element

Definition and usage

The extension element extends the elements of simpleType or complexType.

Element information

Occurrence Once
Parent element complexContent
Content annotation, attribute, attributeGroup, anyAttribute, choice, all, sequence, group

Syntax

<extension
id=ID 
base=QName
any attributes
>
(annotation?,((group|all|choice|sequence)?,
((attribute|attributeGroup)*,anyAttribute?)))
</extension>
Attributes Description
id Optional. Specifies the unique ID of the element.
base Required. Specifies the name of the built-in data type, simpleType, or complexType element.
xml:lang Optional. Specifies the language used in the content.

(? Symbol declarations within the extension element, which can appear zero or once, * indicates that the element can appear zero or more times.)

Voorbeeld

Voorbeeld 1

Het volgende voorbeeld voegt een attribuut toe om een bestaande simpleType te extentiëren:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="size">
  <xs:restriction base="xs:string">
    <xs:enumeration value="small" />
    <xs:enumeration value="medium" />
    <xs:enumeration value="large" />
  </xs:restriction>
</xs:simpleType>
<xs:complexType name="jeans">
  <xs:simpleContent>
    <xs:extension base="size">
      <xs:attribute name="sex">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="male" />
            <xs:enumeration value="female" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:extension>
  </xs:simpleContent>
</xs:complexType>
</xs:schema>

Voorbeeld 2

Het volgende voorbeeld voegt drie elementen toe om een bestaande complexType-element te extentiëren:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="employee" type="fullpersoninfo"/>
<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="fullpersoninfo">
  <xs:complexContent>
    <xs:extension base="personinfo">
      <xs:sequence>
        <xs:element name="address" type="xs:string"/>
        <xs:element name="city" type="xs:string"/>
        <xs:element naam="country" type="xs:string"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>
</xs:schema>