1

これがシナリオです

  1. C:\Users\Win7Guru\Documents\Visual Studio 2012\Projects\foo.xsd に foo.xsd という XSD スキーマを作成します。
  2. 新しいxmlファイルを作成
  3. <?xml version="1.0" encoding="utf-8"?xml ドキュメントの先頭に追加します。
  4. スキーマ タグ<xs:schema xmlns="C:\Users\Win7Guru\Documents\Visual Studio 2012\Projects\foo.xsd"と終了タグを追加する</xs:schema>
  5. 入力<してインテリセンスが表示されるのを待ちますが、表示されるのはデフォルトの選択だけです

  1. -->

  2. <![CDATA[]]>

  3. ?

Visual Studio 2012 RTM の使用

次のように、スキーマの上でステップ 5 を試すと、

1. <?xml version="1.0" encoding="utf-8"?>

2. <------

3. <xs:schema xmlns="C:\Users\Win7Guru\Documents\Visual Studio 2012\Projects\foo.xsd">

4. </xs:schema>


3 つのデフォルトの選択以外に、カスタムの選択を取得します。これはなぜですか?

4

2 に答える 2

1

最初のシナリオでは、とタグの<間に入力したと仮定します。これは、 for eg がドキュメント要素のコンテンツ内でのみ有効になるためです。<xs:schema></xs:schema>

プレフィックスはどの名前空間にもバインドされていないためxs、または一般的に VS が XSD を持たない 1 つの名前空間にバインドされていないため、Intellisense プロセッサは、XML で期待されるものを超えて何を提案するかを実際には認識していません。したがって、あなたが見る3つのもの。

<の上に入力する<xs:schema>と、エディターは (以前に で指定されたように<xs:schema>) コンテキストによって制約されないため、VS はそのドキュメント用にロードされたすべての XSD (foo.xsdそのうちの 1 つ) を調べ、XML のデフォルトに加えて、すべてを提供します。にあるグローバル要素foo.xsd。したがって、より多くのものを見ることができます。

XML 名前空間 URI を実際の XSD の場所に関連付けるという点で、VS エディターが提供する便利さのように見えるものによって、混乱が増していると思います。これはクールですが、標準ではありません。XML 名前空間の設計では、XML 名前空間 URI の値と、同じ XML 名前空間を対象とする XML スキーマの場所との間に関係はありません。つまり、(デフォルトの) XML 名前空間を次の形式で宣言したとします。

xmlns="C:\Users\Win7Guru\Documents\Visual Studio 2012\Projects\foo.xsd"

名前空間の値自体を使用して、その名前空間のスキーマを一貫して検索するようプロセッサに指示する標準仕様はありません。

多くの人は、インターネット上の実際のリソースに解決される URL として名前空間 URI を使用することをお勧めしますが、他の多くの人は、ここで生じる混乱をある程度回避するためのより良いアプローチとして URN を使用することを好みます。

于 2012-09-07T13:59:04.373 に答える
0

Intellisense の問題とは別に、名前空間プレフィックスxsを適切な名前空間名にバインドする必要があります。なので追加してみる

xmlns:xs="http://www.w3.org/2001/XMLSchema"

ドキュメントのルート要素 ( xs:schema) に追加します。Petru Gardea が指摘しているように、これは、エディターが名前空間に関する組み込みの知識を持っている場合にのみ、IntelliSense を有効にする効果があります。ただし、インテリセンスがオンにならない場合でも、準拠する XSD スキーマ ドキュメントが必要な場合は、名前空間を宣言する必要があります。

于 2012-09-09T15:52:28.903 に答える