Spec-Zone.ru › OpenJDK 21

Класс ValidatorHandler

java.lang.Object
javax.xml.validation.ValidatorHandler
Все реализуемые интерфейсы:
ContentHandler
public abstract class ValidatorHandler extends Object implements ContentHandler
Потоковый валидатор, работающий с потоком SAX.

Объект ValidatorHandler не является потокобезопасным и не реентерабельным. Иными словами, приложение несет ответственность за то, чтобы один объект ValidatorHandler не использовался более чем одной нитью в любой момент времени.

ValidatorHandler проверяет, соответствуют ли события SAX набору ограничений, описанных в связанной Schema, а также может изменять события SAX (например, добавлять значения по умолчанию и т. д.).

ValidatorHandler расширяет ContentHandler, но уточняет базовый ContentHandler следующим образом:

  1. События startElement/endElement должны получать не-null строки для uri, localName, и qname, даже если SAX позволяет некоторым из них быть null. Аналогично, указанный пользователем ContentHandler получит не-null строки для всех трех параметров.
  2. Приложения должны гарантировать, что ValidatorHandler's ContentHandler.startPrefixMapping(String,String) и ContentHandler.endPrefixMapping(String) вызываются должным образом. Аналогично, указанный пользователем ContentHandler получит события startPrefixMapping/endPrefixMapping. Если ValidatorHandler добавляет дополнительные связи имен пространств, указанный пользователем ContentHandler получит дополнительные события startPrefixMapping/endPrefixMapping.
  3. Attributes для метода ContentHandler.startElement(String,String,String,Attributes) может или не может включать атрибуты xmlns*.

ValidatorHandler автоматически сбрасывается каждый раз при вызове метода startDocument.

Распознаваемые свойства и функции

Этот стандарт определяет следующую функцию, которую должны распознавать все реализации ValidatorHandler.

http://xml.org/sax/features/namespace-prefixes

Эта функция управляет тем, как ValidatorHandler вводит связи имен пространств, которые отсутствовали в исходном потоке SAX. Когда эта функция установлена в значение true, она должна убедиться, что указанный пользователем ContentHandler увидит соответствующий атрибут xmlns* в объекте Attributes обратного вызова ContentHandler.startElement(String,String,String,Attributes). В противном случае, атрибуты xmlns* не должны добавляться к Attributes, который передается указанному пользователем ContentHandler.

(Обратите внимание, что независимо от этого переключателя, связи имен пространств всегда сообщаются приложениям через методы ContentHandler.startPrefixMapping(String,String) и ContentHandler.endPrefixMapping(String) интерфейса ContentHandler, указанного пользователем.)

Обратите внимание, что эта функция НЕ влияет на способ получения ValidatorHandler событий SAX. Она лишь изменяет способ дополнения событий SAX.

Эта функция установлена в значение false по умолчанию.

Since:
1.5

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

ValidatorHandler()
Модификатор Конструктор Описание
protected
Конструктор для производных классов.

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

Модификатор и тип Метод Описание
abstract ContentHandler getContentHandler()
Получает ContentHandler, который получает результаты валидации.
abstract ErrorHandler getErrorHandler()
Получает текущий ErrorHandler, установленный для данного ValidatorHandler.
boolean getFeature(String name)
Поиск значения флага функции.
Object getProperty(String name)
Поиск значения свойства.
abstract LSResourceResolver getResourceResolver()
Получает текущий LSResourceResolver, установленный для данного ValidatorHandler.
abstract TypeInfoProvider getTypeInfoProvider()
Получает реализацию TypeInfoProvider для данного ValidatorHandler.
abstract void setContentHandler(ContentHandler receiver)
Устанавливает ContentHandler, который получает результаты валидации.
abstract void setErrorHandler(ErrorHandler errorHandler)
Устанавливает ErrorHandler для получения ошибок, обнаруженных во время валидации.
void setFeature(String name, boolean value)
Устанавливает функцию для данного ValidatorHandler.
void setProperty(String name, Object object)
Устанавливает значение свойства.
abstract void setResourceResolver(LSResourceResolver resourceResolver)
Устанавливает LSResourceResolver для настройки разрешения ресурсов во время валидации.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Методы, унаследованные от интерфейса org.xml.sax.ContentHandler

characters, declaration, endDocument, endElement, endPrefixMapping, ignorableWhitespace, processingInstruction, setDocumentLocator, skippedEntity, startDocument, startElement, startPrefixMapping

Подробное описание конструкторов

ValidatorHandler

protected ValidatorHandler()

Конструктор для производных классов.

Конструктор ничего не делает.

Производные классы должны создать объекты ValidatorHandler, которые имеют null обработчик ошибок ErrorHandler и null разыскщик ресурсов LSResourceResolver.

Подробное описание методов

setContentHandler

public abstract void setContentHandler(ContentHandler receiver)
Устанавливает обработчик событий ContentHandler, который получает результаты валидации с расширениями.

При указании обработчика событий ContentHandler, класс ValidatorHandler будет работать как фильтр и в основном копировать входящие события в указанный обработчик событий ContentHandler.

