Date vide validée par schéma XSD

Date vide validée par schéma XSD - XML/XSL - Programmation

Marsh Posté le 28-02-2011 à 16:32:37    

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
Reply

Marsh Posté le 28-02-2011 à 16:32:37   

Reply

Marsh Posté le 28-02-2011 à 17:14:52    

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é!  --
Reply

Marsh Posté le 28-02-2011 à 17:18:24    

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
Reply

Marsh Posté le 28-02-2011 à 17:48:48    

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é!  --
Reply

Marsh Posté le 01-03-2011 à 09:30:45    

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
Reply

Marsh Posté le 01-03-2011 à 11:14:21    

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é!  --
Reply

Marsh Posté le 01-03-2011 à 11:34:35    

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
Reply

Sujets relatifs:

Leave a Replay

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