Validation XML avec XSD dans Visual Studio IDE
je sais que je l'ai déjà fait, mais cela ne fonctionne pas aujourd'hui, et je ne peux trouver nulle part qui explique comment le faire. C'est peut-être mon manque de sommeil, mais je soupçonne les gremlins.
j'ai un document XML et un répertoire rempli de XSD qui le définissent. Comment configurer L'IDE visuel pour me prévenir des échecs de validation, et ensuite fournir une liste intellisense d'étiquettes et d'attributs valides dans un contexte donné?
ce que j'ai essayé:
- j'ai ajouté les XSD au projet avec le document XML.
- j'ai ajouté les XSD à la liste des schémas XML (sous XML / Schemas... élément de menu.)
- j'ai même inclus les attributs schemaLocation et noNamespaceSchemaLocation dans le document XML.
Visual Studio n'abandonne toujours aucune information utile de débogage ou d'édition. J'ai essayé 2010 et 2008 (je l'ai déjà fait en 2008 je pense)
mise à jour: j'ai demandé à un autre développeur d'essayer ceci et cela a échoué pour lui aussi. Il sait qu'il a fait avec d'autres documents XML et qu'il avait du travail. J'ai ensuite téléchargé L'éditeur de XML D'oxygène et il a fonctionné très bien sur les mêmes fichiers XML et XSD, de sorte que les fichiers semblent être très bien (ou oxygène est plus indulgente / flexible . . . )
5 réponses
Jim,
vous devez associer le document XML dans Visual Studio avec le fichier XSD que vous avez - vous devriez voir quelque chose comme cela dans votre fenêtre de propriétés du document XML:
dans L'éditeur de jeu de schéma XML (s'ouvre lorsque vous cliquez sur le (...) ellipsis dans la zone de texte" Schemas " dans la fenêtre de vos propriétés) Vous devez vous assurer que vous avez votre schéma actuel. Aussi, assurez-vous que la colonne Use
pour ce schéma est activé - si non, cliquez dessus - vous obtiendrez une liste déroulante des options, choisissez le Use
avec le crochet vert:
assurez-vous que les fenêtres de la liste des erreurs Visual Studio sont visibles (vue du menu > Liste des erreurs). Cela montrera toutes les incohérences entre les schémas XML et XSD définition.
une fois que tout cela est en place, L'éditeur XML de Visual Studio devrait mettre en évidence les problèmes avec votre XML dans l'éditeur à l'aide de Blue squigglies:
vous n'avez pas besoin d'associer manuellement les fichiers dans Visual Studio - il va automatiquement associer un fichier XML à un fichier XSD si vous les avez tous les deux ouverts, et vous avez votre namespace correctement défini.
pour définir l'espace de noms:
dans l'élément racine du fichier XML:
<Data xmlns='http://yourdomain.com/yourschema.xsd'>
...
</Data>
dans l'élément de schéma du fichier XSD:
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://yourdomain.com/yourschema.xsd"
xmlns:this="http://yourdomain.com/yourschema.xsd"
elementFormDefault="qualified">
...
</xs:schema>
Une remarque sur l'utilisation de Types dans votre schéma lorsque vous avez un targetNamespace
parce que vous spécifiez un targetNamespace
dans votre schéma, toute référence aux types définis dans le schéma devra être préfixée avec un espace de noms (c'est pourquoi nous avons ajouté l'attribut xmlns:this
dans l'élément <xs:schema />
ci-dessus).
<!-- Define the type as normal -->
<xs:complexType name="Row">
<xs:sequence>
<xs:element name="Name" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="Value" type="xs:float" minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
<!-- Use the type (note the "this:" prefix) -->
<xs:element name="Row" type="this:Row" minOccurs="0" maxOccurs="unbounded" />
un autre point d'échec ici est Windows 7" blocage " des fichiers de schéma... cliquez-droit sur le fichier xsd sur le disque, Propriétés > Général et si c'est bloqué, vous aurez un bouton "Débloquer". Cela a causé l'échec de ma validation XML dans VS2012.
est-ce que votre xsd contient un attribut" targetNamespace " /schema/@targetNamespace qui est similaire à l'espace de noms que vous référencez dans le xml?
exemple:
xsd:
xml: ...
voir aussi XML/XSD intellisense ne fonctionne pas dans Visual Studio 2010
j'ai eu ce même problème, mais VS référençait déjà mon schéma correctement. Il s'avère que le fichier que j'essayais de valider n'avait pas d'extension 'xml'. Ajouter. xml à la fin de mon nom de fichier, et la validation commencé à travailler.