Je dois valider les fichiers XML en fonction d'un large éventail de contraintes: type et/ou format du texte de l'élément, cooccurrences, comparaisons de dates et calculs de date, ainsi que règles provenant d'une base de données (l'élément X ne peut contenir que les éléments enfants A, B et C) et je ne suis pas sûr de la façon de procéder.Validation des documents XML par rapport à un grand nombre de contraintes
L'incarnation actuelle de cette application impose ces contraintes via Perl, à travers je pense que le code Perl duplique une grande partie de la fonctionnalité que je devrais sortir de la boîte en utilisant XSD ou RELAX NG. Malheureusement, l'utilisation de l'un ou l'autre aboutirait à des messages d'erreur qui seraient cryptiques pour les utilisateurs finaux. Mapper ce message cryptique sur quelque chose d'amical semble impossible (autre que de fournir des numéros de ligne/col).
Ensuite, il y a Schematron. Cela me permet de générer des messages amicaux et de vérifier les contraintes que les langages schémas mentionnés ci-dessus ne peuvent pas. Malheureusement, la vérification de type/format et les maths de date deviennent de grands hacks de modèles XSLT.
Maintenant, je ne sais pas quoi faire. Une combinaison entre Schematron et, disons, RELAX NG, semble être la meilleure approche, mais les erreurs générées par RELAX NG rendent impossible de fournir quelque chose d'informatif à l'utilisateur final.
J'avais espéré utiliser un modèle de schéma maître qui serait modifié en fonction des règles personnalisées dans la base de données.
Est-ce que l'approche originale reste la meilleure, ou devrais-je avancer en utilisant Schematron/RELAX NG et en luttant la mise en application du format/type dans les modèles XSLT?
Les erreurs ne sont pas "fournies par RELAX NG", elles sont fournies par une implémentation particulière de cela. Lequel utilisez-vous? –
En effet. J'utilise libxml. –