Ich weiß, dass ich das schon einmal gemacht habe, aber es funktioniert heute nicht und ich kann auch nirgendwo etwas finden, das erklärt, wie es geht. Es könnte mein Schlafmangel sein, aber ich vermute, Gremlins.
Ich habe ein XML-Dokument und ein Verzeichnis voller XSDs, die es definieren. Wie stelle ich Visual IDE) ein, um mich über Validierungsfehler zu benachrichtigen, und stelle dann eine Intellisense-Liste gültiger Tags und Attribute in einem bestimmten Kontext bereit?
Was ich ausprobiert habe:
Visual Studio gibt immer noch keine nützlichen Debug- oder Bearbeitungsinformationen auf. Ich habe es sowohl 2010 als auch 2008 versucht (ich habe es schon 2008 gemacht, dachte ich)
pdate: Ich habe dies von einem anderen Entwickler ausprobieren lassen und es ist auch für ihn fehlgeschlagen. Er weiß, dass er es mit anderen XML-Dokumenten gemacht hat und dass es funktioniert hat. Ich habe dann den Oxygen XML-Editor heruntergeladen und er funktionierte gut mit denselben XML- und XSD-Dateien, sodass die Dateien in Ordnung zu sein scheinen (oder Oxygen ist fehlerverzeihender/flexibler..)
Sie müssen das XML-Dokument in Visual Studio mit der vorhandenen XSD-Datei verknüpfen.
In Ihrem Eigenschaftenfenster des XML-Dokuments sollte ungefähr Folgendes angezeigt werden:
Im XML-Schema-Set-Editor (wird geöffnet, wenn Sie im Eigenschaftenfenster im Textfeld "Schemas" auf die Auslassungspunkte (...) klicken) müssen Sie sicherstellen, dass Ihr Schema vorhanden ist. Stellen Sie außerdem sicher, dass die Spalte Use
für dieses Schema aktiviert ist. Wenn nicht, klicken Sie darauf. Sie erhalten eine Dropdown-Liste mit Optionen. Wählen Sie die Spalte Use
mit dem grünen Häkchen aus :
Stellen Sie sicher, dass das Fenster Fehlerliste von Visual Studio sichtbar ist (Menü Ansicht> Fehlerliste). Dadurch werden alle Inkonsistenzen zwischen XML- und XSD-Schemadefinitionen angezeigt.
Sobald dies alles erledigt ist, sollte der Visual Studio-XML-Editor Probleme mit Ihrem XML-Code im Editor mit blauen Schnörkeln hervorheben:
Sie müssen die Dateien in Visual Studio nicht manuell zuordnen - es wird automatisch eine XML-Datei mit einer XSD-Datei abgleichen, wenn Sie beide geöffnet haben und Ihren Namespace korrekt definiert haben.
So definieren Sie den Namespace:
Im Wurzelelement der XML-Datei:
<Data xmlns='http://yourdomain.com/yourschema.xsd'>
...
</Data>
Im Schemaelement der XSD-Datei:
<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>
Ein Hinweis zur Verwendung von Types in Ihrem Schema, wenn Sie einen targetNamespace haben
Da Sie in Ihrem Schema ein targetNamespace
angeben, muss allen Verweisen auf im Schema definierte Typen ein Namespace vorangestellt werden (aus diesem Grund haben wir das xmlns:this
Attribut im obigen <xs:schema />
Element).
<!-- 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" />
Ein weiterer Fehlerpunkt ist, dass Windows 7 Schemadateien blockiert. Klicken Sie mit der rechten Maustaste auf die XSD-Datei auf der Festplatte, Eigenschaften> Allgemein, und wenn sie blockiert ist, wird die Schaltfläche "Blockierung aufheben" angezeigt. Dies führte dazu, dass meine XML-Validierung in VS2012 fehlschlug.
Enthält Ihre XSD ein Attribut "targetNamespace"
/schema/@targetNamespace
das ist ähnlich wie der Namespace, auf den Sie in der XML verweisen?
Beispiele:
[~ # ~] xsd [~ # ~] :
<xs:schema .... targetNamespace="Datafile.xsd" ... >
[~ # ~] xml [~ # ~] :
<data xmlns="Datafile.xsd" >...</data>
Siehe auch: XML/XSD-Intellisense funktioniert in Visual Studio 2010 nicht
Ich hatte das gleiche Problem, aber VS hat mein Schema bereits korrekt referenziert. Es stellte sich heraus, dass die zu überprüfende Datei keine XML-Dateierweiterung hatte. .Xml wurde an das Ende meines Dateinamens angehängt, und die Validierung begann zu funktionieren.