Spec-Zone.ru › OpenJDK 17

Класс CatalogFeatures

java.lang.Object
javax.xml.catalog.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 URI Читает первый каталог как текущий; Загружает другие, если совпадение не найдено в текущем каталоге, включая делегированные каталоги, если таковые имеются.
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 Catalog так же, как 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"/>
 
Since:
9
END_OF_DOCUMENT_MARKER

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

Modifier and Type Class Описание
static class  CatalogFeatures.Builder
Класс-билдер для создания объекта CatalogFeatures.
static enum  CatalogFeatures.Feature
Тип Feature, как определено в таблице Catalog Features.

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

Modifier and Type Метод Описание
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 с настройками по умолчанию.
Returns:
экземпляр CatalogFeatures по умолчанию

get

public String get(CatalogFeatures.Feature cf)
Возвращает значение указанного параметра.
Parameters:
cf - тип параметра Catalog feature
Returns:
значение параметра

builder

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

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

Spec-Zone.ru

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