Spec-Zone.ru › OpenJDK 25

Класс CatalogFeatures

java.lang.Object
javax.xml.catalog.CatalogFeatures
public class CatalogFeatures extends Object
CatalogFeatures содержит набор функций и свойств.
Функции каталога
Функция Описание Имя свойства Системное свойство [1] Значение [2] Действие
Тип Значение
FILES Список URI, разделённых точками с запятой, для расположения файлов каталога. URI должны быть абсолютными и иметь обработчик протокола URL для схемы URI. javax.xml.catalog.files javax.xml.catalog.files String URIs Первый каталог считывается как текущий; остальные загружаются, если в текущем каталоге не найдено совпадение, включая делегированные каталоги, если они есть.
PREFER Указывает предпочтение между общедоступными и системными идентификаторами. Значение по умолчанию — public [3]. javax.xml.catalog.prefer Н/Д String system Выполняется поиск совпадения среди системных записей; поиск среди общедоступных записей выполняется, если внешний идентификатор указывает только общедоступный идентификатор
public Выполняется поиск совпадения среди системных записей; поиск среди общедоступных записей выполняется, если соответствующая системная запись не найдена.
DEFER Указывает, что альтернативные каталоги, включая указанные в делегированных записях или nextCatalog, считываются только при необходимости. Значение по умолчанию — true. javax.xml.catalog.defer [4] javax.xml.catalog.defer String true Альтернативные каталоги загружаются по мере необходимости.
false Загружаются все каталоги[5].
RESOLVE Определяет действие, если после поиска во всех указанных каталогах совпадающая запись не найдена. Значение по умолчанию — strict. javax.xml.catalog.resolve [4] javax.xml.catalog.resolve String strict Если совпадение не найдено, выбрасывается CatalogException.
continue Позволяет XML-анализатору продолжить работу так, как если бы совпадение не было найдено.
ignore Указывает XML-анализатору пропустить внешние ссылки, если совпадение не найдено.

[1] Для функций, помеченных как «Н/Д», системное свойство отсутствует.

[2] Значение должно точно соответствовать указанному в этой таблице, с учётом регистра. Любое неуказанное значение приведёт к возникновению IllegalArgumentException.

[3] В спецификации каталогов определены сложные правила для атрибута prefer. Хотя его значением может быть public или system, спецификация устанавливает system в качестве предпочтительного варианта: независимо от выбранного значения всегда используется системная запись, если она найдена. Общедоступные записи рассматриваются только в том случае, если для prefer задано значение public и системные записи не найдены. Поэтому рекомендуется задавать для атрибута prefer значение public (оно используется по умолчанию).

[4] Хотя defer и resolve не являются стандартными атрибутами спецификации каталогов OASIS, Java Catalog API распознаёт их так же, как prefer — в качестве атрибута записи каталога основного каталога. Обратите внимание, что используются только атрибуты, заданные для записи каталога в основном файле каталога.

[5] Если требуется совместно использовать всё хранилище каталогов, может быть целесообразно установить для свойства javax.xml.catalog.defer значение false, чтобы предварительно загрузить весь каталог.

Приоритет свойств

Для функций каталога действует приоритет свойств, описанный в сводке модуля, который определяет очерёдность получения их значений из различных источников конфигурации, таких как файл конфигурации JAXP, системные свойства и свойства API. Помимо общих источников конфигурации, функции каталога поддерживаются непосредственно в файле каталога, где их можно указать в виде атрибутов записей каталога и группы. Если атрибуты указаны, они имеют приоритет над любыми другими источниками конфигурации. Например, если в файле каталога задан атрибут prefer, как в <catalog prefer="public">, указывать другое значение свойства "prefer" не требуется — оно будет проигнорировано.

Экземпляр CatalogFeatures можно создать с помощью его построителя, как показано в следующем примере кода:

               CatalogFeatures f = CatalogFeatures.builder()
                       .with(Feature.FILES, "file:///etc/xml/catalog")
                       .with(Feature.PREFER, "public")
                       .with(Feature.DEFER, "true")
                       .with(Feature.RESOLVE, "ignore")
                       .build();

Поддержка XML-процессоров JAXP

Функции каталога поддерживаются всеми процессорами JAXP, включая SAX и DOM (javax.xml.parsers), анализаторы StAX (javax.xml.stream), проверку схем (javax.xml.validation) и преобразование XML (javax.xml.transform). Описанные выше функции можно задавать через фабрики или процессоры JAXP, в которых определён интерфейс setProperty или setAttribute. Например, в следующем фрагменте кода свойство javax.xml.catalog.files используется для задания URI файла каталога в анализаторе SAX:
     SAXParserFactory spf = SAXParserFactory.newInstance();
     spf.setFeature(XMLConstants.USE_CATALOG, true); [1]
     SAXParser parser = spf.newSAXParser();
     parser.setProperty(CatalogFeatures.Feature.FILES.getPropertyName(), "file:///etc/xml/catalog");

[1] Обратите внимание, что это действие не требуется, поскольку значение по умолчанию для USE_CATALOG — true.

