Класс ValidatorHandler
- Все реализованные интерфейсы:
ContentHandler
public abstract class ValidatorHandler extends Object implements ContentHandler
Объект ValidatorHandler не является потокобезопасным и не реентерабельным. Другими словами, приложение отвечает за то, чтобы один объект ValidatorHandler не использовался из более чем одной потоке в любое время.
ValidatorHandler проверяет, соответствуют ли события SAX набору ограничений, описанных в ассоциированном Schema, и дополнительно может изменять события SAX (например, добавляя значения по умолчанию и т. д.).
ValidatorHandler расширяет ContentHandler, но уточняет базовый ContentHandler следующим образом:
- События startElement/endElement должны получать непустые строки для
uri,localName, иqname, даже если SAX позволяет некоторым из них быть нулевыми. Аналогично, заданный пользователемContentHandlerполучит непустые строки для всех трех параметров. - Приложения должны обеспечить правильное вызов
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. - Возвращает:
- Текущее значение функции (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. -
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. -
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. - См. также:
© 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