Вопрос:
У меня возникла проблема с ссылкой на мою 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 файлу вручную. Нет возможности использовать диалоговое окно Открыть файл.