Класс CatalogFeatures
public class CatalogFeatures extends Object
| Функция | Описание | Имя свойства | Системное свойство [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 |
Возвращает значение указанной функции. |
Подробное описание методов
defaults
public static CatalogFeatures defaults()
- Возвращает:
- экземпляр CatalogFeatures по умолчанию
get
public String get(CatalogFeatures.Feature cf)
- Параметры:
-
cf— тип функции каталога - Возвращает:
- значение функции
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://docs.oracle.com/en/java/javase/25/docs/api/java.xml/javax/xml/catalog/CatalogFeatures.html