Spec-Zone.ru › OpenJDK 24

Класс 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 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 не должен уведомляться об этом исключении.

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

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

getContentHandler

public abstract ContentHandler getContentHandler()
Возвращает обработчик событий ContentHandler, получающий результат расширенной валидации.
Возвращает:
Этот метод возвращает объект, последний установленный методом getContentHandler(), или null, если этот метод не был вызван с момента создания этого класса ValidatorHandler.
См. также:
  • 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.

Параметры:
errorHandler - Новый обработчик ошибок. Может быть null.

getErrorHandler

public abstract ErrorHandler getErrorHandler()
Возвращает текущего обработчика ошибок ErrorHandler, установленного для этого класса ValidatorHandler.
Возвращает:
Этот метод возвращает объект, последний установленный методом setErrorHandler(ErrorHandler), или null, если этот метод не был вызван с момента создания этого класса ValidatorHandler.
См. также:
  • 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.

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

getResourceResolver

public abstract LSResourceResolver getResourceResolver()
Возвращает текущего разборщика ресурсов LSResourceResolver, установленного для этого класса ValidatorHandler.
Возвращает:
Этот метод возвращает объект, последний установленный методом setResourceResolver(LSResourceResolver), или null, если этот метод не был вызван с момента создания этого класса ValidatorHandler.
См. также:
  • 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.
Возвращает:
Текущее значение функции (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-схемы, которые будут потреблять большое количество ресурсов. Если обработка XML ограничена по соображениям безопасности, это будет сообщено с помощью вызова зарегистрированного ErrorHandler.fatalError(SAXParseException exception). См. setErrorHandler(ErrorHandler errorHandler).
  • false: реализация будет обрабатывать XML в соответствии со спецификациями XML без учета возможных ограничений реализации.
Параметры:
name — имя функции, которое является непустым полностью квалифицированным URI.
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.
object — запрашиваемое значение свойства.
Исключения:
SAXNotRecognizedException — если значение свойства нельзя назначить или извлечь.
SAXNotSupportedException — когда ValidatorHandler распознаёт имя свойства, но не может установить запрашиваемое значение.
NullPointerException — когда name является null.

getProperty

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

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

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

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

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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.xml/javax/xml/validation/ValidatorHandler.html

Spec-Zone.ru

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