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

Вопрос:У меня возникла проблема с ссылкой на мою XML-схему в XML файле. У меня есть XSD по этому пути: C:environmentworkspacemaven-wsProjectXmlSchemaemail.xsd Но когда в моем XML файле я пытаюсь найти схему вроде этого, XSD не найден: Единственный способ обнаружения XSD - это когда он находится в той

Вопрос:

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

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

C:environmentworkspacemaven-wsProjectXmlSchemaemail.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: они утверждают, что он должен работать так, как я пытался. Но это не так.

Лучший ответ:

Добавьте еще один слэш после 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.

Ответ №1

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

Ответ №2

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

  • Поместите файл WSDL и XSD файл в ту же папку.
  • Исправьте файл WSDL, подобный этому YourSchemeFile.xsd

  • Используйте Visual Studio, используя этот отличный пример Как создать служебную ссылку только с физическим файлом wsdl

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

Оцените статью
Добавить комментарий