Spec-Zone.ru › OpenJDK 17

Класс NamespaceSupport

java.lang.Object
org.xml.sax.helpers.NamespaceSupport
public class NamespaceSupport extends Object
Инкапсулирует логику пространств имён для использования приложениями, использующими SAX, или внутренне драйверами SAX.

Этот класс инкапсулирует логику обработки пространств имён: он отслеживает объявления, действующие в данный момент для каждого контекста, и автоматически преобразует квалифицированные имена XML в их части пространства имён; он также может быть использован в обратном порядке для генерации полных имён XML из пространств имён.

Объекты поддержки пространств имён являются многократно используемыми, но метод reset должен вызываться между каждой сессией.

Вот простая сессия:

 String parts[] = new String[3];
 NamespaceSupport support = new NamespaceSupport();

 support.pushContext();
 support.declarePrefix("", "http://www.w3.org/1999/xhtml");
 support.declarePrefix("dc", "http://www.purl.org/dc#");

 parts = support.processName("p", parts, false);
 System.out.println("Namespace URI: " + parts[0]);
 System.out.println("Local name: " + parts[1]);
 System.out.println("Raw name: " + parts[2]);

 parts = support.processName("dc:title", parts, false);
 System.out.println("Namespace URI: " + parts[0]);
 System.out.println("Local name: " + parts[1]);
 System.out.println("Raw name: " + parts[2]);

 support.popContext();
 

Обратите внимание, что этот класс оптимизирован для случая, когда большинство элементов не содержат объявлений пространств имён: если одно и то же соответствие префикс/URI повторяется для каждого контекста (например), этот класс будет несколько менее эффективным.

Хотя драйверы SAX (парсеры) могут выбрать использование этого класса для реализации обработки пространств имён, они не обязаны это делать. Приложения должны самостоятельно отслеживать информацию о пространствах имён, если они хотят использовать информацию о пространствах имён.

Since:
1.4, SAX 2.0

Краткое описание полей

Модификатор и тип Поле Описание
static final String NSDECL
URI объявления пространства имён в качестве константы.
static final String XMLNS
URI XML пространства имён в качестве константы.

Краткое описание конструкторов

Конструктор Описание
NamespaceSupport()
Создать новый объект поддержки пространств имён.

Краткое описание методов

Модификатор и тип Метод Описание
boolean declarePrefix(String prefix, String uri)
Объявить префикс пространства имён.
Enumeration<String> getDeclaredPrefixes()
Возвращает перечисление всех префиксов, объявленных в данном контексте.
String getPrefix(String uri)
Возвращает один из префиксов, сопоставленных с URI пространства имён.
Enumeration<String> getPrefixes()
Возвращает перечисление всех префиксов, объявления которых активны в текущем контексте.
Enumeration<String> getPrefixes(String uri)
Возвращает перечисление всех префиксов для данного URI, объявления которых активны в текущем контексте.
String getURI(String prefix)
Ищет префикс и получает сопоставленный в настоящее время URI пространства имён.
boolean isNamespaceDeclUris()
Возвращает true, если атрибуты объявления пространства имён помещаются в пространство имён.
void popContext()
Возвращается к предыдущему контексту пространства имён.
String[] processName(String qName, String[] parts, boolean isAttribute)
Обрабатывает сырое квалифицированное имя XML после того, как все объявления в текущем контексте были обработаны методом declarePrefix().
void pushContext()
Начинает новый контекст пространства имён.
void reset()
Сбрасывает этот объект поддержки пространств имён для повторного использования.
void setNamespaceDeclUris(boolean value)
Управляет тем, помещаются ли атрибуты объявления пространства имён в пространство имён NSDECL методом processName().

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание полей

XMLNS

public static final String XMLNS
URI пространства имён XML в виде константы. Значение равно http://www.w3.org/XML/1998/namespace , как определено в *рекомендации «Пространства имён в XML».

Это URI пространства имён, который автоматически сопоставляется с префиксом «xml».

См. также:
  • Значения постоянных полей

NSDECL

public static final String NSDECL
URI объявления пространства имён в виде константы. Значение равно http://www.w3.org/xmlns/2000/, как определено в несовместимом с предыдущими версиями исправление к рекомендации «Пространства имён в XML». Поскольку это исправление появилось после SAX2, SAX2 по умолчанию использует исходную рекомендацию и обычно не использует этот URI.

Это URI пространства имён, который опционально применяется к атрибутам xmlns и xmlns:*, которые используются для объявления пространств имён.

С:
1.5, SAX 2.1alpha
См. также:
  • setNamespaceDeclUris(boolean)
  • isNamespaceDeclUris()
  • Значения постоянных полей

