Класс CatalogFeatures
public class CatalogFeatures extends Object
| Функция | Описание | Имя свойства | Системное свойство [1] | Значение [2] | Действие | |
|---|---|---|---|---|---|---|
| Тип | Значение | |||||
| FILES | Список URI каталожных файлов, разделённых точкой с запятой. 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 распознаются API Java Catalog так же, как prefer, являясь атрибутом в записи каталога основного каталога. Обратите внимание, что будут использоваться только атрибуты, указанные для записи каталога основного файла каталога.
[5] Если целью является совместное использование всего хранилища каталогов, может быть желательно установить свойство javax.xml.catalog.defer в значение false, чтобы позволить предварительно загрузить весь каталог.
Порядок приоритета свойств
Класс Catalog Features следует порядку приоритета свойств, как описано в сводном обзоре модуля, относительно приоритета, с которым их значения извлекаются из различных источников конфигурации, таких как файл конфигурации JAXP, системные и API-свойства. Помимо общих источников конфигурации, класс Catalog Features дополнительно поддерживается в файле каталога, где они могут быть указаны как атрибуты записей каталога и группы. Когда атрибуты указаны, они имеют преимущество перед любыми другими источниками конфигурации. Например, если атрибут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-процессоров
Класс Catalog Features поддерживается во всех 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 |
Возвращает значение указанной функции. |
Подробное описание методов
defaults
public static CatalogFeatures defaults()
- Возвращает:
- экземпляр CatalogFeatures по умолчанию
get
public String get(CatalogFeatures.Feature cf)
- Параметры:
-
cf- тип параметра Catalog feature - Возвращает:
- значение параметра
builder
public static CatalogFeatures.Builder builder()
- Возвращает:
- экземпляр билдера
© 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://download.java.net/java/early_access/jdk24/docs/api/java.xml/javax/xml/catalog/CatalogFeatures.html