Petit problème pour représenter certaines données en XSD...
J'ai un XML de ce genre :
<dossier>
<champA>a</champA>
<champB>17</champB>
</dossier>
ou
<dossier>
<champA>b</champA>
<champB>X</champB>
</dossier>
Disons en gros que si le champ "champA" a la valeur 'a', le champ "champB" va prendre une valeur numérique, sinon il est en string. J'aimerais pouvoir dire ça avec le xsd... En gros mettre un "if" sur le type B selon ce qu'il y a en A.
(dans cet exemple c'est simple, on pourrait tout résoudre en mettant un string, mais dans le cas que j'ai à traiter, c'est bcp plus complexe, donc passer par qqch de ce type est indispensable ou presque pour la lisibilité)
Je bosse avec XMLSpy, j'ai essayé déjà de lui mettre deux fois le "champB", mais au moment d'enregistrer ça me dit que c'est invalide, qu'un champ du même nom ne peut apparaître deux fois... Et même en mettant un choice de sequences, je peux pas retrouver deux fois le même nom de champ dans les différentes séquences, ça passe pas. Alors comment indiquer qu'on peut avoir à un même endroit une balise de même nom succeptible de prendre des types différents selon les cas ? Est-ce que c'est seulement possible ?
---
Et autre question qui n'a rien à voir, pour indiquer qu'un champ numérique peut être vide ? Comment faire ?
En sachant toujours que j'ai à documenter en xsd des fichiers XML fournis par une application existante, et que je ne peux donc pas modifier...
Merci d'avance pour vos réponses.
Partager