XML Schema использует атрибуты
schemaLocation
и xsi:schemaLocation
в трех случаях.
1. В документе примера, атрибут xsi:schemaLocation
обеспечивает подсказки автора для обработчика относительно
местоположения документов схемы. Автор гарантирует, что эти документы схемы
релевантны при проверке правильности содержания документа в пространстве имен
основного пространства имен. Например, мы можем указать местоположение схемы Report для обработчика квартального отчета:
Использование
schemaLocation в
квартальном отчете, 4Q99html.xml
<purchaseReport xmlns="http://www.example.com/Report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.com/Report http://www.example.com/Report.xsd" period="P3M" periodEnding="1999-12-31"> <!-- etc. --> </purchaseReport>
Атрибут
schemaLocation
содержит пары значений: первый член каждой пары – пространство
имен, для которого второй член - пояснение, которое описывает, где найти
соответствующий документ схемы. Присутствие этих пояснений не требует, чтобы
обработчик получил или использовал указанные документы схемы. Обработчик может
использовать другие схемы, полученные любыми подходящими средствами, или вообще
не использовать никакой схемы.
Схема не обязана иметь
пространство имен (см. Раздел 3.4), и поэтому атрибут noNamespaceSchemaLocation
, который используется для обеспечения
подсказки, применяется для задания местоположений документов схемы, которые не
имеют целевого пространства имен.
2. В схеме элемент include
имеет требуемый атрибут schemaLocation
, который содержит URI ссылку, идентифицирующую документ схемы.
Это позволяет составить конечную, эффективную схему, объединяя объявления и
определения включающих и включаемых схем. Например, в Разделе 4,
определения типов Address
, USAddress, UKAddress, USState (вместе с объявлениями их атрибутов и локальных элементов) из address.xsd,
которые
добавлены
к объявлениям элементов purchaseOrder и comment
, и определения типов PurchaseOrderType, Items
и SKU (вместе с объявлениями их атрибутов и локальных элементов) из ipo.xsd,
создают
единую схему.
3. Также в схеме, элемент import
имеет дополнительные атрибуты namespace
и schemaLocation
. В рассматриваемом контексте, атрибут schemaLocation
понимается как аналог xsi:schemaLocation
в (1). Следовательно, это обеспечивает авторское пояснение
обработчику относительно местоположения документа схемы, которого авторские
предписания снабжают требуемыми компонентами из пространства имен, заданного
атрибутом namespace
. Для того, чтобы импортировать
компоненты, которые не находятся ни в каком целевом пространстве имен, элемент import
используется без атрибута namespace
(с или без атрибута
schemaLocation
). Ссылки к компонентам, импортированным
этим способом, не квалифицированы.
Отметим, что schemaLocation
является только подсказкой, и некоторые обработчики и приложения
могут иметь причины его не использовать. Например, редактор HTML может иметь
встроенную HTML схему.