Come fare riferimento a un file schema XML locale correttamente?

Sto riscontrando questo problema nel fare riferimento al mio schema XML in un file XML.

Ho il mio XSD in questo percorso:

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

Ma quando nel mio file XML sto cercando di localizzare lo schema come questo, l’XSD non viene trovato:

   

L’unico modo in cui viene trovato XSD è quando si trova nella stessa cartella:

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

Quindi la domanda è questa: come deve essere il percorso in modo che l’XSD venga trovato se il file XML non si trova nella stessa cartella del file XSD?

A proposito, l’esempio che ho usato proviene da MSDN : affermano che dovrebbe funzionare come ho provato io. Ma non è così.

Aggiungi un’altra barra dopo il file:// nel valore di xsi:schemaLocation . (Ne hai due; ne hai bisogno di tre.) protocol://host/path pensiero protocol://host/path cui il protocol è 'file' e l’ host è vuoto qui, producendo tre barre di fila.) Puoi anche eliminare le doppie barre lungo il path . Credo che le doppie barre siano di aiuto con i file system che consentono spazi nei nomi di file e directory, ma hai saggiamente evitato questa complicazione nella denominazione dei percorsi.

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

Continua a non funzionare? Ti suggerisco di copiare attentamente le specifiche complete del file per XSD nella barra degli indirizzi di Chrome o Firefox :

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

Se l’XSD non viene visualizzato nel browser , elimina tutto tranne l’ultimo componente del percorso (email.xsd) e verifica se non è ansible visualizzare la directory principale. Continua in questo modo, risalendo la struttura della directory fino a scoprire dove il percorso si discosta dalla realtà del tuo filesystem locale.

Se l’XSD viene visualizzato nel browser , indicare quale processore XML si sta utilizzando ed essere pronti a sentire che è rotto o che è necessario aggirare alcune limitazioni. Posso dirti che la correzione sopra funzionerà con il mio validatore basato su Xerces-J.

Forse può aiutare a verificare che il percorso del file xsd non abbia caratteri ‘strani’ come ‘é’ o simili: stavo avendo lo stesso problema ma quando ho cambiato il percorso senza ‘é’ l’errore è scomparso.

Se lavori in MS Visual Studio , segui semplicemente

  1. Metti il ​​file WSDL e il file XSD nella stessa cartella .
  2. File WSDL corretto come questo, YourSchemeFile.xsd

  3. Utilizzare Visual Studio utilizzando questo ottimo esempio Come generare riferimenti di servizio con solo file wsdl fisico

Si noti che è necessario inserire manualmente il percorso del file WSDL. Non c’è modo di utilizzare la finestra di dialogo Apri file .