Les contraintes indiquent que les valeurs d'un élément doivent être uniques au sein de leur portée spécifiée. Dans un schéma, une contrainte est déclarée avec la balise <unique>, <key> ou <keyRef>. Les contraintes ne sont disponibles que dans un modèle conçu pour XSD.
Une contrainte Unique - spécifie qu'une valeur (ou un jeu de valeurs) d'un élément ou d'un attribut doit être unique ou nul dans une portée spécifiée. Par exemple :
Schéma généré :
La contrainte d'unicité UNIQUENUM, définie sur l'élément projet, spécifie que l'attribut numSalarié doit être unique ou nul dans l'élément salarié.
Une contrainte Key - spécifie qu'une valeur (ou un jeu de valeurs) d'un élément ou d'un attribut doit être une clé dans une portée spécifiée ; la donnée doit être unique, non nulle et systématiquement présente dans une portée spécifiée. Par exemple :
Schéma généré :
La contrainte de clé codeCle, définie sur l'élément projet, spécifie que l'attribut code doit être unique, non nul et systématiquement présent dans l'élément produit.
Une contrainte KeyRef - spécifie qu'une valeur (ou un jeu de valeurs) d'un élément ou d'un attribut correspond à la valeur d'une clé ou d'une contrainte d'unicité spécifiée. Une keyRef est une référence à une clé ou une contrainte d'unicité. Par exemple :
Schéma généré :
La contrainte keyRef KEYREF_UNIGOLD, définie sur l'élément produit, par référence à la contrainte d'unicité UNIGOLD, spécifie que l'attribut gold doit être unique ou nul dans l'élément composant_2, et unique ou nul dans l'élément composant_1.