Подробное описание конструкторов

NamespaceSupport

public NamespaceSupport()
Создаёт новый объект поддержки пространств имён.

Подробное описание методов

reset

public void reset()
Сброс объекта поддержки пространств имён для повторного использования.

Необходимо вызвать этот метод перед повторным использованием объекта поддержки пространств имён для новой сессии. Если необходимо поддерживать URI объявления пространств имён, этот флаг также должен быть установлен в значение, отличное от значения по умолчанию.

См. также:
  • setNamespaceDeclUris(boolean)

pushContext

public void pushContext()
Начало нового контекста пространства имён. Новый контекст автоматически унаследует объявления родительского контекста, но также будет отслеживать объявления, сделанные в этом контексте.

Код обратного вызова событий должен начинать новый контекст один раз на каждый элемент. Это означает готовность к вызову этого метода в двух местах. Для элементов, не включающих объявления пространств имён, вызов ContentHandler.startElement() является правильным местом. Для элементов с таким объявлением это делается в первом вызове ContentHandler.startPrefixMapping(). Флаг boolean можно использовать для отслеживания того, был ли контекст начат. При вызове любого из этих методов проверяется, требуется ли начать новый контекст. Если да, то контекст запускается, и флаг устанавливается. После того, как ContentHandler.startElement() делает это, флаг всегда сбрасывается.

Обычно драйверы SAX запускали бы новый контекст в начале каждого XML-элемента. Затем они выполняют первый проход по атрибутам для обработки всех объявления пространств имён, вызывая ContentHandler.startPrefixMapping(). Затем выполняется второй проход для определения имён пространств имён для всех атрибутов и для имени элемента. Наконец, вся информация для вызова ContentHandler.startElement() становится доступной, поэтому она может быть сделана.

Объект поддержки пространств имён всегда начинает работу с уже действующим базовым контекстом: в этом контексте объявлено только префикс «xml».

См. также:
  • ContentHandler
  • popContext()

popContext

public void popContext()
Возврат к предыдущему контексту пространства имён.

Обычно вы должны вытолкнуть контекст в конце каждого XML-элемента. После выталкивания контекста все сопоставления префиксов пространств имён, которые ранее действовали, восстанавливаются.

Не следует пытаться объявлять дополнительные префиксы пространств имён после выталкивания контекста, если вы не вытолкнете другой контекст.

См. также:
  • pushContext()

declarePrefix

public boolean declarePrefix(String prefix, String uri)
Объявление префикса пространства имён. Все префиксы должны быть объявлены до их использования. Например, драйвер SAX (парсер) просматривает атрибуты элемента в двух проходах: сначала для объявления пространств имён, затем во втором проходе с помощью processName() для интерпретации префиксов по отношению к (возможно, переопределённым) префиксам.

Этот метод объявляет префикс в текущем контексте пространства имён; префикс остаётся в силе до тех пор, пока этот контекст не будет вытолкнут, если он не затенено в дочернем контексте.

Для объявления пространства имён по умолчанию для элемента используйте пустую строку в качестве префикса.

Обратите внимание, что в этой библиотеке существует асимметрия: getPrefix не вернёт префикс «», даже если вы объявили пространство имён по умолчанию для элемента. Чтобы проверить пространство имён по умолчанию, необходимо явно получить его с помощью getURI. Эта асимметрия существует для упрощения поиска префиксов для имён атрибутов, где префикс по умолчанию не разрешается.

Параметры:
prefix - Префикс для объявления или пустая строка для указания пространства имён по умолчанию для элемента. Это значение никогда не может быть «xml» или «xmlns».
uri - URI пространства имён, который следует сопоставить с префиксом.
Возвращает:
true, если префикс был допустимым, иначе false
См. также:
  • processName(java.lang.String, java.lang.String[], boolean)
  • getURI(java.lang.String)
  • getPrefix(java.lang.String)

processName

public String[] processName(String qName, String[] parts, boolean isAttribute)
Обработка квалифицированного имени XML после обработки всех объявлений в текущем контексте с помощью declarePrefix().

Этот метод обрабатывает квалифицированное имя XML в текущем контексте путём удаления префикса и поиска его среди объявленных префиксов. Результат будет содержать массив, предоставленный вызывающей стороной, заполненный следующим образом:

parts[0]
URI пространства имён или пустая строка, если пространство имён не используется.
parts[1]
Локальное имя (без префикса).
parts[2]
Исходное полное имя.

Все строки в массиве будут интернализованы. Если имя содержит префикс, который не был объявлен, то возвращаемое значение будет null.