Поддержка каталогов процессорами JAXP зависит как от функции USE_CATALOG, так и от наличия допустимых файлов каталога. Процессор JAXP использует каталог только в том случае, если функция включена и допустимые файлы каталога заданы с помощью свойства javax.xml.catalog.files. Если USE_CATALOG имеет значение false или файл каталога не указан, процессор не будет пытаться использовать каталог.

Процессоры JAXP учитывают параметры по умолчанию для CatalogFeatures. Например, по умолчанию процессоры сообщают об исключении, если совпадающая запись не найдена, поскольку свойству javax.xml.catalog.resolve по умолчанию задано значение strict.

Процессоры JAXP отдают предпочтение пользовательским обработчикам разрешения. Если такой обработчик зарегистрирован, он используется вместо CatalogResolver. Однако, если он возвращает null, процессоры продолжают разрешение с помощью CatalogResolver. Если он возвращает пустой источник, CatalogResolver не выполняет попыток разрешения.

Поддержка каталогов доступна для любого процесса в библиотеке JAXP, поддерживающего обработчик разрешения. В следующей таблице перечислены все такие процессы.

Процессы с поддержкой каталогов

Процессы с поддержкой каталогов
Процесс Тип записи каталога Пример
DTD и внешние сущности public, system
  The following DTD reference:
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

  Can be resolved using the following Catalog entry:
  <public publicId="-//W3C//DTD XHTML 1.0 Strict//EN" uri="catalog/xhtml1-strict.dtd"/>
  or
  <systemSuffix systemIdSuffix="html1-strict.dtd" uri="catalog/xhtml1-strict.dtd"/>
XInclude uri
  The following XInclude element:
  <xi:include href="https://openjdk.org/xml/disclaimer.xml"/>

  can be resolved using a URI entry:
  <uri name="https://openjdk.org/xml/disclaimer.xml" uri="file:///pathto/local/disclaimer.xml"/>
  or
  <uriSuffix uriSuffix="disclaimer.xml" uri="file:///pathto/local/disclaimer.xml"/>
Импорт XSD uri
  The following import element:
   <xsd:import namespace="https://openjdk.org/xsd/XSDImport_person"
               schemaLocation="https://openjdk.org/xsd/XSDImport_person.xsd"/>

  can be resolved using a URI entry:
  <uri name="https://openjdk.org/xsd/XSDImport_person.xsd" uri="file:///pathto/local/XSDImport_person.xsd"/>
  or
  <uriSuffix uriSuffix="XSDImport_person.xsd" uri="file:///pathto/local/XSDImport_person.xsd"/>
  or
  <uriSuffix uriSuffix="https://openjdk.org/xsd/XSDImport_person" uri="file:///pathto/local/XSDImport_person.xsd"/>
Включение XSD uri
  The following include element:
  <xsd:include schemaLocation="https://openjdk.org/xsd/XSDInclude_person.xsd"/>

  can be resolved using a URI entry:
  <uri name="https://openjdk.org/xsd/XSDInclude_person.xsd" uri="file:///pathto/local/XSDInclude_person.xsd"/>
  or
  <uriSuffix uriSuffix="XSDInclude_person.xsd" uri="file:///pathto/local/XSDInclude_person.xsd"/>
Импорт и включение XSL uri
  The following include element:
  <xsl:include href="https://openjdk.org/xsl/include.xsl"/>

  can be resolved using a URI entry:
  <uri name="https://openjdk.org/xsl/include.xsl" uri="file:///pathto/local/include.xsl"/>
  or
  <uriSuffix uriSuffix="include.xsl" uri="file:///pathto/local/include.xsl"/>
Функция document в XSL uri
  The document in the following element:
  <xsl:variable name="dummy" select="document('https://openjdk.org/xsl/list.xml')"/>

  can be resolved using a URI entry:
  <uri name="https://openjdk.org/xsl/list.xml" uri="file:///pathto/local/list.xml"/>
  or
  <uriSuffix uriSuffix="list.xml" uri="file:///pathto/local/list.xml"/>
Начиная с версии:
9

Краткое описание вложенных классов

Модификатор и тип Класс Описание
static class  CatalogFeatures.Builder
Класс Builder для создания объекта CatalogFeatures.
static enum  CatalogFeatures.Feature
Тип Feature, определённый в таблице функций каталога.

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

Модификатор и тип Метод Описание
static CatalogFeatures.Builder builder()
Возвращает экземпляр построителя для создания объекта CatalogFeatures.
static CatalogFeatures defaults()
Возвращает экземпляр CatalogFeatures с настройками по умолчанию.
String get(CatalogFeatures.Feature cf)
Возвращает значение указанной функции.

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

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

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

defaults

public static CatalogFeatures defaults()
Возвращает экземпляр CatalogFeatures с настройками по умолчанию.
Возвращает:
экземпляр CatalogFeatures по умолчанию

get

public String get(CatalogFeatures.Feature cf)
Возвращает значение указанной функции.
Параметры:
cf — тип функции каталога
Возвращает:
значение функции

builder

public static CatalogFeatures.Builder builder()
Возвращает экземпляр построителя для создания объекта CatalogFeatures.
Возвращает:
экземпляр построителя

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/java.xml/javax/xml/catalog/CatalogFeatures.html

Spec-Zone.ru

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