L'élément choice propose une structure de choix entre plusieurs éléments possible.

<xsd:choice 
  id = ID 
  maxOccurs = (nonNegativeInteger | unbounded)  : 1
  minOccurs = nonNegativeInteger : 1
  {tout attribut ayant un espace de noms 
        différent de celui du schéma...}>
  Contenu : (annotation?, (element | group | choice | séquence | any)*)
</xsd:choice>

L'élément choice possède plusieurs attributs destinés à définir le connecteur de choix.

Attributs Description
id précise un identificateur unique pour l'élément.
maxOccurs précise le nombre d'occurrences maximum de l'élément. Par défaut, ce nombre est égal à 1.
minOccurs précise le nombre d'occurrences minimum de l'élément. Par défaut, ce nombre est égal à 1.

L'élément choice ne peut être inclus que dans les éléments suivants :

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">
  <element_enfant id="02">
  <element_choix_1>10</element_choix_1>
  </element_enfant>
  <element_enfant id="01">
  <element_choix_2>10</element_choix_2>
  </element_enfant>
</element_racine>

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema 
         xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
         elementFormDefault="qualified">
  <xsd:element name="element_choix_1" type="xsd:integer"/>
  <xsd:element name="element_choix_2" type="xsd:integer"/>

  <xsd:complexType name="element_enfantType">
  <xsd:choice>
      <xsd:element ref="element_choix_1"/>
      <xsd:element ref="element_choix_2"/>
  </xsd:choice>
  <xsd:attribute name="id" use="required">
      <xsd:simpleType>
        <xsd:restriction base="xsd:NMTOKEN">
        <xsd:enumeration value="01"/>
        <xsd:enumeration value="02"/>
        </xsd:restriction>
      </xsd:simpleType>
  </xsd:attribute>
  </xsd:complexType>

  <xsd:element name="element_racine">
  <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="element_enfant" 
                      type="element_enfantType" 
                      maxOccurs="unbounded"/>
      </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
</xsd:schema>