現在オフラインです。再接続するためにインターネットの接続を待っています

Visual Studio .NET の XML スキーマ デザイナで多次元の XSD スキーマを表示するとエラー メッセージが表示される

現象
Visual Studio .NET で多次元の XSD (XML Schema Definition) スキーマを開いて表示しようとすると、スキーマ デザイナ ウィンドウではなく XML デザイナ ウィンドウが開き、その XML デザイナ ウィンドウのデータ ビューに次のエラー メッセージが表示される場合があります。
この XML ドキュメントは正しい形式ですが、データ ビューで表示できない構造体を含んでいます。同じテーブル (TableName) を 2 つの入れ子になったリレーションシップで子テーブルにすることはできません。
原因
XSD スキーマは、拡張子が .xml のファイルとして保存されます。Visual Studio .NET のデザイナは拡張子に基づきます。拡張子が .xml のファイルは、通常の XML ファイルとして解釈されるので、Visual Studio .NET でそのドキュメントを開いて表示しようとすると、スキーマ デザイナ ウィンドウではなく、XML デザイナ ウィンドウが開きます。Visual Studio .NET の XML デザイナでは、ADO.NET スキーマ推論規則を使用して自動的に XML ドキュメントのスキーマを推論しています。Microsoft .NET Framework RTM 版の ADO.NET スキーマ推論規則では、多次元のリレーションシップは許可されず、サポートもされません。
解決方法
ドキュメントを、拡張子が .xsd のファイルとして保存または名前を変更して、Visual Studio .NET の XML スキーマ デザイナ ウィンドウでそのファイルを開いて表示します。Visual Studio .NET の XML スキーマ デザイナで、多次元の XSD スキーマの読み込みと表示を適切に行えます。
状況
この動作は仕様です。
詳細
エラー メッセージを再現し、解決方法をテストするには、次の手順を実行します。
  1. メモ帳を開き、新しいファイルに次のコードを貼り付けます。
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">	<xs:element name="OrdersInventoryData" type="OrdersInventoryDataType" />	<xs:complexType name="ItemType">		<xs:sequence>			<xs:element name="id" type="xs:string" />			<xs:element name="qty" type="xs:integer" />		</xs:sequence>	</xs:complexType>	<xs:complexType name="OrderType">		<xs:sequence>			<xs:element name="OrderId" type="xs:string" />			<xs:element name="CustomerId" type="xs:string" />			<xs:element name="Item" type="ItemType" maxOccurs="unbounded" />		</xs:sequence>	</xs:complexType>	<xs:complexType name="InventoryType">		<xs:sequence>			<xs:element name="Item" type="ItemType" maxOccurs="unbounded" />		</xs:sequence>	</xs:complexType>	<xs:complexType name="OrdersInventoryDataType">		<xs:sequence>			<xs:element name="Order" type="OrderType" maxOccurs="unbounded" />			<xs:element name="Inventory" type="InventoryType" maxOccurs="unbounded"/>		</xs:sequence>	</xs:complexType></xs:schema>					
  2. このファイルを OrderInventory.xml という名前でハード ディスクに保存します。上記のサンプル スキーマは、OrdersInventoryData 要素の Order 子要素と Inventory 子要素の両方が ItemType complexType の Item という名前の子要素を持っているので、多次元スキーマです (Item 要素は、2 つの親子リレーションシップの子です)。
  3. Visual Studio .NET で、Windows アプリケーションやコンソール アプリケーションなどの Microsoft Visual Basic .NET または Microsoft Visual C# .NET の新しいプロジェクトを作成するか、既存のプロジェクトを開きます。
  4. 上記で作成した XML ドキュメント OrderInventory.xml をこのプロジェクトに追加します。
  5. ソリューション エクスプローラで [OrderInventory.xml] をダブルクリックします。ドキュメントの内容を表示する XML ビューが XML デザイナ ウィンドウに表示されます。
  6. XML デザイナ ウィンドウのデータ ビューに切り替えると、次のエラー メッセージが表示されます。
    この XML ドキュメントは正しい形式ですが、データ ビューで表示できない構造体を含んでいます。同じテーブル (Item) を 2 つの入れ子になったリレーションシップで子テーブルにすることはできません。
    .xml ファイル名拡張子が原因で、スキーマ デザイナ ウィンドウではなく、XML デザイナ ウィンドウが開きます。そのため、ファイルの内容は XSD スキーマではなく通常の XML として扱われます。Visual Studio .NET の XML デザイナ ウィンドウが開いて XML データが表示されると、ADO.NET スキーマ推論規則が適用されて XML ドキュメントのスキーマ構造が判断されます。ADO.NET スキーマ推論規則では、XML 要素 complexType は独立したテーブルとして推論され、1 つのテーブルを 2 つ以上の親子リレーションシップの子テーブルにすることはできません。この資料のサンプル スキーマでは、ItemType complexType の Item 要素は、Order (OrderType complexType) 要素と Inventory (InventoryType complexType) 要素の子になるように定義されています。このことは、Microsoft .NET Framework RTM 版の ADO.NET スキーマでは許可されず、サポートもされません。
  7. XML デザイナ ウィンドウを閉じます。
  8. ソリューション エクスプローラで、OrderInventory.xml の名前を OrderInventory.xsd に変更します。この操作を行うには、ファイルを右クリックし [名前の変更] をクリックします。
  9. ソリューション エクスプローラで [OrderInventory.xsd] をダブルクリックします。ドキュメントの内容を表示する XML ビューが XML スキーマ デザイナ ウィンドウに表示されます。スキーマ ビューに切り替えて、スキーマ構造が適切に表示されることを確認します。
関連情報
Visual Studio .NET または Xsd.exe ユーティリティを使用して XML ファイルを使用した場合、"同じテーブル (TableName) を 2 つの入れ子になったリレーションシップで子テーブルにすることはできません。" というエラー メッセージが表示される場合もあります。関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
325696 Visual Studio .NET の XML デザイナで多次元の XML データを表示するとエラー メッセージが表示される
プロパティ

文書番号:325695 - 最終更新日: 09/20/2006 05:27:09 - リビジョン: 3.2

Microsoft Visual Studio 2005 Standard Edition, Microsoft Visual Studio 2005 Professional Edition, Microsoft Visual Studio 2005 Express Edition, Microsoft Visual Studio .NET 2003 Professional Edition, Microsoft Visual Studio .NET 2003 Enterprise Developer, Microsoft Visual Studio .NET 2003 Enterprise Architect, Microsoft Visual Studio .NET 2002 Professional Edition, Microsoft Visual Studio .NET 2002 Enterprise Developer, Microsoft Visual Studio .NET 2002 Enterprise Architect

  • kbprb KB325695
フィードバック