Sei que já fiz isso antes, mas não está funcionando hoje, nem consigo encontrar nenhum lugar que explique como fazer. Pode ser minha falta de sono, mas suspeito de gremlins.
Tenho um documento XML e um diretório cheio de XSDs que o definem. Como faço para configurar o IDE do Visual para me notificar sobre falhas de validação e, em seguida, fornecer uma lista do intellisense de tags e atributos válidos em um determinado contexto?
O que eu tentei:
- Adicionei os XSDs ao projeto com o documento XML.
- Eu adicionei os XSDs à lista XML Schema (no item de menu XML / Schemas ...).
- Inclusive, incluí os atributos schemaLocation e noNamespaceSchemaLocation no documento XML.
O Visual Studio ainda não está abrindo mão de nenhuma depuração útil ou de informações de edição. Tentei 2010 e 2008 (já fiz isso antes, em 2008, pensei)
Atualização: pedi a outro desenvolvedor que tentasse fazer isso e ele também falhou. Ele sabe que fez isso com outros documentos XML e fez com que funcionasse. Em seguida, baixei o editor XML Oxygen e funcionou bem nos mesmos arquivos XML e XSD, então os arquivos parecem estar bem (ou Oxygen é mais tolerante / flexível..)
fonte
Você não precisa associar manualmente os arquivos no Visual Studio - ele irá corresponder automaticamente um arquivo XML a um arquivo XSD se você os tiver aberto e tiver seu namespace definido corretamente.
Para definir o namespace:
No elemento raiz do arquivo XML:
No elemento de esquema do arquivo XSD:
Uma observação sobre o uso de Tipos em seu esquema quando você tem um targetNamespace
Como você está especificando um
targetNamespace
em seu esquema, qualquer referência a tipos definidos no esquema precisará ser prefixada com um namespace (é por isso que adicionamos oxmlns:this
atributo no<xs:schema />
elemento acima ).fonte
Outro ponto de falha aqui é o Windows 7 "bloqueando" arquivos de esquema ... clique com o botão direito do mouse no arquivo xsd no disco, Propriedades> Geral e se estiver bloqueado, você terá um botão "Desbloquear". Isso estava fazendo com que minha validação XML falhasse no VS2012.
fonte
O seu xsd contém um atributo
"targetNamespace"
/schema/@targetNamespace
semelhante ao namespace que você está referenciando no xml?Exemplos:
XSD :
XML :
Consulte também: O intellisense XML / XSD não funciona no Visual Studio 2010
fonte
Eu tive o mesmo problema, mas o VS já estava referenciando meu esquema corretamente. Acontece que o arquivo que eu estava tentando validar não tinha uma extensão de arquivo 'xml'. Adicionado .xml ao final do meu nome de arquivo e a validação começou a funcionar.
fonte