Как правильно ссылаться на файл локальной XML-схемы?

У меня возникла проблема с ссылкой на мою XML-схему в XML файле.

У меня есть XSD по этому пути:

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

Но когда в моем XML файле я пытаюсь найти схему вроде этого, XSD не найден:

<?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">

Единственный способ обнаружения XSD - это когда он находится в той же папке:

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

Итак, вопрос таков: Как должен выглядеть путь, чтобы XSD был найден, если XML файл не был в той же папке, что и файл XSD?

Кстати, пример, который я использовал, был MSDN: они утверждают, что он должен работать так, как я пытался. Но это не так.

Ответ 1

Добавьте еще один слэш после file:// в значение xsi:schemaLocation. (У вас два, вам нужно три. Подумайте protocol://host/path, где protocol есть 'file' и host здесь пуст, что дает три слэша в строке.) Вы также можете устранить двойные слэши вдоль path. Я считаю, что двойные косые черты помогают файловым системам, которые допускают пробелы в именах файлов и каталогов, но вы мудро избегаете этого осложнения в названии пути.

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

Не работает? Я предлагаю вам тщательно скопировать полную спецификацию файла для XSD в адресную строку Chrome или Firefox:

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

Если XSD не отображается в браузере, удалите все, кроме последнего компонента пути (email.xsd), и посмотрите, не отображается ли родительский каталог. Продолжайте таким образом, идя вверх по структуре каталогов, пока не обнаружите, где путь отклоняется от реальности вашей локальной файловой системы.

Если XSD отображается в браузере, укажите, какой процессор XML вы используете, и будьте готовы услышать, что он сломан, или что вы должны обойти некоторые ограничения. Я могу сказать вам, что вышеупомянутое исправление будет работать с моим валидатором на основе Xerces-J.

Ответ 2

Может быть, может помочь проверить, что путь к файлу xsd не имеет "странных" символов, таких как "é" или аналогичный: у меня была такая же проблема, но когда я перешел на путь без "é", ошибка исчезла.

Ответ 3

Если вы работаете в MS Visual Studio, просто выполните

Обратите внимание, что вы должны поместить путь к вашему WSDL файлу вручную. Нет возможности использовать диалоговое окно Открыть файл.