При этом класс ValidatorHandler может изменять события, например, добавляя значения по умолчанию для атрибутов.

Класс ValidatorHandler может буферизовать события до определённой степени, но для использования ValidatorHandler анализатором, необходимо выполнить следующие требования.

  1. Когда вызываются ContentHandler.startElement(String, String, String, Attributes), ContentHandler.endElement(String, String, String), ContentHandler.startDocument() или ContentHandler.endDocument() для класса ValidatorHandler, те же методы для указанного обработчика событий ContentHandler должны быть вызваны для того же события до возврата вызова.
  2. Класс ValidatorHandler не должен вводить новые элементы, которые не были в исходных данных.
  3. Класс ValidatorHandler не должен удалять атрибуты, которые были в исходных данных.

Если метод обратного вызова для указанного обработчика событий ContentHandler вызывает исключение, то то же исключение должно быть выброшено классом ValidatorHandler. Обработчик ошибок ErrorHandler не должен уведомляться об таком исключении.

Этот метод может быть вызван даже в середине процесса валидации.

Parameters:
receiver - Обработчик событий ContentHandler или null.

getContentHandler

public abstract ContentHandler getContentHandler()
Возвращает обработчик событий ContentHandler, который получает результаты валидации с расширениями.
Returns:
Этот метод возвращает объект, который был в последний раз установлен методом getContentHandler(), или null, если этот метод не был вызван с момента создания этого объекта ValidatorHandler.
See Also:
  • setContentHandler(ContentHandler)

setErrorHandler

public abstract void setErrorHandler(ErrorHandler errorHandler)
Устанавливает обработчик ошибок ErrorHandler для обработки ошибок, возникших во время валидации.

Обработчик ошибок может использоваться для настройки процесса обработки ошибок во время валидации. Когда обработчик ошибок ErrorHandler установлен, обнаруженные во время валидации ошибки сначала будут отправлены обработчику ошибок ErrorHandler.

Обработчик ошибок может немедленно прервать дальнейшую валидацию, выбросив исключение SAXException из обработчика. Или, например, он может вывести ошибку на экран и попытаться продолжить валидацию, вернувшись обычно из обработчика ErrorHandler.

Если любое исключение Throwable выбрасывается из обработчика ошибок ErrorHandler, то тот же объект исключения Throwable будет переброшен в верхний уровень стека вызовов.

Класс ValidatorHandler не может выбросить исключение SAXException без предварительного сообщения об этом обработчику ошибок ErrorHandler.

Если обработчик ошибок ErrorHandler равен null, то реализация будет вести себя так, как если бы был установлен следующий обработчик ошибок ErrorHandler:

 class DraconianErrorHandler implements ErrorHandler {
     public void fatalError( SAXParseException e ) throws SAXException {
         throw e;
     }
     public void error( SAXParseException e ) throws SAXException {
         throw e;
     }
     public void warning( SAXParseException e ) throws SAXException {
         // noop
     }
 }
 

При создании нового объекта ValidatorHandler это поле изначально устанавливается в значение null.

Parameters:
errorHandler - Новый обработчик ошибок. Это значение может быть null.

getErrorHandler

public abstract ErrorHandler getErrorHandler()
Возвращает текущий обработчик ошибок ErrorHandler, установленный для этого объекта ValidatorHandler.
Returns:
Этот метод возвращает объект, который был в последний раз установлен методом setErrorHandler(ErrorHandler), или null, если этот метод не был вызван с момента создания этого объекта ValidatorHandler.
See Also:
  • setErrorHandler(ErrorHandler)

setResourceResolver

public abstract void setResourceResolver(LSResourceResolver resourceResolver)
Устанавливает разыскщик ресурсов LSResourceResolver для настройки разрешения ресурсов во время валидации.

Класс ValidatorHandler использует разыскщик ресурсов LSResourceResolver при необходимости поиска внешних ресурсов во время валидации, хотя то, что считается "поиском внешних ресурсов", зависит от каждого языка схемы.

Если разыскщик ресурсов LSResourceResolver равен null, то реализация будет вести себя так, как если бы был установлен следующий разыскщик ресурсов LSResourceResolver:

 class DumbLSResourceResolver implements LSResourceResolver {
     public LSInput resolveResource(
         String publicId, String systemId, String baseURI) {

         return null; // always return null
     }
 }
 

Если разыскщик ресурсов LSResourceResolver выбрасывает исключение RuntimeException (или его производные), то класс ValidatorHandler прервёт процесс парсинга, и вызывающий метод validate получит то же исключение RuntimeException.

При создании нового объекта ValidatorHandler это поле изначально устанавливается в значение null.

Parameters:
resourceResolver - Новый разыскщик ресурсов. Это значение может быть null.

getResourceResolver

