Mensaje de error cuando ve multidimensionales esquemas XSD en el Diseñador de esquemas XML de Visual Studio .NET

Síntomas

Cuando intenta abrir y ver un esquema de definición de esquemas XML (XSD) multidimensionales en Visual Studio. NET, una ventana del Diseñador XML puede abrir en lugar de una ventana del Diseñador de esquemas, y puede recibir el siguiente mensaje de error en la vista de datos del Diseñador XML:

Aunque este documento XML está bien formado, contiene estructura que la vista de datos no puede mostrar. La misma tabla (TableName) no puede ser la tabla secundaria en dos relaciones anidadas

Causa

El esquema XSD se guarda como un archivo con la extensión .xml. Los diseñadores de Visual Studio .NET están basadas en la extensión. Archivos con la extensión .xml se interpretan como archivos normales de XML, así que el Diseñador XML se abre una ventana en lugar de una ventana del Diseñador de esquemas cuando intenta abrir y ver el documento en Visual Studio .NET. El Diseñador XML en Visual Studio .NET utiliza las reglas de inferencia de esquemas ADO.NET para inferir automáticamente el esquema de un documento XML. Las reglas de inferencia de esquemas ADO.NET permite ni admite relaciones multidimensionales en el lanzamiento de RTM de la de Microsoft.NET Framework.

Solución

Cambiar el nombre o guardar el documento como un archivo con una extensión .xsd para abrirlo y verlo en una ventana del Diseñador de esquemas XML de Visual Studio. NET. El Diseñador de esquemas XML de Visual Studio .NET correctamente puede cargar y mostrar esquemas XSD multidimensionales.

Estado

Este comportamiento es por diseño.

Más información

Para volver a crear el mensaje de error y probar la resolución, siga estos pasos:

  1. En el Bloc de notas, pegue el código siguiente en un nuevo archivo:
    <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. Guarde el archivo como OrderInventory.xml en el disco duro. El esquema de ejemplo es multidimensional, porque el orden y los elementos secundarios de inventario del elemento OrdersInventoryData tienen un elemento secundario denominado elemento de complexType ItemType (el elemento es un elemento secundario en dos relaciones de elementos primarios y secundarios).
  3. En Visual Studio. NET, abra un proyecto nuevo o existente Microsoft Visual Basic .NET o Microsoft Visual C#. NET, como un proyecto de aplicación de Windows o un proyecto de aplicación de consola.
  4. Agregar el documento XML de OrderInventory.xml que acaba de crear para el proyecto.
  5. En el Explorador de soluciones, haga doble clic para abrir OrderInventory.xml. Se muestra una vista XML del contenido del documento en una ventana del Diseñador XML.
  6. Cambie a la vista de datos de la ventana del Diseñador XML. Recibe el mensaje de error siguiente:
    Aunque este documento XML está bien formado, contiene estructura que la vista de datos no puede mostrar. La misma tabla (elemento) no puede ser la tabla secundaria en dos relaciones anidadas
    La extensión de nombre de archivo .xml hace una ventana Diseñador XML puedan abrirse en lugar de una ventana del Diseñador de esquemas. El contenido del archivo, por tanto, se trata como XML normal en lugar de como un esquema XSD. Cuando se abre una ventana de diseñador XML de Visual Studio .NET para mostrar datos XML, se aplican las reglas de inferencia de esquemas ADO.NET para determinar la estructura de esquema del documento XML. Desde la perspectiva de inferencia del esquema ADO.NET, un elemento XML de complexType se deduce como una tabla independiente y una tabla no puede ser una tabla secundaria en dos o más relaciones de elementos primarios y secundarios. En el esquema de ejemplo, el elemento de complexType ItemType se ha definido para ser un elemento secundario del pedido (OrderType complexType) y elementos de inventario (InventoryType complexType). Esto no permitida o admitido por las reglas de inferencia de esquemas ADO.NET en la versión RTM de la de Microsoft.NET Framework.
  7. Cierre la ventana del Diseñador XML.
  8. En el Explorador de soluciones, cambie el nombre OrderInventory.xml a OrderInventory.xsd. Para ello, haga clic en el archivo y, a continuación, haga clic en Cambiar nombre.
  9. En el Explorador de soluciones, haga doble clic para abrir OrderInventory.xsd. Se muestra una vista XML del contenido del documento en una ventana del Diseñador de esquemas XML. Cambie a la vista de esquema y observe que las estructuras de esquema se muestran correctamente.
También puede recibir el mensaje de error "la misma tabla (TableName) no puede ser la tabla secundaria en dos relaciones anidadas" cuando utiliza archivos XML con Visual Studio .NET o con la utilidad Xsd.exe.
Para obtener más información, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:

325696 recibe un mensaje de error al ver datos multidimensionales de XML en el Diseñador de XML de Visual Studio .NET

Propiedades

Id. de artículo: 325695 - Última revisión: 17 ene. 2017 - Revisión: 1

Comentarios