Validação de XML com XSD no Visual Studio IDE

Eu sei que já fiz isso antes, mas não está funcionando hoje, nem posso encontrar qualquer lugar que explique como fazer isso. Pode ser a minha falta de sono, mas desconfio dos gremlins.

Eu tenho um documento XML e um diretório cheio de XSD’s que o definem. Como faço para definir o Visual IDE para me notificar de falhas de validação e, em seguida, fornecer uma lista intellisense de tags e atributos válidos em um determinado contexto?

O que eu tentei:

  • Eu adicionei o XSD ao projeto com o documento XML.
  • Eu adicionei o XSD à lista XML Schema (sob o item de menu XML / Schemas …).
  • Inclusive incluí os atributos schemaLocation e noNamespaceSchemaLocation no documento XML.

Visual Studio ainda não está desistindo de qualquer informação útil de debugging ou edição. Eu tentei 2010 e 2008 (eu fiz isso antes em 2008 eu pensei)

Update: Eu tinha outro desenvolvedor tentar isso e falhou para ele também. Ele sabe que fez isso com outros documentos XML e funcionou. Eu então baixei o editor XML Oxygen e ele funcionou bem nos mesmos arquivos XML e XSD, então os arquivos parecem estar bem (ou o Oxygen é mais tolerante / flexível …)

    Jim,

    Você precisa associar o documento XML no Visual Studio com o arquivo XSD que você tem – você deve ver algo assim em sua janela Propriedades do documento XML:

    texto alternativo

    Espelho 1

    No editor do conjunto de esquemas XML (abre quando você clica nas reticências (…) na checkbox de texto “Esquemas” em sua janela Propriedades), é necessário certificar-se de que seu esquema esteja presente. Além disso, verifique se a coluna Use para esse esquema está ativada – se não, clique nela – você terá uma lista suspensa de opções, escolha a opção Use uma com a marca de seleção verde:

    texto alternativo

    Espelho 1

    Certifique-se de que as janelas Lista de Erros do Visual Studio estejam visíveis (menu Visualizar> Lista de Erros). Isso mostrará todas as inconsistências entre as definições de esquema XML e XSD.

    Quando tudo isso estiver no lugar, o editor de XML do Visual Studio deve destacar problemas com seu XML no editor usando rabiscos azuis:

    texto alternativo

    Espelho 1

    Você não precisa associar manualmente os arquivos no Visual Studio – ele corresponderá automaticamente um arquivo XML a um arquivo XSD se você os tiver abertos e tiver seu namespace definido corretamente.

    Para definir o namespace:

    No elemento raiz do arquivo XML:

      ...  

    No elemento do esquema do arquivo XSD:

      ...  

    Uma nota 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 o atributo xmlns:this no elemento ).

              

    Outro ponto de falha aqui é o Windows 7 “bloquear” os arquivos de esquema … clique com o botão direito no arquivo xsd no disco, em Propriedades> Geral e, se estiver bloqueado, você terá um botão “Desbloquear”. Isso estava causando minha validação XML para falhar no VS2012.

    Seu xsd contém um atributo “targetNamespace” / schema / @ targetNamespace que é semelhante ao namespace que você está referenciando no xml?

    Exemplo:

    xsd:

    xml:

    veja também intellisense XML / XSD não está funcionando no Visual Studio 2010

    Eu tive esse mesmo problema, mas o VS já estava fazendo referência ao 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.