Sé que he hecho esto antes, pero hoy no funciona, ni puedo encontrar ningún lugar que explique cómo hacerlo. Podría ser mi falta de sueño, pero sospecho que son gremlins.
Tengo un documento XML y un directorio lleno de XSD que lo definen. ¿Cómo configuro el IDE visual para que me notifique de fallas de validación y luego proporcione una lista inteligente de etiquetas y atributos válidos en un contexto dado?
Lo que he probado:
- Agregué los XSD al proyecto con el documento XML.
- Agregué los XSD a la lista de esquemas XML (en XML / Schemas ... elemento de menú).
- Incluso he incluido los atributos schemaLocation y noNamespaceSchemaLocation en el documento XML.
Visual Studio todavía no está renunciando a ninguna información útil de depuración o edición. Probé tanto en 2010 como en 2008 (lo había hecho antes en 2008, pensé)
Actualización: hice que otro desarrollador probara esto y también le falló. Sabe que lo ha hecho con otros documentos XML y ha funcionado. Luego descargué el editor XML de Oxygen y funcionó bien en los mismos archivos XML y XSD, por lo que los archivos parecen estar bien (o Oxygen es más tolerante / flexible...)
fuente
No es necesario que asocie manualmente los archivos en Visual Studio; hará coincidir automáticamente un archivo XML con un archivo XSD si tiene ambos abiertos y tiene su espacio de nombres definido correctamente.
Para definir el espacio de nombres:
En el elemento raíz del archivo XML:
En el elemento de esquema del archivo XSD:
Una nota sobre el uso de tipos en su esquema cuando tiene un targetNamespace
Debido a que está 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 lo que agregamos elxmlns:this
atributo en el<xs:schema />
elemento anterior ).fuente
Otro punto de falla aquí son los archivos de esquema de "bloqueo" de Windows 7 ... haga clic 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.
fuente
¿Su xsd contiene un atributo
"targetNamespace"
/schema/@targetNamespace
similar al espacio de nombres al que hace referencia en el xml?Ejemplos:
XSD :
XML :
Ver también: XML / XSD intellisense no funciona en Visual Studio 2010
fuente
Tuve este mismo problema, pero VS ya estaba haciendo referencia a mi esquema correctamente. Resulta que el archivo que estaba tratando de validar no tenía una extensión de archivo 'xml'. Agregué .xml al final de mi nombre de archivo y la validación comenzó a funcionar.
fuente