public abstract LSResourceResolver getResourceResolver()
Возвращает текущий разыскщик ресурсов LSResourceResolver, установленный для этого объекта ValidatorHandler.
Returns:
Этот метод возвращает объект, который был в последний раз установлен методом setResourceResolver(LSResourceResolver), или null, если этот метод не был вызван с момента создания этого объекта ValidatorHandler.
See Also:
  • setErrorHandler(ErrorHandler)

getTypeInfoProvider

public abstract TypeInfoProvider getTypeInfoProvider()
Получает реализацию TypeInfoProvider для данного ValidatorHandler.

Полученная TypeInfoProvider может быть запрошена во время разбора для доступа к информации о типах, определённой валидатором.

Некоторые языки схем не определяют понятие типа; для таких языков этот метод может быть не поддерживается. Однако для соответствия этому спецификации, реализации для W3C XML Schema 1.0 должны поддерживать эту операцию.

Возвращает:
null, если валидатор/язык схемы не поддерживает понятие TypeInfo. В противном случае, непустой и валидный TypeInfoProvider.

getFeature

public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException
Получает значение флага функции.

Имя функции — любой полносинтаксический URI. ValidatorHandler может распознать имя функции, но временно не сможет вернуть его значение. Некоторые значения функций доступны только в определённых контекстах, например, до, во время или после валидации.

Реализаторы свободны (и им рекомендуется) придумывать свои собственные функции, используя имена, основанные на своих собственных URI.

Параметры:
name — имя функции, которое является полносинтаксическим URI (не null).
Возвращает:
Текущее значение функции (true или false).
Исключения:
SAXNotRecognizedException — если значение функции нельзя присвоить или получить.
SAXNotSupportedException — когда ValidatorHandler распознаёт имя функции, но не может определить его значение в данный момент.
NullPointerException — когда name равно null.
См. также:
  • setFeature(String, boolean)

setFeature

public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException

Устанавливает функцию для этого ValidatorHandler.

Функции могут использоваться для управления способом, которым ValidatorHandler анализирует схемы. Имя функции — любой полносинтаксический URI. SchemaFactory может предоставить значение функции, но не сможет изменить текущее значение. Некоторые значения функций могут быть неизменяемыми или изменяемыми только в определённых контекстах, например, до, во время или после валидации.

Все реализации обязаны поддерживать функцию XMLConstants.FEATURE_SECURE_PROCESSING. Когда функция:

  • true: реализация ограничит обработку XML, чтобы соответствовать ограничениям реализации. Примеры включают ограничения расширения сущностей и конструкции XML Schema, которые потребляли бы большое количество ресурсов. Если обработка XML ограничена по соображениям безопасности, это будет сообщено через вызов зарегистрированного ErrorHandler.fatalError(SAXParseException exception). См. setErrorHandler(ErrorHandler errorHandler).
  • false: реализация будет обрабатывать XML в соответствии со спецификациями XML без учёта возможных ограничений реализации.
Параметры:
name — имя функции, которое является полносинтаксическим URI (не null).
value — запрошенное значение функции (true или false).
Исключения:
SAXNotRecognizedException — если значение функции нельзя присвоить или получить.
SAXNotSupportedException — когда ValidatorHandler распознаёт имя функции, но не может установить запрошенное значение.
NullPointerException — когда name равно null.
См. также:
  • getFeature(String)

setProperty

public void setProperty(String name, Object object) throws SAXNotRecognizedException, SAXNotSupportedException
Устанавливает значение свойства.

Имя свойства — любой полносинтаксический URI. ValidatorHandler может распознать имя свойства, но не сможет изменить текущее значение. Некоторые значения свойств могут быть неизменяемыми или изменяемыми только в определённых контекстах, например, до, во время или после валидации.

ValidatorHandler не обязаны распознавать какие-либо конкретные имена свойств.

Параметры:
name — имя свойства, которое является полносинтаксическим URI (не null).
object — запрошенное значение свойства.
Исключения:
SAXNotRecognizedException — если значение свойства нельзя присвоить или получить.
SAXNotSupportedException — когда ValidatorHandler распознаёт имя свойства, но не может установить запрошенное значение.
NullPointerException — когда name равно null.

getProperty

public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException
Получает значение свойства.

Имя свойства — любой полносинтаксический URI. ValidatorHandler может распознать имя свойства, но временно не сможет вернуть его значение. Некоторые значения свойств доступны только в определённых контекстах, например, до, во время или после валидации.

ValidatorHandler не обязаны распознавать какие-либо конкретные имена свойств.

Реализаторы свободны (и им рекомендуется) придумывать свои собственные свойства, используя имена, основанные на своих собственных URI.

Параметры:
name — имя свойства, которое является полносинтаксическим URI (не null).
Возвращает:
Текущее значение свойства.
Исключения:
SAXNotRecognizedException — если значение свойства нельзя присвоить или получить.
SAXNotSupportedException — когда XMLReader распознаёт имя свойства, но не может определить его значение в данный момент.
NullPointerException — когда name равно null.
См. также:
  • setProperty(String, Object)

© 1993, 2023, 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/21/docs/api/java.xml/javax/xml/validation/ValidatorHandler.html

Spec-Zone.ru

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