Класс 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 | 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