Главная » Java, Web, XML » Пространство имен тегов

0

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

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

Как видите, префикс ntb только что определен, но его уже можно использовать в имени ntb:notebook, В дальнейшем имена тегов и атрибутов, которые мы хотим отнести к пространству имен http://some.firm.com/2003/ntbml, снабжаются префиксом ntb, например:

<ntb:city ntb:type="пoceлoк">Гopeлoвo</ntb:city>

Имя вместе с префиксом, например, ntb: city, называется расширенным или уточненным именем QName (Qualified Name).

Идентификатор пространства имен должен иметь форму URI. Адрес URI, такой как         не имеет никакого значения и

может не соответствовать никакому действительному адресу. Анализатор документа XML и другие программы, использующие документ, не будут обращаться по этому адресу. Там даже нет никакой Web-странички. Просто идентификатор пространства имен должен быть уникальным во всем Интернете, и разработчики рекомендации по применению пространства имен, которую можно посмотреть по адресу http://www.w3.org/TR/1999/REC-xml- справедливо решили, что будет удобно использовать для него DNS-имя сайта, на котором размещено определение пространства имен. Смотрите на URI просто как на строку символов, идентифицирующую пространство имен. Обычно указывается URL (Universal Resource Locator, адрес универсальных ресурсов) фирмы, создавшей данную реализацию XML, или имя файла с описанием схемы XML.

По правилам SGML и XML двоеточие может применяться в именах как обычный символ, поэтому имя с префиксом — это просто фокус, анализатор рассматривает его как обычное имя. Отсюда следует, что в описании DTD нельзя опускать префиксы имен. Некоторым анализаторам надо специально указать необходимость учета пространства имен. Например, при работе с анализатором Xerces надо применить метод setNamespaceAware(true).

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

<ntb:notebook

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

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

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

xmlns:ntb = "http: //seme. firm. ccm/2002/nttml">

<head>

<title>MoH библиотека</-Ы1:1е>

</head>

<body>

<ntb:book>

<ntb:title>Co3flaHMe Java Web Services</ntb:title>

</ntb:book> </body>

</html>

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

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

Теперь, после того как мы ввели понятие пространства имен, можно обратиться к схеме XML.

Литература:

Хабибуллин И. Ш. Разработка Web-служб средствами Java. — СПб.: БХВ-Петербург, 2003. — 400 с: ил.

По теме:

  • Комментарии