Como referenciar um arquivo XML Schema local corretamente?

Estou tendo este problema com referência ao meu esquema XML em um arquivo XML.

Eu tenho meu XSD neste caminho:

C:\environment\workspace\maven-ws\ProjectXmlSchema\email.xsd 

Mas quando no meu arquivo XML eu estou tentando localizar o esquema como este, o XSD não é encontrado:

   

A única maneira de encontrar o XSD é quando ele está na mesma pasta:

  xsi:schemaLocation="http://www.w3schools.com email.xsd" 

Então a questão é a seguinte: como o caminho tem que ser visto para que o XSD seja encontrado se o arquivo XML não estiver na mesma pasta que o arquivo XSD?

By the way, o exemplo que eu tenho usado era da MSDN : eles estão alegando que deveria funcionar da maneira que eu tentei. Mas isso não acontece.

Adicione mais uma barra após o file:// no valor de xsi:schemaLocation . (Você tem dois; você precisa de três. Pense em protocol://host/path onde protocol é 'file' e host está vazio aqui, produzindo três barras em uma linha.) Você também pode eliminar as barras duplas ao longo do path . Acredito que as barras duplas ajudem com filesystems que permitem espaços em nomes de arquivos e diretórios, mas você sabiamente evitou essa complicação em sua nomeação de caminho.

 xsi:schemaLocation="http://www.w3schools.com file:///C:/environment/workspace/maven-ws/ProjextXmlSchema/email.xsd" 

Ainda não funciona? Sugiro que você copie cuidadosamente a especificação completa do arquivo para o XSD na barra de endereço do Chrome ou Firefox :

file:///C:/environment/workspace/maven-ws/ProjextXmlSchema/email.xsd

Se o XSD não for exibido no navegador , exclua todos, exceto o último componente do caminho (email.xsd) e veja se você não pode exibir o diretório pai. Continue dessa maneira, percorrendo a estrutura de diretórios até descobrir onde o caminho diverge da realidade do seu sistema de arquivos local.

Se o XSD for exibido no navegador , especifique qual processador XML você está usando e esteja preparado para ouvir que está quebrado ou que você deve contornar alguma limitação. Posso dizer-lhe que a correção acima funcionará com o meu validador baseado em Xerces-J.

Talvez possa ajudar a verificar se o caminho para o arquivo xsd não tem caracteres ‘estranhos’ como ‘é’, ou similar: Eu estava tendo o mesmo problema, mas quando mudei para um caminho sem o ‘é’ o erro desapareceu.

Se você trabalha no MS Visual Studio, basta seguir

  1. Coloque o arquivo WSDL e o arquivo XSD na mesma pasta .
  2. Corrigir arquivo WSDL como este YourSchemeFile.xsd

  3. Use o Visual Studio usando este ótimo exemplo Como gerar referência de serviço somente com o arquivo wsdl físico

Observe que você precisa colocar o caminho para o seu arquivo WSDL manualmente. Não há como usar a checkbox de diálogo Abrir Arquivo por aí.