Convalida XML con XSD in Visual Studio IDE
-
01-10-2019 - |
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...)
Soluzione
Sarà necessario associare il documento XML in Visual Studio con il file XSD che avete.
-
Si dovrebbe vedere qualcosa di simile nella vostra finestra delle proprietà del documento XML:
-
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 quelloUse
con il segno di spunta verde: -
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.
-
Una volta che tutto questo è a posto, l'editor XML di Visual Studio dovrebbe evidenziare problemi con il XML nell'editor utilizzando squigglies blu:
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.