Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
xml.docx
Скачиваний:
49
Добавлен:
16.04.2015
Размер:
115.97 Кб
Скачать

4. Пространства имён xml. Инструкции по обработке

Поскольку в разных языках разметок — реализациях XML — могут встретиться одни и те же имена тегов и их атрибутов, имеющие совершенно разный смысл, надо иметь возможность их как-то различать. Для этого имена тегов и атрибутов снабжают кратким префиксом, который отделяется от имени двоеточием. Префикс имени связывается с идентификатором, определяющим пространство имен (namespace). Все имена тегов и атрибутов, префиксы которых связаны с одним и тем же идентификатором, образуют одно пространство имен, в котором имена должны быть уникальны. Префикс и идентификатор пространства имен определяются атрибутом xmlns следующим образом:

<ntb:notebook xmlns:ntb = "http://some.firm.com/2003/ntbml">

Префикс ntb только что определен, но его уже можно использовать в имени ntb: notebook.

Имя вместе с префиксом, например ntb:notebook или ntb:city, называется расширенным или уточненным именем (QName, Qualified Name). Часть имени, записанная после двоеточия, называется локальной частью (local part) имени.

Атрибут xmlns может появиться в любом элементе XML, а не только в корневом. Определенный им префикс можно применять в том элементе, в котором записан атрибут xmlns, и во всех вложенных в него элементах. Более того, в одном элементе можно определить несколько пространств имен:

<ntb:notebook xmlns:ntb = "http://some.firm.com/2003/ntbml"

xmlns:bk = "http://some.firm.com/2003/bookml">

Во вложенных элементах пространство имен можно переопределить, связав префикс с другим идентификатором.

Появление имени тега без префикса в документе, использующем пространство имен, означает, что имя принадлежит пространству имен по умолчанию (default namespace). Например, язык XHTML допускает применение тегов HTML и тегов XML в одном документе. Допустим, мы определили тег с именем title. Чтобы не принять его за один из тегов HTML, поступаем следующим образом:

<html xmlns = "http://www.w3.org/1999/xhtml"

xmlns:ntb = "http://some.firm.com/2003/ntbml">

<head>

<title>моя библиотека</title> </head>

<body>

<ntb:book>

<ntb: title>учим XML</ntb:title> </ntb:book> </body>

</html>

В этом примере пространством имен по умолчанию становится пространство имен XHTML, имеющее общеизвестный идентификатор http://www.w3.org /1999/xhtml, и теги, относящиеся к этому пространству имен, записываются без префикса.

Атрибуты никогда не входят в пространство имен по умолчанию. Если имя атрибута записано без префикса, то это означает, что атрибут не относится ни к одному пространству имен. Программы, анализирующие документ, не будут искать такое имя ни в одном пространстве имен.

Хорошо оформленный документ должен использовать пространства имен для всех своих элементов.

Еще один префикс, xml, связан в той же рекомендации с идентификатором http://www.w3.org/XML/1998/namespace. Его тоже не надо определять в документе XML. Никакой другой префикс не может быть связан с этими идентификаторами.

Пока есть только два атрибута с префиксом xml. Для каждого элемента верного документа, в котором используются эти атрибуты, они должны быть объявлены в описании DTD (Document Type Definition).

Инструкции по обработке (processing instructions) содержат указания программе-обработчику документа XML. В отличие от элементов, инструкции по обработке заключаются между символами <? и ?>. Сразу за начальным вопросительным знаком записывается имя программного модуля, которому предназначена инструкция. Затем, через пробел, идет сама инструкция, передаваемая программному модулю. Она записывается произвольно, просто как строка символов, которая, конечно, не должна содержать пару символов ?>, означающую конец инструкции. Смысл инструкции определяется программным модулем, которому она предназначена.

Примером инструкции по обработке может служить первая строка пролога документа XML — объявление XML

<?xml version="1.0" encoding="windows-1251"?>

Эта инструкция предназначена программе, обрабатывающей документ XML. Инструкция передает ей номер версии и кодировку, в которой записан документ.

Этот пример объясняет одно ограничение, накладываемое на имя программного модуля — им не может служить слово xml, записанное в любом регистре.

Инструкции по обработке могут располагаться в любом месте документа, но целиком в пределах одного элемента.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]