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

文書翻訳 文書翻訳
文書番号: 325695 - 対象製品
すべて展開する | すべて折りたたむ

現象

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 - 最終更新日: 2006年9月20日 - リビジョン: 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
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com