Spec-Zone.ru › OpenJDK 17

Класс 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 должны получать непустые строки для uri, localName, и qname, даже если SAX позволяет некоторым из них быть нулевыми. Аналогично, заданный пользователем ContentHandler получит непустые строки для всех трех параметров.
  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.
Возвращает:
Текущее значение функции (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.
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, 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/validation/ValidatorHandler.html

Spec-Zone.ru

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