在 Visual Studio.net XML 架构设计器中查看多维 XSD 架构时出现错误消息

文章翻译 文章翻译
文章编号: 325695 - 查看本文应用于的产品
展开全部 | 关闭全部

症状

当您尝试打开并在 Visual Studio.net 的 XML 设计器窗口中查看多维的 XML 架构定义 (XSD) 架构可能会打开一个架构设计器窗口而不是,并在 XML 设计器的 数据 视图中可能会收到以下错误消息:
尽管此 XML 文档的格式正确,它包含了在 DataView 无法显示的结构。在同一个表 (TableName) 不能是子表中两个嵌套关系

原因

XSD 架构保存为扩展名为.xml 文件中。在 Visual Studio.net 设计器是基于扩展名的。使用.xml 扩展名的文件都被解释为常规的 XML 文件,因此当您尝试打开并在 Visual Studio.net 中查看文档的架构设计器窗口而不是打开一个 XML 设计器窗口。在 Visual Studio.net 中的 XML 设计器使用 ADO.NET 架构推理规则来自动推断架构的 XML 文档。ADO.NET 架构推理规则不允许,或在 Microsoft.net 框架的 RTM 版本中支持多维的关系。

解决方案

重命名或将文档另存为以打开并查看它在 Visual Studio.net XML 架构设计器窗口中,扩展名为.xsd 文件。Visual Studio.net XML 架构设计器可以正确地加载和显示多维 XSD 架构。

状态

此行为是设计使然。

更多信息

要重新创建该错误消息和测试分辨率,请按照下列步骤操作:
  1. In Notepad, paste the following code in a new file:
    <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 元素具有名为 ItemItemType 复杂类型Item 元素是两个父-子关系中的子项) 的一个子元素。
  3. 在 Visual Studio.net 中,打开一个新的或现有的 Microsoft Visual Basic.net 或 Microsoft Visual C#.net 项目,如 Windows 应用程序项目或控制台应用程序项目。
  4. 将您刚刚创建的 OrderInventory.xml XML 文档添加到项目中。
  5. 在解决方案资源管理器中,双击 $ 打开 OrderInventory.xml。在 XML 设计器窗口中显示文档的内容的 XML 视图。
  6. 切换到 XML 设计器窗口的 数据 视图。您会收到以下错误消息:
    尽管此 XML 文档的格式正确,它包含了在 DataView 无法显示的结构。在同一个表 (项目) 不能是子表中两个嵌套关系
    .xml 文件扩展名会导致要打开的架构设计器窗口而不是一个 XML 设计器窗口。该文件的内容都因此被视为定期而不是作为 XSD 架构的 XML。当打开一个 Visual Studio.net XML 设计器窗口来显示 XML 数据时,ADO.NET 架构推理规则应用于确定 XML 文档的架构结构。从 ADO.NET 架构推理的角度看一个 复杂类型 的 XML 元素被推断为一个独立的表和表不能是子表中两个或多个父-子关系。示例架构中已经定义了 ItemType 复杂类型Item 元素是 顺序OrderType 复杂类型) 和 库存InventoryType 复杂类型) 元素的子级。这不是允许或由 ADO.NET 架构推理规则在 Microsoft.net 框架的 RTM 版本中受支持。
  7. 关闭 XML 设计器窗口。
  8. 在解决方案资源管理器中,OrderInventory.xml 重命名 OrderInventory.xsd。以执行此操作,请用鼠标右键单击该文件,然后单击 重命名
  9. 在解决方案资源管理器中,双击 $ 打开 OrderInventory.xsd。在 XML 架构设计器窗口中显示文档的内容的 XML 视图。切换到 架构 视图中,注意架构结构都正确显示。

参考

使用 Visual Studio.net 或 Xsd.exe 实用工具使用 XML 文件时,您还可能收到的同一个表 (TableName) 不能是子表在两个嵌套关系中的"错误消息。 有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
325696在 Visual Studio.net XML 设计器中查看的多维的 XML 数据时,您会收到一条错误消息

属性

文章编号: 325695 - 最后修改: 2006年6月14日 - 修订: 3.4
这篇文章中的信息适用于:
  • Microsoft Visual Studio 2005 Standard Edition
  • Microsoft Visual Studio 2005 Professional
  • 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 专业版
  • Microsoft Visual Studio .NET 2002 企业级开发版
  • Microsoft Visual Studio .NET 2002 企业级结构设计版
关键字:?
kbmt kbprb KB325695 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 325695
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

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