Comment valider XML à l'encontre de plusieurs fichiers XSD?
J'ai besoin de valider plusieurs XML fichiers contre donné XSD fichiers. Le problème est que XSD est composé de deux fichiers. Ils sont imbriqués, même si je sais qui est le premier ("parent" des autres). Dans le XML fichier que j'ai utiliser des espaces de noms de définir dans quel XSD la childnode est défini (<CBIBdySDDReq xmlns="urn:CBI:xsd:CBIBdySDDReq.00.00.06" xmlns:msg="urn:CBI:xsd:CBISDDReqLogMsg.00.00.06">
).
Je suis à l'aide de XMLTools plugin pour Notepad++ pour les autres tests, mais il n'est pas en mesure de trouver et de valider à l'encontre de ces XSD fichiers, cause je ne peux que donner un XSD pour la validation en tant que paramètre.
Est-il un outil qui est capable de tester mon généré XML fichiers contre plus d'un XSD fichiers?
Vous devez vous connecter pour publier un commentaire.
Vous devez vous considérer comme chanceux que vous n'obtenez pas fortement downvoted... si seulement parce que les outils qui sont à faire des choses (recommandations) sont en dehors du champ d'application ici...
Néanmoins, si c'est sur la façon de réaliser ce que vous avez besoin de l'aide de l'outil que vous utilisez déjà... et pour qui j'ai vu beaucoup de problèmes signalés sur le SI... alors une approche qui serait de travailler à tout moment quelqu'un a la limitation de l'être en mesure de fournir un seul fichier XSD... est de créer un tel fichier XSD qui sous importer tous les autres fichiers XSD que vous avez besoin référencés.
Ceci est un exemple d'un talon XSD qui pourrait fonctionner dans votre cas:
où:
(a) est la valeur que vous voyez dans l'attribut targetNamespace de l'xsd:schema vous souhaitez référencés; si il n'y a pas targetNamespace, puis supprimer l'attribut d'espace de noms (et ajouter un targetNamespace contenant une certaine valeur factice pour le stub XSD)
(b) l'emplacement du fichier contenant le XSD vous le souhaitez pour référence. Commencez par utiliser le chemin d'accès complet ici; que vous en apprendre davantage sur XSD ou votre outil, vous pouvez arriver à la conclusion qu'il est préférable, si pris en charge par votre outil, de fournir l'URI relatif, qui est entre l'emplacement de votre "stub" XSD (c'est vraiment un "agrégateur") et les autres référencé XSD. Uri relatifs plus favorables en termes de déplacer vos trucs autour (comme une unité entière, comme dans les compresser tous vos fichiers et de les envoyer à quelqu'un d'autre). Un exemple... si les fichiers sont dans le même dossier, il vous suffit de mettre ici le nom du fichier.
Ajouter un xsd:import ligne pour chacune des XSDs qui ne sont pas "accessible" à tous les autres XSDs, ou que votre outil semble se plaindre du non-accessible.
Je tiens à souligner, il existe une autre méthode pour y parvenir. Cependant, je dois d'abord dire que je crois que Notepad++'s schéma de validation de l'outil est... le buggy, et donc cette méthode que je vous fournis ne fonctionnent pas avec Notepad++'s XMLTools plugin. Normalement, vous devriez être en mesure de déclarer plusieurs espaces de noms et de leurs correspondants des fichiers de schéma dans le fichier XML de l'élément racine, comme suit:
L'exemple ci-dessus est similaire à celui présenté à la page 454 de O'Reilly XML En un Mot.
Dans ce cas, lorsque vous exécutez la validation dans Notepad++, vous n'avez pas à sélectionner la cible de fichier XSD pour la validation parce que Notepad++ détecte votre schemaLocation déclaration et exécute la validation à l'aide que. Cependant, il semble que Notepad++ ne vérifier que la dernière déclaré fichier de schéma dans l'attribut schemaLocation. Donc, dans mon exemple, Notepad++ permettra de valider votre fichier XML seulement à l'encontre de B. xsd et, inévitablement, de générer des erreurs. La solution est une Petru mentionne: pour importer A. xsd en B. xsd par "l'importation" de la déclaration.
Si vous utilisez un plus robuste outil XML, vous risquez de ne pas exécuter ce problème. Par exemple, OxygenXML gère cela très bien, aussi longtemps que vous le laisser détecter les fichiers XSD sur son propre et ne pas le forcer à valider à l'égard d'une XSD.