以前にこれを行ったことはありますが、今日は機能していません。また、その方法を説明する場所はどこにもありません。睡眠不足かもしれませんが、グレムリンが疑われます。
XMLドキュメントと、それを定義するXSDでいっぱいのディレクトリがあります。 Visual IDE upを設定して検証エラーを通知し、特定のコンテキストで有効なタグと属性のインテリセンスリストを提供するにはどうすればよいですか?
私が試したもの:
Visual Studioは、まだ有用なデバッグ情報や編集情報を放棄していません。私は2010と2008の両方を試しました(2008年に思ったことはあります)
更新:私は別の開発者にこれを試してもらったが、彼にも失敗した。彼は、他のXML文書でそれを実行し、機能していたことを知っています。次に、Oxygen XMLエディターをダウンロードしましたが、同じXMLファイルとXSDファイルで正常に機能したため、ファイルは正常に見えます(または、Oxygenの方がより寛容で柔軟です...)
Visual StudioのXMLドキュメントを、お持ちのXSDファイルに関連付ける必要があります。
XMLドキュメントの[プロパティ]ウィンドウに次のようなものが表示されます。
XMLスキーマセットエディタ([プロパティ]ウィンドウの[スキーマ]テキストボックスで(...)省略記号をクリックすると開きます)では、スキーマが存在することを確認する必要があります。また、そのスキーマのUse
列が有効になっていることを確認してください。有効になっていない場合はクリックしてください。オプションのドロップダウンリストが表示され、緑色のチェックマークが付いたUse
:
Visual Studioのエラーリストウィンドウが表示されていることを確認します(メニューの[表示]> [エラーリスト])。これにより、XMLスキーマ定義とXSDスキーマ定義の間のすべての矛盾が表示されます。
これらすべてが整ったら、Visual Studio XMLエディターは青い波線を使用してエディターでXMLの問題を強調表示します。
Visual Studioでファイルを手動で関連付ける必要はありません-両方を開いている場合、XMLファイルをXSDファイルに自動的に一致させます。名前空間が正しく定義されています。
名前空間を定義するには:
XMLファイルのルート要素内:
<Data xmlns='http://yourdomain.com/yourschema.xsd'>
...
</Data>
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>
targetNamespaceがある場合にスキーマでタイプを使用する場合の注意
スキーマでtargetNamespace
を指定しているため、スキーマで定義された型への参照には、名前空間をプレフィックスとして付ける必要があります(そのため、xmlns:this
上記の属性<xs:schema />
要素)。
<!-- 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" />
ここでのもう1つの失敗点は、Windows 7のスキーマファイルの「ブロック」です。ディスク上のxsdファイルを右クリックし、[プロパティ]> [全般]を選択します。これにより、VS2012でXML検証が失敗していました。
Xsdには、XMLで参照しているネームスペースに似た属性"targetNamespace"
/schema/@targetNamespace
が含まれていますか?
例:
[〜#〜] xsd [〜#〜]:
<xs:schema .... targetNamespace="Datafile.xsd" ... >
[〜#〜] xml [〜#〜]:
<data xmlns="Datafile.xsd" >...</data>
これと同じ問題がありましたが、VSはすでにスキーマを正しく参照していました。検証しようとしていたファイルには、「xml」ファイル拡張子がありませんでした。ファイル名の末尾に.xmlを追加すると、検証が機能し始めました。