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éfinition : Facette
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
<xsd:simpleType name="myInteger">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="10000"/>
<xsd:maxInclusive value="99999"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Email">
<xsd:restriction base="xsd:string">
<xsd:pattern value="(.)+@(.)+"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="USState">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="AK"/>
<xsd:enumeration value="AL"/>
</xsd:restriction>
</xsd:simpleType>
<xs:simpleType name="passwordType">
<xs:restriction base="xs:string">
<xs:minLength value="8"/>
<xs:maxLength value="12"/>
</xs:restriction>
</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.
<xsd:simpleType name="phonenumber">
<xsd:list itemType="xsd:unsignedByte"/>
</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".
<xsd:simpleType name="technicalmemo">
<xsd:union memberTypes="xsd:string phonenumber"/>
</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).