Saltar al contenido

Validación XML con XSD en Visual Studio IDE

Solución:

Deberá 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 data-lazy-src=

Esquema”>

  • En el editor de conjuntos de esquemas XML (se abre cuando hace clic en los puntos suspensivos (…) en el cuadro de texto “Esquemas” en la ventana Propiedades), debe asegurarse de tener su esquema presente. Además, asegúrese de Use columna para ese esquema está habilitado; si no, haga clic en él; obtendrá una lista desplegable de opciones, elija el Use uno con la marca de verificación verde:

    Selector de esquema XML

  • Asegúrese de que la ventana Lista de errores de Visual Studio esté visible (menú Ver> Lista de errores). Esto mostrará todas las inconsistencias entre las definiciones de esquema XML y XSD.

  • Una vez que todo eso esté en su lugar, el editor XML de Visual Studio debería resaltar los problemas con su XML en el editor usando garabatos azules:

    Ejemplo de error

  • No es necesario asociar manualmente los archivos en Visual Studio, lo hará automáticamente Haga coincidir un archivo XML con un archivo XSD si tiene ambos abiertos y su espacio de nombres está definido correctamente.

    Para definir el espacio de nombres:

    En el elemento raíz del archivo XML:

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

    En el 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>
    

    Una nota sobre el uso de tipos en su esquema cuando tiene un targetNamespace

    Porque estás especificando un targetNamespace en su esquema, cualquier referencia a los tipos definidos en el esquema deberá tener un prefijo con un espacio de nombres (por eso agregamos el xmlns:this atributo en el anterior <xs:schema /> elemento).

    <!-- 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í son los archivos de esquema de “bloqueo” de Windows 7 … haga clic con el botón derecho en el archivo xsd en el disco, Propiedades> General y si está bloqueado, tendrá un botón “Desbloquear”. Esto estaba causando que mi validación XML fallara en VS2012.

    ¡Haz clic para puntuar esta entrada!
    (Votos: 0 Promedio: 0)



    Utiliza Nuestro Buscador

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *