Spec-Zone.ru › OpenJDK 21

Класс CatalogFeatures

java.lang.Object
javax.xml.catalog.CatalogFeatures
public class CatalogFeatures extends Object
Класс CatalogFeatures хранит коллекцию функций и свойств.
Функции каталога
Функция Описание Имя свойства Системное свойство [1] Значение [2] Действие
Тип Значение
FILES Список URIs, разделённых точкой с запятой, для поиска файлов каталога. URI должны быть абсолютными и иметь обработчик протокола URL для схемы URI. javax.xml.catalog.files javax.xml.catalog.files String URI Читает первый каталог как текущий; Загружает другие, если совпадение не найдено в текущем каталоге, включая делегированные каталоги, если таковые имеются.
PREFER Указывает предпочтение между общедоступными и системными идентификаторами. Значение по умолчанию — public [3]. javax.xml.catalog.prefer N/A 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] Системное свойство для функций, отмеченных как «N/A», отсутствует.

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

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

[4] Несмотря на то, что нестандартные атрибуты в спецификации каталога OASIS, defer и resolve распознаются Java 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();
 

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

Функции каталога поддерживаются во всех JAXP-процессорах, включая SAX и DOM (javax.xml.parsers), и StAX-парсеры (javax.xml.stream), проверка схемы (javax.xml.validation) и преобразование XML (javax.xml.transform). Описанные выше функции могут быть установлены с помощью JAXP-фабрик или процессоров, которые определяют интерфейс setProperty или setAttribute. Например, следующий фрагмент кода задаёт URI для файла каталога в SAX-парсере через свойство javax.xml.catalog.files:

      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-процессор будет использовать каталог только если функция равна true и корректный файл(ы) каталога указаны через свойство 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"/>
 
Функция документа 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"/>
 
Since:
9

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

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

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

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

Методы, унаследованные от класса java.lang.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 - тип параметра Catalog
Возвращает:
значение параметра

builder

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

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

Spec-Zone.ru

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