Подтвердить что ты не робот

Как использовать схему, которая находится на локальной машине в XML-документе

У меня ограниченное знание файлов XML/Schema.

Итак, это должен быть довольно простой вопрос. Как вы указываете локальный файл для schemaLocation?

<?xml version="1.0"?>

<note
  xmlns="http://www.w3schools.com"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.w3schools.com note.xsd">
  ...
</note>

Это образец из www.w3.org, а часть, которая указывает схему, находится в schemaLocation. Я попытался посмотреть документацию, но как вы можете указать локальный файл?

Что-то вроде

xsi:schemaLocation="../relativepath/schemafolder not.xsd">

Спасибо

4b9b3361

Ответ 1

schemaLocation должен содержать два значения, разделенные пробелом: URI пространства имен (это не изменяется) и url схемы.

Итак, в вашем случае

 xsi:schemaLocation="http://www.w3schools.com ../relativepath/schemafolder/note.xsd">

Не обманывайтесь URI пространства имен, являющимся, по-видимому, действительным URL-адресом http, что только один из маленьких безумцев, изобретенных людьми XML.:)

На самом деле вы можете указать схемы для нескольких пространств имен в одном schemaLocation:

xsi:schemaLocation="namespace1 schemaurl1 namespace2 schemaurl2 ..."

(Я также рекомендую вам относиться к относительным путям: в то время как они чрезвычайно полезны, когда вы перемещаете свои файлы, но все еще проверяете его с помощью того же кода (или инструмента), когда вы развертываете свой код проверки в приложении, "Рабочий каталог" может быть не таким, как вы ожидали. Это не значит, что вы не должны использовать относительные пути, просто чтобы быть в курсе этого, когда вы получите странное выглядящее исключение из схемы, которая не найдена.)