2010-10-29 5 views
0

Mon exigence est de valider un XML avec deux stratégies de validation différentes. Dans la stratégie 1, le xml doit avoir des instances d'un élément avec certains attributs obligatoires. Dans la stratégie 2, le xml doit avoir des instances du même élément avec différents attributs requis. Ainsi, l'idée est qu'il existe deux ensembles différents du même élément avec un ensemble différent d'attributs requis pour chaque ensemble. Y at-il un moyen de valider cela en utilisant un seul xsd. Ma seule solution jusqu'à présent est d'utiliser deux fichiers xsd différents pour valider.Validation de différents ensembles d'attributs requis dans un schéma XML

Exemple 1:

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <element firstName="something"/> <!--required --> 
    <element lastName="something"/> <!-- required --> 
<element phoneNumber="something"/> <!-- not required --> 
<root> 

Exemple 2:

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <element firstName="something"/> <!-- not required --> 
    <element lastName="something"/> <!-- required --> 
<element phoneNumber="something"/> <!-- required --> 
<root> 

peut la validation par xsd être atteint?

+0

Je pense que vous ne pouvez pas, parce que vous essayez de déclarer deux schémas différents pour le même élément et c'est ambigu. –

Répondre

0

Rick,

J'ai eu des problèmes similaires à résoudre dans nos applications, et notre meilleure solution est d'utiliser des schémas modularisation. Donc, au lieu d'avoir Schema1 et Schema2 qui sont des doublons, sauf pour la partie qui est différente, vous avez Schema1 et Schema2 qui n'incluent que les contraintes qui sont différentes, et tous deux importent un Schema3 commun qui définit les contraintes qui sont partagé.

Un exemple de cette procédure est here. Il ne vous donne pas un seul XSD, mais il réduit la duplication, ce qui facilite la maintenabilité et évite la possibilité d'erreurs lorsque vous avez beaucoup de duplication entre Schema1 et Schema2.

L'inconvénient est que les schémas deviennent un peu plus difficiles à suivre pour les humains, car les définitions sont réparties entre différents fichiers.

+0

D'accord, la solution utilisant plusieurs schémas est plus difficile à communiquer, et je veux rendre le service aussi facile à consommer que possible. Je pense que l'approche que je vais prendre utilise l'élément '' pour fléchir entre les deux ensembles de contraintes. Merci pour la contribution. – rick

Questions connexes