Pregunta

Sé que he hecho esto antes, pero no está trabajando hoy, ni puedo encontrar en cualquier lugar que explica cómo hacerlo. Podría ser mi falta de sueño, pero sospecho gremlins.

Tengo un documento XML y un directorio lleno de XSD de que lo definen. ¿Cómo se configura el IDE de Visual hasta notificarme de errores de validación, y luego proporcionar una lista de IntelliSense de etiquetas y atributos válidos en un contexto dado?

Lo que he intentado:

  • ¡Tengo el XSD de que el proyecto con el documento XML.
  • ¡Tengo el XSD de la lista de esquemas XML (bajo esquemas ... elemento XML / menú.)
  • he incluso incluyó la schemaLocation y noNamespaceSchemaLocation atribuye al documento XML.

Visual Studio sigue sin renunciar a ninguna depuración útil o editar la información. He intentado tanto en 2010 y 2008 (lo he hecho antes en 2008 pensé)

Actualización: que había otro desarrollador probar esto y no para él también. Él sabe que lo ha hecho con otros documentos XML y tenía que funcione. a continuación, he descargado editor XML oxígeno y funcionó bien en el mismo XML y archivos XSD, por lo que los archivos parecen estar bien (o de oxígeno es más permisiva / flexible...)

¿Fue útil?

Solución

Tendrá que asociar el documento XML en Visual Studio con el archivo XSD que tiene.

  1. Debería ver algo como esto en la ventana Propiedades del documento XML:

     Propiedades XML loading= esquema ">

  2. En el editor de una serie de esquemas XML (se abre cuando se hace clic en el ...) puntos suspensivos en el cuadro de texto "Esquemas" (en la ventana de Propiedades) que necesita para asegurarse de que tiene el esquema actual. También, asegúrese de que la columna de Use para ese esquema está habilitada - si no, haga clic en él - usted obtendrá una lista desplegable de opciones, escoger el Use con la marca verde:

     esquema XML selector

  3. Hacer ventanas de lista de errores Seguro de Visual Studio es visible (menú Ver> Lista de errores). Esto le mostrará todas las inconsistencias entre XML y definiciones de esquema XSD.

  4. Una vez que todo eso está en su lugar, el editor de XML Visual Studio debe resaltar los problemas con el código XML en el editor utilizando squigglies azules:

     Ejemplo de Error

Otros consejos

no es necesario asociar manualmente los archivos en Visual Studio - es automáticamente que coincida con un archivo XML en un archivo XSD si ellos tienen tanto abierta, y tiene su espacio de nombres definido correctamente.

Para definir el espacio de nombres:

elemento raíz del archivo XML:

<Data xmlns='http://yourdomain.com/yourschema.xsd'>
    ...
</Data>

elemento de esquema del archivo XSD:

<xs:schema
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://yourdomain.com/yourschema.xsd"
    xmlns:this="http://yourdomain.com/yourschema.xsd"
    elementFormDefault="qualified">
    ...
</xs:schema>

Nota sobre el uso de tipos en el esquema cuando se tiene un targetNamespace

Debido a que está especificando un targetNamespace en su esquema, habrá que cualquier referencia a los tipos definidos en el esquema que se va precedido de un espacio de nombres (por eso hemos añadido el atributo xmlns:this en el elemento <xs:schema /> arriba).

<!-- Define the type as normal -->
<xs:complexType name="Row">
    <xs:sequence>
        <xs:element name="Name" type="xs:string" minOccurs="1" maxOccurs="1" />
        <xs:element name="Value" type="xs:float" minOccurs="1" maxOccurs="1" />
    </xs:sequence>
</xs:complexType>
<!-- Use the type (note the "this:" prefix) -->
<xs:element name="Row" type="this:Row" minOccurs="0" maxOccurs="unbounded" />

Otro punto de falla aquí es Windows 7 "bloqueo" archivos de esquema ... haga clic derecho en el archivo xsd en el disco, en Propiedades> General y si está bloqueado, tendrá un botón "Desbloquear". Esta fue la causa de mi validación de XML a fallar en VS2012.

¿Su xsd contienen un "targetNamespace" /schema/@targetNamespace atributo que es similar al espacio de nombres está haciendo referencia en el xml?

Ejemplos:

XSD

<xs:schema .... targetNamespace="Datafile.xsd" ... >

XML

<data xmlns="Datafile.xsd" >...</data>

Ver también: XML / XSD IntelliSense no funciona en Visual Studio 2010

Yo tenía el mismo problema, pero VS se refería a mi esquema correctamente ya. Resulta que el archivo que estaba tratando de validar no tienen una extensión de archivo 'XML'. Añadido .xml al final de mi nombre de archivo y la validación comenzó a trabajar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top