Элемент schema

Элемент <schema> - это корневой элемент каждой XML схемы:


<?xml version="1.0"?>
<xs:schema>
...
</xs:schema>

Элемент <schema> может содержать некоторые атрибуты. Часто декларация схемы имеет, например, такой вид:


<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://msiter.ru"
xmlns="http://msiter.ru"
elementFormDefault="qualified">
...
</xs:schema>

Фрагмент xmlns:xs="http://www.w3.org/2001/XMLSchema" указывает на то, что используемые в схеме элементы и типы данных относятся к пространству имен "http://www.w3.org/2001/XMLSchema". Также здесь указывается, что элементы и типы данных, относящиеся к пространству имен "http://www.w3.org/2001/XMLSchema", должны иметь префикс xs:

Фрагмент targetNamespace="http://msiter.ru" указывает на то, что определяемые этой схемой элементы (note, to, from, heading, body) относятся к пространству имен "http://msiter.ru".

Фрагмент xmlns="http://msiter.ru" указывает на то, что пространством имен по умолчанию является "http://msiter.ru".

Фрагмент elementFormDefault="qualified" указывает на то, что любой элемент, используемый в XML документе, который был декларирован в этой схеме, должен быть уточнен по пространству имен.

Подключение схемы в XML документе

Следующий XML документ имеет подключение к XML схеме:


<?xml version="1.0"?>
<note xmlns="http://msiter.ru"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://msiter.ru note.xsd">
   <to>Tove</to>
   <from>Jani</from>
   <heading>Напоминание</heading>
   <body>Не забудь обо мне в эти выходные!</body>
</note>

Здесь фрагмент xmlns="http://msiter.ru" определяет декларацию пространства имен по умолчанию. Эта декларация говорит валидатору схем, что все элементы, использованные в данном XML документе, декларированы в пространстве имен "http://msiter.ru".

Благодаря тому, что в фрагменте xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" мы сделали доступным пространство имен образцов XML схемы, мы можем использовать атрибут schemaLocation. У этого атрибута есть два значения, разделенных пробелом. Первое значение — используемое пространство имен. Второе значение — расположение XML схемы, которая используется в этом пространстве имен. Что мы и определяем в фрагменте xsi:schemaLocation="http://msiter.ru note.xsd".