Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1354 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  Date vide validée par schéma XSD

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Date vide validée par schéma XSD

n°2060089
rufo
Pas me confondre avec Lycos!
Posté le 28-02-2011 à 16:32:37  profilanswer
 

Bonjour,
J'ai un XML que je souhaite faire valider par un XSD. Seulement, dedans, j'ai une balise contenant une date (format anglais), validée donc dans le xsd par un type xs:date. Seulement, comme ma balise est vide, j'ai une erreur du parser :( Apparemment, c'est connu et, si je ne veux pas modifier mon XML, il faut que je crée dans mon xsd un type "datevide" comme expliqué ici : http://www.developpez.net/forums/d [...] date-vide/
 
Effectivement, ça marche mais y'aurait pas plus simple?
 
Merci :)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
mood
Publicité
Posté le 28-02-2011 à 16:32:37  profilanswer
 

n°2060104
gilou
Modérateur
Modzilla
Posté le 28-02-2011 à 17:14:52  profilanswer
 

Ben c'est pourtant clair: Tu peux pas valider un XML pas conforme au XSD, sinon, c'est plus de la validation.
Alors il faut choisir:
- Soit tu touches pas au XSD, et tu modifie le XML (tu mets pas de balise vide quand leur type ne peut pas être vide au vu du XSD)
- Soit tu touches pas au XML et tu modifies le XSD pour accepter des balises vides la ou tu avais des balises de type xs:date
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2060107
rufo
Pas me confondre avec Lycos!
Posté le 28-02-2011 à 17:18:24  profilanswer
 

Dans mon cas, le fait que certaines balises contenant une date peuvent être vide est normal (pas de date positionnée) et du coup, je cherchais à faire en XSD une validation de cette balise de manière à autoriser une date ou vide...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2060120
gilou
Modérateur
Modzilla
Posté le 28-02-2011 à 17:48:48  profilanswer
 

J'avais bien compris, et donc c'est bien au niveau de XSD qu'il faut faire la modification.
Normalement, le plus logique serait en effet de passer par un attribut nillable = "true" dans le XSD, mais pour que cela soit pris en compte, il faudrait alors avoir un attribut xsi:nil="true" dans le XML.  
IMHO, si tu ne peux directement modifier le XML, il serait peut être plus simple de procéder ainsi:
1) modifier le XSD pour ajouter nillable = "true" ou il faut
2) écrire un fichier de transfo XSLT qui rajoute l'attribut xsi:nil="true" sur ces éléments de type date vides
3) valider par le XSD le fichier XML transformé par XSLT  
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2060210
rufo
Pas me confondre avec Lycos!
Posté le 01-03-2011 à 09:30:45  profilanswer
 

Le coup du xsi:nil="true" dans le xml, j'avais vu cette solution aussi mais m'obligeais d'une manière ou d'une autre à modifier le xml, chose qui me paraissait plus compliqué que la solution que j'avais trouvée. Du reste, la solution que tu proposes me semble perso, plus complexe que celle que j'ai trouvée...
 
Merci en tout cas de m'avoir confirmé qu'il n'y avait pas de solution "vraiment simple".


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2060300
gilou
Modérateur
Modzilla
Posté le 01-03-2011 à 11:14:21  profilanswer
 

L'intérêt de la solution que je préconise, c'est qu'elle ne change pas le type de base de ton élément: c'est un xs:date et rien d'autre. Un type simple, de base.
L'autre solution revient à changer le type de base de ton élément: ce n'est plus un type simple, mais un nouveau type, complexe, et donc plus opaque.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2060314
rufo
Pas me confondre avec Lycos!
Posté le 01-03-2011 à 11:34:35  profilanswer
 

ok, je vois. Merci de la précision.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  Date vide validée par schéma XSD

 

Sujets relatifs
Sous etat non imprimé quand requête source est vide[VBA] Dernière ligne vide dans un fichier excel vide
verifier si champ videNoméro de jours de l'année a partir d'une date
Calendrier - Selection de date depuis un pop-upHTTP_REFERER vide ?
Problème comparaison de date[C++] Date limite d'utilisation d'un logiciel
[resolu] Question sur Order by avec une date en francaisConversion date
Plus de sujets relatifs à : Date vide validée par schéma XSD


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR