J'essaie de développer un schéma qui va valider certains fichiers XML existants dont j'ai hérité. J'aimerais que le schéma fasse autant de travail de validation que possible. Le défi est que les attributs et les éléments dépendent des valeurs des autres attributs.Création d'un schéma XML avec des attributs et des éléments subordonnés à d'autres attributs
Les données réelles sont assez abstraites, j'ai donc créé quelques exemples simples. Disons que j'ai les fichiers XML suivants:
<?xml version="1.0" encoding="UTF-8"?>
<Creature type="human" nationality="British">
<Address>London</Address>
</Creature>
<?xml version="1.0" encoding="UTF-8"?>
<Creature type="animal" species="Tiger">
<Habitat>Jungle</Habitat>
</Creature>
Si « type » est « humaine » de la créature, je vais avoir un attribut « nationalité » et un élément enfant « Adresse ». Si le "type" de la créature est "animal", j'aurai un attribut "espèce" et un élément enfant "Habitat". Aux fins de cet exemple, un «humain» avec une «espèce» ou un «habitat» serait invalide - tout comme un «animal» avec une «nationalité» ou une «adresse». Si "Créature" n'était pas l'élément racine, je pourrais probablement avoir deux choix différents de "Créatures" en dessous de l'élément racine, mais je ne vois pas comment je peux faire cela quand "Créature" est l'élément racine. .
Est-il possible de créer un schéma pour ces fichiers qui ne correspondrait qu'à des documents valides? Si oui, comment pourrais-je m'y prendre?
Merci pour la réponse très précise et excellent exemple dans votre solution. Vous venez de me sauver des heures de recherche sur Internet –
Bon exemple! Pourriez-vous expliquer pourquoi 'xsi: type' fonctionne alors que' type' ne figure pas dans les fichiers XML? – Praetorian
Excellent paradigme! Mais dans ma spécification de niveau de jeu XML, * I * veut spécifier la spécification, et non XML Schema (un je préfère "type" et pas "xsi: type"). Alors, est-ce une faiblesse du schéma XML? – Chameleon