Type simple dérivé

On peut créer de nouveaux types simples en dérivant des types simples existants (prédéfinis ou dérivés).

Un nouveau type simple peut être défini par :

  • Restriction : sous-ensemble des valeurs d'un type existant

  • liste : liste de valeurs d'un type existant.

  • union : choix de valeurs parmi un ensemble de types existant.

  • Extension

Un nouveau type simple est déclaré par un élément "simpleType" qui contient un élément : restriction, extension, list ou union

La déclaration d'un type simple a la forme suivante :

Syntaxe

<xsd:simpleType name="name_type"> ... </xsd:simpleType>

L'élément xsd :simpleType peut avoir un attribut name si la déclaration est globale. La déclaration du type se fait ensuite dans le contenu de l'élément xsd :simpleType.

Une restriction d'un type simple a deux aspects fondamentaux :

  • Nommer le type de base, un type simple existant.

  • Décrire les restrictions à l'aide de facettes.

DéfinitionFacette

Les Facettes sont des éléments XML Schema dont l'attribut de valeur définit la restriction indiquée par la facette. XML Schema a douze facettes pour restreindre les types simples.

Facette

Applicable au type

minInclusive

nombres et dates

maxInclusive

nombres et dates

minExclusive

nombres et dates

maxExclusive

nombres et dates

totalDigits

nombres

fractionDigits

nombres

length

string, list

minLength

string, list

maxLength

string, list

enumeration

majorité des types

pattern

majorité des types

whitespace

majorité des types

Whitespace : Spécifie comment les espaces blancs (sauts de ligne, tabulations, espaces et retours chariot) sont traités.

Exemples de définition de type simple

Restriction de type simple

1
<xsd:simpleType name="myInteger">
2
       <xsd:restriction base="xsd:integer">
3
             <xsd:minInclusive value="10000"/>
4
             <xsd:maxInclusive value="99999"/>
5
       </xsd:restriction>
6
</xsd:simpleType>
1
<xsd:simpleType name="Email">
2
         <xsd:restriction base="xsd:string">
3
                 <xsd:pattern value="(.)+@(.)+"/>
4
         </xsd:restriction>
5
</xsd:simpleType>
1
<xsd:simpleType name="USState">
2
       <xsd:restriction base="xsd:string">
3
               <xsd:enumeration value="AK"/>
4
               <xsd:enumeration value="AL"/>
5
       </xsd:restriction>
6
</xsd:simpleType>
1
<xs:simpleType name="passwordType">
2
         <xs:restriction base="xs:string">
3
               <xs:minLength value="8"/>
4
               <xs:maxLength value="12"/>
5
         </xs:restriction>
6
</xs:simpleType>

list, union et extension

L'opérateur xsd :list définit un nouveau type simple dont les valeurs sont les listes de valeurs du type simple donné par l'attribut itemType.

1
<xsd:simpleType name="phonenumber">
2
       <xsd:list itemType="xsd:unsignedByte"/>
3
</xsd:simpleType>

L'opérateur xsd :union définit un nouveau type simple dont les valeurs sont celles des types listés dans l'attribut memberTypes.

Dans l'exmple suivant, les valeurs du type "technicalmemo" sont de type "string" ou "phonenumber".

1
<xsd:simpleType name="technicalmemo">
2
     <xsd:union memberTypes="xsd:string phonenumber"/>
3
</xsd:simpleType>

Concernant l'extension d'un type simple, il s'agit ici de définir un élément contenant une valeur simple, et possédant un attribut. (voir ComplexType).