Question

Mon exigence est de valider un xml avec deux stratégies de validation différentes. Dans la stratégie 1, le XML est nécessaire d'avoir des cas d'un élément avec certains attributs requis. Dans la stratégie 2, le XML est nécessaire pour avoir des instances du même élément avec différents attributs requis. Donc, l'idée est qu'il ya deux ensembles du même élément différent avec ensemble différent d'attributs requis pour chaque ensemble. Est-il un moyen de valider cette utilisation d'une seule xsd. Ma seule solution à ce jour est d'utiliser deux fichiers différents XSD pour valider.

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?

Était-ce utile?

La solution

Rick,

J'ai eu des problèmes similaires à résoudre dans nos applications, et notre meilleure solution est d'utiliser des schémas modularisé.

Ainsi, au lieu d'avoir Schema1 et Schema2 qui sont des doublons de l'autre, à l'exception de la partie qui est différent, vous avez Schema1 et Schema2 qui ne comprennent que les contraintes qui sont différentes, et à l'importation comme une schéma3 commune qui définit les contraintes qui sont partagées .

Un exemple de la façon de le faire est .

Il ne vous donne pas un XSD, mais il ne réduit les doubles emplois, il aide à la maintenabilité et permet d'éviter les risques d'erreurs rampants lorsque vous avez beaucoup de chevauchement entre Schema1 et Schema2.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top