[XSD] Validation d'un attribut en fonction d'un autre

Validation d'un attribut en fonction d'un autre [XSD] - XML/XSL - Programmation

Marsh Posté le 08-03-2011 à 17:04:27    

Bonjour à tous,
 
voilà je me demandais comment faire un shéma de validation XSD qui respecte les règles suivantes :
- que des éléments <boisson>
- <boisson> a un attribut "moment" correspondant à l'enum {"petit-déjeuner", "déjeuner", "diner"}
- <boisson> a un attribut "type" correspondant aux enums :
  - {"thé", "café"} si "moment" vaut "petit-déjeuner"
  - {"pinard", "jus de fruits", "eau"} si "moment" vaut "déjeuner"
  - {"spiritueux", "détergent"} si "moment" vaut "diner"
 
Est-ce possible en XSD ?
 
Si non, j'ai entendu parler de Relax NG, est-ce possible avec ce dernier ?
 
Merci  :)

Reply

Marsh Posté le 08-03-2011 à 17:04:27   

Reply

Marsh Posté le 09-03-2011 à 11:04:39    

J'ajoute un exemple valide :
<boisson moment="petit-déjeuner" type="café" />
 
et un exemple invalide :
<boisson moment="petit-déjeuner" type="pinard" />
 
Merci d'avance

Reply

Marsh Posté le 09-03-2011 à 16:03:06    

Vu qu'en XML, l'ordre des attributs n'existe pas (<boisson moment="petit-déjeuner" type="café" /> et <boisson type="café" moment="petit-déjeuner" /> sont complètement équivalents en XML) tu ne dois pas pouvoir avoir de contraintes de ce type IMHO.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 09-03-2011 à 16:36:50    

Salut gilou, merci pour ta réponse :)
 
Dans le cas décrit, l'ordre des attributs n'est pas important. Ce qui l'est est l'enum choisi pour l'attribut "type", en fonction de l'attribut "moment".
 
Cela correspondrait à la table de hashage suivante :
 
{
  "petit-déjeuner" => {"thé", "café"}
  "déjeuner" => {"pinard", "jus de fruits", "eau"}  
  "diner" => {"spiritueux", "détergent"}
}

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed