Читать «Java 7 (Наиболее полное руководство)» онлайн - страница 457

Ильдар Шаукатович Хабибуллин

Поскольку идентификатор — это строка символов, то и сравниваются они как строки, с учетом регистра символов. Например, идентификатор будет считаться XML-анализатором, отличным от идентификатора 2008/ntbml, введенного нами ранее, и будет определять другое пространство имен.

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

setNamespaceAware(true).

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

<ntb:notebook xmlns:ntb = ""

xmlns:bk = "">

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

xmlns:ntb = "">

<head>

<title>MoH 6H6mHOTeKa</title>

</head>

<body>

<ntb:book>

<ntb:title>Созданиe Java Web Services</ntb:title>

</ntb:book>

</body>

</html>

В этом примере пространством имен по умолчанию становится пространство имен XHTML, имеющее общеизвестный идентификатор , и теги, относящиеся к этому пространству имен, записываются без префикса.

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

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