Класс CatalogFeatures

public class CatalogFeatures
extends Object

Класс CatalogFeatures хранит коллекцию функций и свойств.

Функция Описание Имя свойства Системное свойство [1] jaxp.properties [1] Значение [2] Действие
Тип Значение
FILES Список URI, разделённых точкой с запятой, для определения файлов каталога. URI должны быть абсолютными и иметь обработчик протокола URL для схемы URI. javax.xml.catalog.files javax.xml.catalog.files javax.xml.catalog.files String URIs Считывает первый каталог как текущий; Загружает другие, если совпадение не найдено в текущем каталоге, включая делегированные каталоги, если таковые имеются.
PREFER Указывает предпочтение между общедоступными и системными идентификаторами. Значение по умолчанию — public [3]. javax.xml.catalog.prefer N/A N/A String system Ищет совпадения в системных записях; Ищет общедоступные записи, когда внешний идентификатор указывает только общедоступный идентификатор
public Ищет совпадения в системных записях; Ищет общедоступные записи, если нет соответствующей системной записи.
DEFER Указывает, что альтернативные каталоги, включая те, которые указаны в делегированных записях или nextCatalog, не будут читаться до тех пор, пока не понадобятся. Значение по умолчанию — true. javax.xml.catalog.defer [4] javax.xml.catalog.defer javax.xml.catalog.defer String true Загружает альтернативные каталоги по мере необходимости.
false Загружает все каталоги [5].
RESOLVE Определяет действие, если после перебора всех указанных каталогов не найдено соответствующей записи. Значение по умолчанию — strict. javax.xml.catalog.resolve [4] javax.xml.catalog.resolve 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 Catalog, defer и resolve, распознаются API каталога Java так же, как prefer, как атрибут в записи каталога основного каталога. Обратите внимание, что будут использованы только атрибуты, указанные для записи каталога основного файла каталога.

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

Область действия и порядок

Функции и свойства могут быть заданы через файл каталога, API каталога, системные свойства и jaxp.properties, с предпочтением в том же порядке.

Свойства, заданные в качестве атрибутов в файле каталога для записей каталога и групп, имеют приоритет над другими настройками. Например, если атрибут prefer задан в файле каталога, как в <catalog prefer="public">, никакие другие входные данные для свойства "prefer" не требуются или будут игнорироваться.

Свойства, заданные через API каталога, имеют приоритет над теми, которые могут быть заданы системными свойствами и/или в jaxp.properties. В случае нескольких интерфейсов, последняя процедура имеет приоритет. Для CatalogFeatures.Feature.FILES, это означает, что URI(и), указанные через методы CatalogManager, перекроют любые, которые могли быть введены через CatalogFeatures.Builder.

Системные свойства, если заданы, имеют приоритет над теми, что в jaxp.properties.

Файл jaxp.properties обычно находится в каталоге conf установки Java. Он считывается реализацией JAXP только один раз, а его значения кэшируются для последующего использования. Если файл не существует при первой попытке чтения из него, дальнейшие попытки проверки его существования не предпринимаются. Изменить значение каких-либо свойств в jaxp.properties после его чтения невозможно.

Экземпляр 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="http://openjdk.java.net/xml/disclaimer.xml"/>

   can be resolved using a URI entry:
   <uri name="http://openjdk.java.net/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="http://openjdk.java.net/xsd/XSDImport_person"
                schemaLocation="http://openjdk.java.net/xsd/XSDImport_person.xsd"/>

   can be resolved using a URI entry:
   <uri name="http://openjdk.java.net/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="http://openjdk.java.net/xsd/XSDImport_person" uri="file:///pathto/local/XSDImport_person.xsd"/>
Включение XSD uri
The following include element:
   <xsd:include schemaLocation="http://openjdk.java.net/xsd/XSDInclude_person.xsd"/>

   can be resolved using a URI entry:
   <uri name="http://openjdk.java.net/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="http://openjdk.java.net/xsl/include.xsl"/>

   can be resolved using a URI entry:
   <uri name="http://openjdk.java.net/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('http://openjdk.java.net/xsl/list.xml')"/>

   can be resolved using a URI entry:
   <uri name="http://openjdk.java.net/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

Класс билдера для создания объекта CatalogFeatures.

static class  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, 2020, 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/11/docs/api/java.xml/javax/xml/catalog/CatalogFeatures.html

Spec-Zone .ru
спецификации, руководства, описания, API