[C# / XML] Validation XML d'une date sous .Net 1.1

Validation XML d'une date sous .Net 1.1 [C# / XML] - C#/.NET managed - Programmation

Marsh Posté le 13-12-2007 à 10:57:22    

Bonjour à tous.  :hello:  
 
J'ai une question relative au type 'Date' dans un XML.
Je recupere et valide une chaine XML (recue en paramètre de web service) contenant un champ de type 'date'.
Or j'ai recu aujourd'hui une XML avec un champ de type date non renseigné, qui a entrainé l'erreur suivante dans le validate:
 

Code :
  1. The 'ApplicationDate' element has an invalid value according to its data type. An error occurred at , (8, 10)


 
La portion de la chaine XML en question :

Code :
  1. <ApplicationDate />


L'existence du champ <ApplicationDate> est obligatoire dans le fichier XML (pas de minOccurs=0).
 
La portion du XSD "validateur"

Code :
  1. <xs:element name = "ApplicationDate" type = "xs:date"/>


avec xs :

Code :
  1. <xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema"


 
Donc vu l'erruer, si j'ai bien compris, ce champ doit être obligatoirement rempli par une valeur. Et si aucune date ne peut être renseignée, une 'date null' doit être positionné. Mais comment specifier une 'date null' (pas de date) dans le type 'date' ? Je pensais à 0001-01-01 mais est ce 'officiellement' la valeur 'sans valeur' du  type date ?
 
En gros, si on fait une analogie avec 'String', je recherche le "" (empty string) du type date  
 
Si quelqu'un s'y connait la dessus, je suis preneur.  :hello:  

Reply

Marsh Posté le 13-12-2007 à 10:57:22   

Reply

Marsh Posté le 17-12-2007 à 11:50:59    

Je vote pour DateTime.MinValue !


---------------
H. - 48h en fiat et j'ai déjà perdu la maitrise de mon argent
Reply

Marsh Posté le 30-12-2007 à 11:29:15    

absolument pas.
Suffit de mettre un "minOccurs=0" dans ton xml et de ne pas mentionner la balise ou de la laisser vide tout simplement. (en tout cas en JAVA ça marche sans erreur).

Reply

Marsh Posté le 16-01-2008 à 15:54:02    

Juste en passant...
 
Mise à part si on travaille en ANSI, string.Empty n'a aucun rapport avec NULL.
 
"" est la valeur "vide", tandis que NULL est la valeur "non rempli".
 
En gros, t'as une fiche "utilisateur".
Le champ "Second prénom".
Si l'utilisateur n'en a pas, alors tu mettras "" afin de dire qu'il n'en a pas.
Et NULL si tu ne lui a jamais posé la question, et que tu ne sais pas s'il en a un ou non.
 
Ca n'a RIEN à voir.
 
La plupart des langages font bien la différence. NULL = Pointeur vers l'adresse 0, tandis que "vide" = pointeur valide vers une zone sans valeur (chaîne de longueur 0 par exemple).
 
La différence entre "pas de valeur" (ou valeur vide) et NULL est flagrande lorsqu'on travaille avec des nombres, pour une moyenne par exemple :
 
MOYENNE(10, 15, 0) = (10 + 15 + 0) / 3
MOYENNE(10, 15, NULL) = (10 + 15) / 2


Message édité par MagicBuzz le 16-01-2008 à 15:57:19
Reply

Sujets relatifs:

Leave a Replay

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