Domanda

Lo so che ho fatto prima, ma non è oggi funziona, né posso trovare da nessuna parte che spiega come farlo. Potrebbe essere la mia mancanza di sonno, ma ho il sospetto gremlins.

Ho un documento XML e una directory piena di XSD di che lo definiscono. Come faccio a impostare l'IDE di Visual fino a informare me di errori di convalida, e quindi fornire un elenco di IntelliSense di tag e attributi validi in un dato contesto?

Quello che ho cercato:

  • Ho aggiunto il XSD di al progetto con il documento XML.
  • Ho aggiunto il XSD del all'elenco XML Schema (sotto schemi ... voce di XML / menu).
  • Ho anche incluso lo schemaLocation e noNamespaceSchemaLocation attribuisce al documento XML.

Visual Studio ancora non si arrende qualsiasi debug utile o la modifica delle informazioni. Ho provato sia nel 2010 e nel 2008 (ho fatto prima nel 2008 ho pensato)

Aggiornamento: che avevo un altro sviluppatore provare questo ed è riuscito anche per lui. Sa che ha fatto con altri documenti XML e aveva funzionare. Ho poi scaricato ossigeno editor XML e ha funzionato bene sullo stesso file XSD XML e, in modo che i file sembrano essere bene (o di ossigeno è più indulgente / flessibili...)

È stato utile?

Soluzione

Sarà necessario associare il documento XML in Visual Studio con il file XSD che avete.

  1. Si dovrebbe vedere qualcosa di simile nella vostra finestra delle proprietà del documento XML:

     Proprietà XML loading= Schema ">

  2. l'editor set schema XML (si apre quando si fa clic sul (...) puntini di sospensione nella casella di testo "schemi" nella finestra delle proprietà) è necessario assicurarsi di avere lo schema attuale. Inoltre, assicurarsi che la colonna Use per tale schema è abilitato - in caso contrario, fare clic su di esso - si otterrà un elenco a discesa di opzioni, scegliere quello Use con il segno di spunta verde:

     Schema XML Selector

  3. Assicurati che Windows Visual lista degli errori di Studio è visibile (menu Visualizza> Elenco errori). Questo mostrerà tutte le incongruenze tra XML e definizioni schema XSD.

  4. Una volta che tutto questo è a posto, l'editor XML di Visual Studio dovrebbe evidenziare problemi con il XML nell'editor utilizzando squigglies blu:

     Esempio di errore

Altri suggerimenti

Non è necessario associare manualmente i file in Visual Studio - lo farà automaticamente corrispondere un file XML in un file XSD se li avete entrambi aperti, e hai il tuo spazio dei nomi definito correttamente.

Per definire lo spazio dei nomi:

Nel elemento radice del file XML:

<Data xmlns='http://yourdomain.com/yourschema.xsd'>
    ...
</Data>

Nel elemento dello schema del file 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>

Una nota sull'uso Tipi nello schema quando si ha un targetNamespace

Perché si specifica un targetNamespace nello schema, dovrà eventuali riferimenti a tipi definiti nello schema per essere preceduto da uno spazio dei nomi (che è il motivo per cui abbiamo aggiunto l'attributo xmlns:this nell'elemento <xs:schema /> sopra).

<!-- 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 altro punto di errore qui è Windows 7 "blocco" file di schema ... destro del mouse sul file XSD sul disco, Proprietà> Generale e se è bloccato, avrete un pulsante "Sblocca". Questo stava causando il mio convalida XML a fallire in VS2012.

Il tuo XSD contengono un "targetNamespace" /schema/@targetNamespace attributo che è simile allo spazio dei nomi si fa riferimento nel xml?

Esempi:

XSD :

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

XML :

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

Vedere anche: XML / XSD IntelliSense non funziona in Visual Studio 2010

Ho avuto questo stesso problema, ma ero VS riferimento a mio schema correttamente già. Si scopre che il file che stavo cercando di convalidare non hanno un'estensione file 'xml'. Aggiunta .xml alla fine del mio nome, e la convalida ha iniziato a lavorare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top