Обратите внимание, что имена атрибутов обрабатываются иначе, чем имена элементов: имя элемента без префикса получит пространство имён по умолчанию (если оно существует), в то время как имя атрибута без префикса не получит.

Параметры:
qName - Квалифицированное имя XML для обработки.
parts - Массив, предоставленный вызывающей стороной, способный содержать как минимум три члена.
isAttribute - Флаг, указывающий, является ли это имя атрибута (true) или имя элемента (false).
Возвращает:
Предоставленный массив, содержащий три интернализованные строки, представляющие URI пространства имён (или пустую строку), локальное имя и квалифицированное имя XML; или null, если префикс не объявлен.
См. также:
  • declarePrefix(java.lang.String, java.lang.String)
  • String.intern()

getURI

public String getURI(String prefix)
Поиск префикса и получение сопоставленного URI пространства имён.

Этот метод ищет префикс в текущем контексте. Используйте пустую строку («») для пространства имён по умолчанию.

Параметры:
prefix - Префикс для поиска.
Возвращает:
Соответствующий URI пространства имён или null, если префикс не объявлен в данном контексте.
См. также:
  • getPrefix(java.lang.String)
  • getPrefixes()

getPrefixes

public Enumeration<String> getPrefixes()
Возвращает перечисление всех префиксов, объявления которых активны в текущем контексте. Это включает объявления из родительских контекстов, которые не были переопределены.

Примечание: если есть префикс по умолчанию, он не будет возвращён в этом перечислении; проверьте префикс по умолчанию с помощью getURI с аргументом «».

Возвращает:
Перечисление префиксов (никогда не пустое).
См. также:
  • getDeclaredPrefixes()
  • getURI(java.lang.String)

getPrefix

public String getPrefix(String uri)
Возвращает один из префиксов, сопоставленных с URI пространства имён.

Если более одного префикса сопоставлено с одним и тем же URI, этот метод произвольно выбирает один; если вам нужны все префиксы, используйте метод getPrefixes().

Примечание: это никогда не вернёт пустой (по умолчанию) префикс; чтобы проверить префикс по умолчанию, используйте метод getURI с аргументом «».

Параметры:
uri - URI пространства имён
Возвращает:
Один из префиксов, в настоящее время сопоставленных с предоставленным URI, или null, если ни один не сопоставлен или URI назначен пространству имён по умолчанию
См. также:
  • getPrefixes(java.lang.String)
  • getURI(java.lang.String)

getPrefixes

public Enumeration<String> getPrefixes(String uri)
Возвращает перечисление всех префиксов для заданного URI, объявления которых активны в текущем контексте. Это включает объявления из родительских контекстов, которые не были перезаписаны.

Этот метод возвращает префиксы, сопоставленные с определённым URI пространства имён. Префикс xml: будет включён. Если вам нужен только один префикс, сопоставленный с URI пространства имён, и вам всё равно какой, используйте метод getPrefix вместо этого.

Примечание: пустой (по умолчанию) префикс никогда не включается в это перечисление; для проверки наличия пространства имён по умолчанию используйте метод getURI с аргументом "".

Parameters:
uri - URI пространства имён.
Returns:
Перечисление префиксов (никогда не пустое).
See Also:
  • getPrefix(java.lang.String)
  • getDeclaredPrefixes()
  • getURI(java.lang.String)

getDeclaredPrefixes

public Enumeration<String> getDeclaredPrefixes()
Возвращает перечисление всех префиксов, объявленных в этом контексте.

Пустой (по умолчанию) префикс будет включён в это перечисление; обратите внимание, что это поведение отличается от поведения getPrefix(java.lang.String) и getPrefixes().

Returns:
Перечисление всех префиксов, объявленных в этом контексте.
See Also:
  • getPrefixes()
  • getURI(java.lang.String)

setNamespaceDeclUris

public void setNamespaceDeclUris(boolean value)
Управляет тем, размещаются ли атрибуты объявления пространства имён в пространстве имён NSDECL методом processName(). Это можно изменить только до того, как будут добавлены какие-либо контексты.
Parameters:
value - флаг, указывающий, размещаются ли атрибуты объявления пространства имён в пространстве имён NSDECL
Throws:
IllegalStateException - при попытке установить это после добавления любого контекста.
Since:
1.5, SAX 2.1alpha

isNamespaceDeclUris

public boolean isNamespaceDeclUris()
Возвращает true, если атрибуты объявления пространства имён размещаются в пространстве имён. Это поведение не является по умолчанию.
Returns:
true, если атрибуты объявления пространства имён размещаются в пространстве имён, в противном случае false
Since:
1.5, SAX 2.1alpha

© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.xml/org/xml/sax/helpers/NamespaceSupport.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API