Question

Je sais que je l'ai fait avant, mais il ne fonctionne pas aujourd'hui, et je ne puis trouver nulle part qui explique comment le faire. Il pourrait être mon manque de sommeil, mais je soupçonne que gremlins.

J'ai un document XML et un répertoire complet de XSD de qui le définissent. Comment puis-je configurer l'IDE Visual jusqu'à me signaler les échecs de validation, puis fournir une liste IntelliSense des balises valides et les attributs dans un contexte donné?

Ce que j'ai essayé:

  • J'ai ajouté de la XSD au projet avec le document XML.
  • J'ai ajouté les XSD à la liste pour le schéma XML (sous XML / schemas ... élément de menu.)
  • Je l'ai même inclus les schemaLocation et noNamespaceSchemaLocation attribue au document XML.

Visual Studio est toujours pas renonçons débogage utile ou des informations d'édition. J'ai essayé 2010 et 2008 (je l'ai fait avant en 2008 je pensais)

Mise à jour: J'avais un autre développeur essayer et il a échoué pour lui aussi. Il sait qu'il a fait avec d'autres documents XML et a fonctionner. Je puis téléchargé éditeur XML d'oxygène et il a bien fonctionné sur le même XML et les fichiers XSD, de sorte que les fichiers semblent être bien (ou de l'oxygène est plus tolérant / flexible...)

Était-ce utile?

La solution

Vous devrez associer le document XML dans Visual Studio avec le fichier XSD que vous avez.

  1. Vous devriez voir quelque chose comme ceci dans votre fenêtre Propriétés du document XML:

     Propriétés XML loading= schéma ">

  2. Dans l'éditeur de jeu de schéma XML (ouvre lorsque vous cliquez sur le (...) dans la zone de texte ellipsis « schèmes » dans la fenêtre Propriétés), vous devez vous assurer que vous avez votre présent schéma. Aussi, assurez-vous que la colonne de Use pour ce schéma est activé - sinon, cliquez dessus - vous obtiendrez une liste déroulante des options, choisissez celui de Use avec la coche verte:

     schéma XML Sélecteur

  3. Assurez-vous que les fenêtres visuelles de la liste des erreurs de Studio est visible (menu Affichage> Liste d'erreur). Cela montrera toutes les incohérences entre XML et les définitions de schéma XSD.

  4. Une fois que tout cela est en place, l'éditeur XML Visual Studio devrait mettre en évidence des problèmes avec votre XML dans l'éditeur en utilisant squigglies bleu:

     Exemple d'erreur

Autres conseils

Vous ne devez associer manuellement les fichiers dans Visual Studio - il sera automatiquement correspondre un fichier XML dans un fichier XSD si vous les avez tous deux ouverts, et vous avez votre espace de nom défini correctement.

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 note 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 à des types définis dans le schéma devra être préfixé avec un espace de noms (ce qui est la raison pour laquelle 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 est ici Windows 7 « bloquer » les fichiers de schéma ... clic droit sur le fichier xsd sur le disque, Propriétés> Général et si elle est bloquée, vous aurez un bouton « Débloquer ». Cela a été à l'origine de mon validation XML à l'échec dans VS2012.

Votre xsd contiennent un attribut "targetNamespace" /schema/@targetNamespace qui est similaire à l'espace de noms que vous faites référence dans le fichier XML?

Exemples:

XSD :

<xs:schema .... targetNamespace="Datafile.xsd" ... >

XML :

<data xmlns="Datafile.xsd" >...</data>

Voir aussi: XML / XSD IntelliSense ne fonctionne pas dans Visual studio 2010

J'ai eu ce même problème, mais VS faisait référence correctement déjà mon schéma. Il se trouve que le fichier que je tentais de validate n'a pas eu une extension de fichier « xml ». Ajouté .xml à la fin de mon nom, et la validation a commencé à travailler.

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