L'élément union permet à un élément ou à un attribut XML d'être une ou plusieurs instances d'un type de données formé par la réunion de plusieurs types atomiques ou listes.

<xsd:union 
  id = ID 
  memberTypes = Liste de QName 
  {tout attribut ayant un espace de noms 
        différent de celui du schéma...}>
  Contenu : (annotation?, (simpleType*))
</xsd:union>

L'élément union possède plusieurs attributs destinés à l'identifier et à préciser des types de données.

Attributs Description
id précise un identificateur unique pour l'élément.
memberTypes spécifie une liste de noms de types de données séparés par un espace blanc.

L'élément union ne peut être inclus que dans l'élément suivant :

Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:noNamespaceSchemaLocation="c:\schema.xsd">
  <note_devoir>11</note_devoir>
  <note_devoir>AB</note_devoir>
</element_racine>

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema 
         xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
         elementFormDefault="qualified" 
         attributeFormDefault="unqualified">
  <xsd:simpleType name="note_chiffree">
  <xsd:restriction base="xsd:integer">
            <xsd:minInclusive value="0"/>
            <xsd:maxInclusive value="20"/>
          </xsd:restriction>
  </xsd:simpleType>
  
  <xsd:simpleType name="type_note">
  <xsd:union memberTypes="xsd:string note_chiffree"/>
  </xsd:simpleType>
  
  <xsd:complexType name="type_element_racine">
  <xsd:sequence>
      <xsd:element name="note_devoir" 
                    type="type_note" 
                    maxOccurs="unbounded"/>
  </xsd:sequence>
  </xsd:complexType>

  <xsd:element name="element_racine" 
                  type="type_element_racine"/>
</xsd:schema>