Класс ValidatorHandler
- Все реализуемые интерфейсы:
ContentHandler
public abstract class ValidatorHandler extends Object implements ContentHandler
Объект ValidatorHandler не является потокобезопасным и не реентерабельным. Иными словами, приложение несет ответственность за то, чтобы один объект ValidatorHandler не использовался более чем одной нитью в любой момент времени.
ValidatorHandler проверяет, соответствуют ли события SAX набору ограничений, описанных в связанной Schema, а также может изменять события SAX (например, добавлять значения по умолчанию и т. д.).
ValidatorHandler расширяет ContentHandler, но уточняет базовый ContentHandler следующим образом:
- События startElement/endElement должны получать не-null строки для
uri,localName, иqname, даже если SAX позволяет некоторым из них быть null. Аналогично, указанный пользователемContentHandlerполучит не-null строки для всех трех параметров. - Приложения должны гарантировать, что
ValidatorHandler'sContentHandler.startPrefixMapping(String,String)иContentHandler.endPrefixMapping(String)вызываются должным образом. Аналогично, указанный пользователемContentHandlerполучит события startPrefixMapping/endPrefixMapping. ЕслиValidatorHandlerдобавляет дополнительные связи имен пространств, указанный пользователемContentHandlerполучит дополнительные события startPrefixMapping/endPrefixMapping. -
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
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Конструктор для производных классов. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract ContentHandler |
getContentHandler() |
Получает ContentHandler, который получает результаты валидации. |
abstract ErrorHandler |
getErrorHandler() |
Получает текущий ErrorHandler, установленный для данного ValidatorHandler. |
boolean |
getFeature |
Поиск значения флага функции. |
Object |
getProperty |
Поиск значения свойства. |
abstract LSResourceResolver |
getResourceResolver() |
Получает текущий LSResourceResolver, установленный для данного ValidatorHandler. |
abstract TypeInfoProvider |
getTypeInfoProvider() |
Получает реализацию TypeInfoProvider для данного ValidatorHandler. |
abstract void |
setContentHandler |
Устанавливает ContentHandler, который получает результаты валидации. |
abstract void |
setErrorHandler |
Устанавливает ErrorHandler для получения ошибок, обнаруженных во время валидации. |
void |
setFeature |
Устанавливает функцию для данного ValidatorHandler. |
void |
setProperty |
Устанавливает значение свойства. |
abstract void |
setResourceResolver |
Устанавливает 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 анализатором, необходимо выполнить следующие требования.
- Когда вызываются
ContentHandler.startElement(String, String, String, Attributes),ContentHandler.endElement(String, String, String),ContentHandler.startDocument()илиContentHandler.endDocument()для классаValidatorHandler, те же методы для указанного обработчика событийContentHandlerдолжны быть вызваны для того же события до возврата вызова. -
Класс
ValidatorHandlerне должен вводить новые элементы, которые не были в исходных данных. -
Класс
ValidatorHandlerне должен удалять атрибуты, которые были в исходных данных.
Если метод обратного вызова для указанного обработчика событий ContentHandler вызывает исключение, то то же исключение должно быть выброшено классом ValidatorHandler. Обработчик ошибок ErrorHandler не должен уведомляться об таком исключении.
Этот метод может быть вызван даже в середине процесса валидации.
- Parameters:
-
receiver- Обработчик событийContentHandlerили null.
getContentHandler
public abstract ContentHandler getContentHandler()
ContentHandler, который получает результаты валидации с расширениями.- Returns:
- Этот метод возвращает объект, который был в последний раз установлен методом
getContentHandler(), или null, если этот метод не был вызван с момента создания этого объектаValidatorHandler. - See Also:
setErrorHandler
public abstract void setErrorHandler(ErrorHandler errorHandler)
ErrorHandler для обработки ошибок, возникших во время валидации. Обработчик ошибок может использоваться для настройки процесса обработки ошибок во время валидации. Когда обработчик ошибок ErrorHandler установлен, обнаруженные во время валидации ошибки сначала будут отправлены обработчику ошибок ErrorHandler.
Обработчик ошибок может немедленно прервать дальнейшую валидацию, выбросив исключение SAXException из обработчика. Или, например, он может вывести ошибку на экран и попытаться продолжить валидацию, вернувшись обычно из обработчика ErrorHandler.
Если любое исключение Throwable выбрасывается из обработчика ошибок ErrorHandler, то тот же объект исключения Throwable будет переброшен в верхний уровень стека вызовов.
Класс ValidatorHandler не может выбросить исключение SAXException без предварительного сообщения об этом обработчику ошибок ErrorHandler.
Если обработчик ошибок ErrorHandler равен null, то реализация будет вести себя так, как если бы был установлен следующий обработчик ошибок ErrorHandler:
class DraconianErrorHandler implementsErrorHandler{ public void fatalError(SAXParseExceptione ) throwsSAXException{ throw e; } public void error(SAXParseExceptione ) throwsSAXException{ throw e; } public void warning(SAXParseExceptione ) throwsSAXException{ // noop } }
При создании нового объекта ValidatorHandler это поле изначально устанавливается в значение null.
- Parameters:
-
errorHandler- Новый обработчик ошибок. Это значение может быть null.
getErrorHandler
public abstract ErrorHandler getErrorHandler()
ErrorHandler, установленный для этого объекта ValidatorHandler.- Returns:
- Этот метод возвращает объект, который был в последний раз установлен методом
setErrorHandler(ErrorHandler), или null, если этот метод не был вызван с момента создания этого объектаValidatorHandler. - See Also:
setResourceResolver
public abstract void setResourceResolver(LSResourceResolver resourceResolver)
LSResourceResolver для настройки разрешения ресурсов во время валидации. Класс ValidatorHandler использует разыскщик ресурсов LSResourceResolver при необходимости поиска внешних ресурсов во время валидации, хотя то, что считается "поиском внешних ресурсов", зависит от каждого языка схемы.
Если разыскщик ресурсов LSResourceResolver равен null, то реализация будет вести себя так, как если бы был установлен следующий разыскщик ресурсов LSResourceResolver:
class DumbLSResourceResolver implementsLSResourceResolver{ publicLSInputresolveResource( 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:
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
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. - См. также:
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. - См. также:
© 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