[JAXB / XJC] Surcharge d'un élément de schéma XSD
Bonjour,
Je dois traiter un flux de données XML pour lequel on me fournit un schéma XSD.
Ce serait parfait si le flux était conforme à son XSD mais c'est loin d'être le cas (obligé de prendre en compte tout un tas d'anomalies).
Par contre, dans le XSD j'ai un élément DATENAISSANCE de type xsd:date pour lequel le type xsd:string est en réalité nécessaire.
Si tel est le cas, c'est tout simplement parce que le flux contient des valeurs pour cet élément qui ne sont pas des dates valides (ex : 32/13/1950, du fait que certaines personnes ne soient pas en mesure de connaître leur date de naissance exacte).
Solution actuelle : modifier le fichier XSD, en remplaçant date par string, puis générer mes classes Java à l'aide de xjc, rendant ainsi possible le parsing des dates invalides.
Si le schéma n'évoluait pas, ce ne serait pas bien grave mais ce n'est pas le cas. Ce qui veut dire qu'à chaque nouveau schéma reçu, il ne faut pas oublier de rectifier la définition de l'élément DATENAISSANCE...
Plusieurs solutions s'offrent donc à moi :
- Rouspéter assez fort pour que le XSD soit fourni de manière cohérente avec ce qui se trouve dans le flux (hors de porté à court terme je pense...)
- Wrapper ou surcharger le XSD d'origine avec un XSD supplémentaire dans lequel l'élément en question est de type string.
- Trouver un moyen pour que la parsing JAXB parse malgré tout l'élément DATENAISSANCE, au lieu de renvoyer null lorsque la date n'est pas valide.
- Une autre solution à laquelle je n'aurais pas pensé...
Actuellement je me concentre sur la solution 2 car il me semble être la plus facile à mettre en œuvre.
La question est donc : Est-ce faisable de surcharger la définition d'un élément XSD ?
Sinon, je suis preneur d'autres suggestions.
Merci de votre aide.