2013-10-08 9 views
35

Ho riscontrato questo problema nel fare riferimento al mio schema XML in un file XML.Come fare riferimento a un file schema XML locale in modo corretto?

Io ho la mia XSD in questo percorso:

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

Ma quando nel mio file XML che sto cercando di individuare lo schema come questo, il XSD non è stato trovato:

<?xml version="1.0" encoding="UTF-8" ?> 
    <email xmlns="http://www.w3schools.com" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://www.w3schools.com 
       file://C://environment//workspace//maven-ws//ProjextXmlSchema//email.xsd"> 

Il unico modo che il XSD è trovato è quando è nella stessa cartella:

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

Quindi la domanda è questa: Come deve apparire il percorso in modo che l'XSD venga trovato se il file XML non si trovava nella stessa cartella del file XSD?

A proposito, l'esempio che ho utilizzato è stato da MSDN: stanno sostenendo che dovrebbe funzionare come ho provato. Ma non è così.

risposta

32

Aggiungere un'altra barra dopo lo file:// nel valore xsi:schemaLocation. (Ne hai due: ne hai bisogno 3. Pensate a protocol://host/path dove è 'file' e host è vuoto qui, producendo tre barre di seguito.) È inoltre possibile eliminare le doppie barre lungo lo 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" 

Ancora non funziona? Vi suggerisco di attenzione copiare la specifica del file completo per il XSD nella barra degli indirizzi di Chrome o Firefox:

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

Se il XSD non si visualizzazione nel browser, eliminare tutti ma l'ultimo componente del percorso (email.xsd) e vedere se non è possibile 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 il XSD non visualizzato nel browser, stato quello processore XML che si sta utilizzando, e preparatevi a sentire che è rotto o che si deve aggirare alcune limitazioni. Posso dirti che la correzione sopra funzionerà con il mio validatore basato su Xerces-J.

+0

Suona bene, ma non funziona altrettanto bene ...:/Altre idee? –

+0

Prova a verificare le specifiche complete del file su XSD tramite un browser. La risposta sopra è aggiornata con i dettagli. – kjhughes

+3

Grazie mille. E 'stata una bellissima idea provare ad aprirla in un browser e guardare/ottenere il percorso corretto. Grazie ancora, perfetto! –

3

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 un percorso senza 'é' l'errore sparita.

-2

Se si lavora in MS Visual Studio solo che dopo

  1. Put file WSDL e XSD file di nella stessa cartella.
  2. file WSDL corretta come questo YourSchemeFile.xsd

  3. Utilizzo di Visual Studio utilizzando questo grande esempio How to generate service reference with only physical wsdl file

noti che devi mettere il percorso al tuo file WSDL manualmente. Non c'è modo di usare la finestra di dialogo Apri file.