public abstract class SchemaFactory extends Object
Schema
объекты. Точка входа к API проверки допустимости.
SchemaFactory
компилятор схемы. Это читает внешние представления схем и готовит их к проверке допустимости.
SchemaFactory
class не ориентирован на многопотоковое исполнение. Другими словами это - обязанность приложения гарантировать, что самое большее один поток использует a SchemaFactory
объект в любой данный момент. Реализации поощряются отметить методы как synchronized
защищать себя от поврежденных клиентов.
SchemaFactory
не повторно используемо. В то время как один из newSchema
методы вызываются, приложения, возможно, не пытаются рекурсивно вызвать newSchema
метод, даже от того же самого потока.
Эта спецификация использует URI пространства имен, чтобы определять язык схемы. Следующая таблица показывает значения, определенные этой спецификацией.
Чтобы быть совместимой со спецификацией, реализация только обязана поддерживать XML-схему 1.0 W3C. Однако, если это хочет поддерживать другие языки схемы, перечисленные здесь, это должно соответствовать соответствующим поведениям, описанным в этой спецификации.
Языки схемы, не перечисленные здесь, как ожидают, представят свои собственные URI, чтобы представить себя. SchemaFactory
class способен к определению местоположения других реализаций для других языков схемы во времени выполнения.
Отметьте, что, потому что DTD XML строго связывается к парсингу, обрабатывают, и имеет существенный эффект на процесс парсинга, невозможно определить проверку допустимости DTD как процесс, независимый от парсинга. Поэтому эта спецификация не определяет семантику для DTD XML. Это не мешает конструкторам реализовывать это в способе, которым они считают целесообразным, но пользователи предупреждаются, что любая проверка допустимости DTD, реализованная в этом интерфейсе обязательно, отклоняется от семантики DTD XML как определено в XML 1.0.
значение | язык |
---|---|
XMLConstants.W3C_XML_SCHEMA_NS_URI ("http://www.w3.org/2001/XMLSchema ") |
|
XMLConstants.RELAXNG_NS_URI ("http://relaxng.org/ns/structure/1.0 ") |
Модификатор | Конструктор и Описание |
---|---|
protected |
SchemaFactory()
Конструктор для производных классов.
|
Модификатор и Тип | Метод и Описание |
---|---|
abstract ErrorHandler |
getErrorHandler()
Получает ток
ErrorHandler набор к этому SchemaFactory . |
boolean |
getFeature(String name)
Ищите значение значения параметра.
|
Объект |
getProperty(String name)
Ищите значение свойства.
|
abstract LSResourceResolver |
getResourceResolver()
Получает ток
LSResourceResolver набор к этому SchemaFactory . |
abstract boolean |
isSchemaLanguageSupported(String schemaLanguage)
Определенная схема, поддерживаемая этим
SchemaFactory ? |
static SchemaFactory |
newInstance(String schemaLanguage)
Поиск реализация
SchemaFactory это поддерживает указанный язык схемы, и возвратите его. |
static SchemaFactory |
newInstance(String schemaLanguage, String factoryClassName, ClassLoader classLoader)
Получите новый экземпляр a
SchemaFactory с имени class. |
abstract Schema |
newSchema()
Создает специальное предложение
Schema объект. |
Схема |
newSchema(File schema)
Анализирует указанное
File как схема и возвраты это как a Schema . |
Схема |
newSchema(Source schema)
Анализирует указанный источник как схему и возвращает это как схему.
|
abstract Schema |
newSchema(Source[] schemas)
Анализирует указанный источник (и) как схему и возвращает это как схему.
|
Схема |
newSchema(URL schema)
Анализирует указанное
URL как схема и возвраты это как a Schema . |
abstract void |
setErrorHandler(ErrorHandler errorHandler)
Наборы
ErrorHandler получить ошибки, с которыми встречаются во время newSchema вызов метода. |
void |
setFeature(String name, boolean value)
Установите функцию этого
SchemaFactory , Schema s создаваемый этой фабрикой, и расширением, Validator s и ValidatorHandler s создаваемый теми Schema s. |
void |
setProperty(String name, Object object)
Установите значение свойства.
|
abstract void |
setResourceResolver(LSResourceResolver resourceResolver)
Наборы
LSResourceResolver настроить разрешение ресурса, анализируя схемы. |
protected SchemaFactory()
Конструктор для производных классов.
Конструктор ничего не делает.
Производные классы должны создать SchemaFactory
объекты, которые имеют null
ErrorHandler
и null
LSResourceResolver
.
public static SchemaFactory newInstance(String schemaLanguage)
Поиск реализация SchemaFactory
это поддерживает указанный язык схемы, и возвратите его.
Найти a SchemaFactory
объект для данного языка схемы, этот метод смотрит следующие места в следующем порядке, где "загрузчик class" отсылает к контексту загрузчик class:
"javax.xml.validation.SchemaFactory:schemaLanguage"
присутствует (где schemaLanguage является параметром к этому методу), тогда его значение читается как имя class. Метод попытается создать новый экземпляр этого class при использовании загрузчика class, и возвращает это, если это будет успешно создаваться. $java.home/lib/jaxp.properties
читается и значение, связанное с ключом, являющимся системным свойством выше, разыскивается. Если существующий, значение обрабатывается точно так же как выше. ServiceLoader
class, чтобы попытаться расположиться и загрузить реализацию службы.isSchemaLanguageSupported(String schemaLanguage)
. ServiceConfigurationError
a SchemaFactoryConfigurationError
будет брошен. SchemaFactory
располагается в особенном методе реализации. Должно быть значение по умолчанию платформы SchemaFactory
для XML-схемы W3C. Если все перестало работать, IllegalArgumentException
будет брошен.
Подсказка для Поиска и устранения неисправностей:
См. Properties.load(java.io.InputStream)
для точно, как анализируется файл свойств. В частности двоеточия ':' потребность, которой оставят в файле свойств, так что удостоверьтесь, что URI языка схемы должным образом оставляют в ней. Например:
http\://www.w3.org/2001/XMLSchema=org.acme.foo.XSSchemaFactory
schemaLanguage
- Определяет язык схемы, который поймет возвращенный SchemaFactory. См. список доступных языков схемы для возможных значений.SchemaFactory
IllegalArgumentException
- Если никакая реализация языка схемы не доступна.NullPointerException
- Если schemaLanguage
параметр является нулем.SchemaFactoryConfigurationError
- Если с ошибкой конфигурации встречаются.newInstance(String schemaLanguage, String factoryClassName, ClassLoader classLoader)
public static SchemaFactory newInstance(String schemaLanguage, String factoryClassName, ClassLoader classLoader)
Получите новый экземпляр a SchemaFactory
с имени class. SchemaFactory
возвращается, если определенная фабрика имя class поддерживает указанный язык схемы. Эта функция полезна, когда есть многократные провайдеры в пути к классу. Это дает больше контроля к приложению, поскольку это может определить, какой провайдер должен быть загружен.
Установка jaxp.debug
системное свойство заставит этот метод печатать много сообщений отладки к System.err
о каком это делает и где это смотрит на.
Если у Вас есть попытка задач:
java -Djaxp.debug=1 YourProgram ....
schemaLanguage
- Определяет язык схемы который возвращенный SchemaFactory
поймет. См. список доступных языков схемы для возможных значений.factoryClassName
- полностью определенное имя class фабрики, которое обеспечивает реализацию javax.xml.validation.SchemaFactory
.classLoader
- ClassLoader
используемый, чтобы загрузить фабрику class. Если null
ток Thread
's контекст classLoader используется, чтобы загрузить фабрику class.SchemaFactory
IllegalArgumentException
- если factoryClassName
null
, или фабрика, в которой class не может быть загружен, инстанцирован или не поддерживает язык схемы, определенный schemLanguage
параметр.NullPointerException
- Если schemaLanguage
параметр является нулем.newInstance(String schemaLanguage)
public abstract boolean isSchemaLanguageSupported(String schemaLanguage)
Определенная схема, поддерживаемая этим SchemaFactory
?
schemaLanguage
- Определяет язык схемы который возвращенный SchemaFactory
поймет. schemaLanguage
должен определить допустимый язык схемы.true
если SchemaFactory
поддерживает schemaLanguage
, еще false
.NullPointerException
- Если schemaLanguage
null
.IllegalArgumentException
- Если schemaLanguage.length() == 0
или schemaLanguage
не определяет допустимый язык схемы.public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException
Имя функции является любым полностью определенным URI. Это возможно для a SchemaFactory
распознать имя функции, но временно быть неспособными возвратить его значение.
Конструкторы свободны (и поощренный) изобрести свои собственные функции, используя имена, основанные на их собственных URI.
name
- Имя функции, которое является ненулем полностью определенный URI.SAXNotRecognizedException
- Если значение функции не может быть присвоено или получено.SAXNotSupportedException
- Когда SchemaFactory
распознает имя функции, но не может определить его значение в это время.NullPointerException
- Если name
null
.setFeature(String, boolean)
public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException
Установите функцию этого SchemaFactory
, Schema
s создаваемый этой фабрикой, и расширением, Validator
s и ValidatorHandler
s создаваемый теми Schema
s.
Конструкторы и разработчики должны обратить особое внимание на как специальное предложение Schema
объект, возвращенный newSchema()
обрабатывается. В некоторых случаях, например, когда SchemaFactory
и class, фактически загружающий схему, прибывшую от различных реализаций, это, возможно, не возможно для SchemaFactory
функции, которые будут наследованы автоматически. Разработчики должны удостовериться, что функции, такие как безопасная обработка, явно устанавливаются в обоих местах.
Имя функции является любым полностью определенным URI. Это возможно для a SchemaFactory
представить значение функции, но быть неспособными изменить текущую стоимость.
Все реализации обязаны поддерживать XMLConstants.FEATURE_SECURE_PROCESSING
функция. Когда функция:
true
: реализация ограничит обработку XML, чтобы соответствовать пределам реализации. Примеры включают enity пределы расширения и конструкции XML-схемы, которые использовали бы большое количество ресурсов. Если обработка XML будет ограничена для соображений безопасности, то о ней сообщат через звонок в зарегистрированный ErrorHandler.fatalError(SAXParseException exception)
. См. setErrorHandler(ErrorHandler errorHandler)
. false
: реализация будет, обрабатывая XML согласно спецификациям XML без отношения к возможным пределам реализации. name
- Имя функции, которое является ненулем полностью определенный URI.value
- Требуемое значение функции (истина или ложь).SAXNotRecognizedException
- Если значение функции не может быть присвоено или получено.SAXNotSupportedException
- Когда SchemaFactory
распознает имя функции, но не может установить требуемое значение.NullPointerException
- Если name
null
.getFeature(String)
public void setProperty(String name, Object object) throws SAXNotRecognizedException, SAXNotSupportedException
Имя свойства является любым полностью определенным URI. Это возможно для a SchemaFactory
распознать имя свойства, но быть неспособными изменить текущую стоимость.
Все реализации, которые реализуют JAXP 1.5 или более новый, обязаны поддерживать XMLConstants.ACCESS_EXTERNAL_DTD
и XMLConstants.ACCESS_EXTERNAL_SCHEMA
свойства.
Доступ к внешним DTD в файлах Схемы ограничивается протоколам, определенным XMLConstants.ACCESS_EXTERNAL_DTD
свойство. Если доступ лишается во время создания новой Схемы из-за ограничения этого свойства, SAXException
будет брошен newSchema(Source)
или newSchema(File)
или newSchema(URL)
или или newSchema(Source[])
метод.
Доступ к внешним DTD в xml исходных файлах ограничивается протоколам, определенным XMLConstants.ACCESS_EXTERNAL_DTD
свойство. Если доступ лишается во время проверки допустимости из-за ограничения этого свойства, SAXException
будет брошен Validator.validate(Source)
или Validator.validate(Source, Result)
метод.
Доступ к внешней ссылке, установленной атрибутом schemaLocation, ограничивается протоколам, определенным XMLConstants.ACCESS_EXTERNAL_SCHEMA
свойство. Если доступ лишается во время проверки допустимости из-за ограничения этого свойства, SAXException
будет брошен Validator.validate(Source)
или Validator.validate(Source, Result)
метод.
Доступ к внешней ссылке, установленной Импортом и, Включает элемент, ограничивается протоколам, определенным XMLConstants.ACCESS_EXTERNAL_SCHEMA
свойство. Если доступ лишается во время создания новой Схемы из-за ограничения этого свойства, SAXException
будет брошен newSchema(Source)
или newSchema(File)
или newSchema(URL)
или newSchema(Source[])
метод.
name
- Имя свойства, которое является ненулем полностью определенный URI.object
- Требуемое значение для свойства.SAXNotRecognizedException
- Если значение свойства не может быть присвоено или получено.SAXNotSupportedException
- Когда SchemaFactory
распознает имя свойства, но не может установить требуемое значение.NullPointerException
- Если name
null
.public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException
Имя свойства является любым полностью определенным URI. Это возможно для a SchemaFactory
распознать имя свойства, но временно быть неспособными возвратить его значение.
SchemaFactory
s не обязаны распознавать любые определенные имена свойства.
Конструкторы свободны (и поощренный) изобрести свои собственные свойства, используя имена, основанные на их собственных URI.
name
- Имя свойства, которое является ненулем полностью определенный URI.SAXNotRecognizedException
- Если значение свойства не может быть присвоено или получено.SAXNotSupportedException
- Когда XMLReader распознает имя свойства, но не может определить его значение в это время.NullPointerException
- Если name
null
.setProperty(String, Object)
public abstract void setErrorHandler(ErrorHandler errorHandler)
ErrorHandler
получить ошибки, с которыми встречаются во время newSchema
вызов метода. Обработчик ошибок может использоваться, чтобы настроить процесс обработки ошибок во время парсинга схемы. Когда ErrorHandler
устанавливается, ошибки, найденные во время парсинга схем, будут сначала отправлены ErrorHandler
.
Обработчик ошибок может прервать парсинг схемы сразу, бросая SAXException
от обработчика. Или например это может напечатать ошибку на экран и попытаться продолжать обработку, возвращаясь обычно из ErrorHandler
Если любой Throwable
(или экземпляры его производных классов), бросается от ErrorHandler
, вызывающая сторона newSchema
метод будет брошен то же самое Throwable
объект.
SchemaFactory
не позволяется бросить SAXException
без первого создания отчетов об этом к ErrorHandler
.
Приложения могут вызвать этот метод даже во время a Schema
анализируется.
Когда ErrorHandler
нуль, реализация будет вести себя как будто следующий ErrorHandler
устанавливается:
class DraconianErrorHandler implementsErrorHandler
{ public void fatalError(SAXParseException
e ) throwsSAXException
{ throw e; } public void error(SAXParseException
e ) throwsSAXException
{ throw e; } public void warning(SAXParseException
e ) throwsSAXException
{ // noop } }
Когда новое SchemaFactory
объект создается, первоначально это поле, устанавливают в NULL. Это поле НЕ будет наследовано к Schema
s, Validator
s, или ValidatorHandler
s, которые создаются из этого SchemaFactory
.
errorHandler
- Новый обработчик ошибок, который будет установлен. Этот параметр может быть null
.public abstract ErrorHandler getErrorHandler()
ErrorHandler
набор к этому SchemaFactory
.setErrorHandler(ErrorHandler)
метод, или нуль, если тот метод никогда не вызывали начиная с этого SchemaFactory
создал.setErrorHandler(ErrorHandler)
public abstract void setResourceResolver(LSResourceResolver resourceResolver)
LSResourceResolver
настроить разрешение ресурса, анализируя схемы.
SchemaFactory
использование a LSResourceResolver
когда это должно определить местоположение внешних ресурсов, анализируя схемы, хотя точно то, что составляет "располагающиеся внешние ресурсы", до каждого языка схемы. Например, для XML-схемы W3C, это включает файлы <include>
d или <import>
редактор, и DTD, на который ссылаются от файлов схемы, и т.д.
Приложения могут вызвать этот метод даже во время a Schema
анализируется.
Когда LSResourceResolver
нуль, реализация будет вести себя как будто следующий LSResourceResolver
устанавливается:
class DumbDOMResourceResolver implementsLSResourceResolver
{ publicLSInput
resolveResource( String publicId, String systemId, String baseURI) { return null; // always return null } }
Если a LSResourceResolver
броски a RuntimeException
(или экземпляры его производных классов), тогда SchemaFactory
прервет парсинг и вызывающую сторону newSchema
метод получит то же самое RuntimeException
.
Когда новое SchemaFactory
объект создается, первоначально это поле, устанавливают в NULL. Это поле НЕ будет наследовано к Schema
s, Validator
s, или ValidatorHandler
s, которые создаются из этого SchemaFactory
.
resourceResolver
- Новый преобразователь ресурса, который будет установлен. Этот параметр может быть нулем.public abstract LSResourceResolver getResourceResolver()
LSResourceResolver
набор к этому SchemaFactory
.setResourceResolver(LSResourceResolver)
метод, или нуль, если тот метод никогда не вызывали начиная с этого SchemaFactory
создал.setErrorHandler(ErrorHandler)
public Schema newSchema(Source schema) throws SAXException
Анализирует указанный источник как схему и возвращает это как схему.
Это - метод удобства для newSchema(Source[] schemas)
.
schema
- Источник, который представляет схему.Schema
от парсинга schema
.SAXException
- Если ошибка SAX происходит во время парсинга.NullPointerException
- если schema
нуль.public Schema newSchema(File schema) throws SAXException
Анализирует указанное File
как схема и возвраты это как a Schema
.
Это - метод удобства для newSchema(Source schema)
.
schema
- Файл, который представляет схему.Schema
от парсинга schema
.SAXException
- Если ошибка SAX происходит во время парсинга.NullPointerException
- если schema
нуль.public Schema newSchema(URL schema) throws SAXException
Анализирует указанное URL
как схема и возвраты это как a Schema
.
Это - метод удобства для newSchema(Source schema)
.
schema
- URL
это представляет схему.Schema
от парсинга schema
.SAXException
- Если ошибка SAX происходит во время парсинга.NullPointerException
- если schema
нуль.public abstract Schema newSchema(Source[] schemas) throws SAXException
Вызываемый будет читать весь Source
s и комбинируют их в единственную схему. Точная семантика комбинации зависит от языка схемы что это SchemaFactory
объект создается для.
Когда ErrorHandler
устанавливается, вызываемый сообщит обо всех ошибках, найденных в источниках к обработчику. Если обработчик выдаст исключение, то он прервет компиляцию схемы, и то же самое исключение будет выдано от этого метода. Кроме того, после того, как об ошибке сообщают обработчику, вызываемому разрешают прервать дальнейшую обработку, бросая ее. Если обработчик ошибок не будет установлен, то вызываемый бросит первую ошибку, которую он находит в источниках.
Получающаяся схема содержит компоненты из указанных источников. Тот же самый результат был бы достигнут, если бы все эти источники были импортированы, используя соответствующие значения для schemaLocation и пространства имен, в единственный документ схемы с различным targetNamespace и никакими собственными компонентами, если элементы импорта были даны в том же самом порядке как источники. Раздел 4.2.3 из рекомендации XML-схемы описывают процессоры опций, имеет в этом отношении. В то время как процессор должен быть непротиворечивым в своей обработке источников схемы JAXP и импорта XML-схемы, поведение между JAXP-совместимыми синтаксическими анализаторами может измениться; в частности синтаксические анализаторы могут хотеть игнорировать всех кроме первого <импорт> для данного пространства имен, независимо от информации, предоставленной в schemaLocation.
Если проанализированный набор схем включает ошибку (ки) как определено в раздел 5.1 из спецификации XML-схемы, то об ошибке нужно сообщить ErrorHandler
.
Для ОСЛАБЛЯЮТ НАНОГРАММ, этот метод должен бросить UnsupportedOperationException
если schemas.length!=1
.
schemas
- вводы, которые будут проанализированы. SchemaFactory
обязан распознавать SAXSource
, StreamSource
, StAXSource
, и DOMSource
. Входные схемы должны быть XML-документами или элементами XML и не должны быть нулем. Для назад совместимости результаты передачи чего-либо кроме документа или элемента являются зависящими от реализации. Реализации должны или распознать и обработать ввод или брошенный IllegalArgumentException.Schema
объект. Отметьте, что, когда об ошибке сообщили, нет никакой гарантии что возвращенный Schema
объект значим.SAXException
- Если ошибка находится во время обработки указанных вводов. Когда ErrorHandler
устанавливается, ошибкам сообщают там сначала. См. setErrorHandler(ErrorHandler)
.NullPointerException
- Если schemas
сам параметр является нулем, или любой элемент в массиве является нулем.IllegalArgumentException
- Если какой-либо элемент в массиве не распознается этим методом.UnsupportedOperationException
- Если язык схемы не поддерживает эту работу.public abstract Schema newSchema() throws SAXException
Schema
объект. Точная семантика возвращенного Schema
объект зависит от языка схемы для который это SchemaFactory
создается.
Кроме того, реализациям позволяют использовать специфичное для реализации свойство/функцию, чтобы изменить семантику этого метода.
Конструкторы и разработчики должны обратить особое внимание на как набор функций на этом SchemaFactory
обрабатываются этим специальным предложением Schema
. В некоторых случаях, например, когда SchemaFactory
и class, фактически загружающий схему, прибывшую от различных реализаций, это, возможно, не возможно для SchemaFactory
функции, которые будут наследованы автоматически. Разработчики должны удостовериться, что функции, такие как безопасная обработка, явно устанавливаются в обоих местах.
Для XML-схемы этот метод создает a Schema
объект, который выполняет проверку допустимости при использовании подсказок расположения, определенных в документах.
Возвращенный Schema
объект предполагает, что, если документы относятся к тому же самому URL в подсказках расположения схемы, они будут всегда решать к тому же самому документу схемы. Этот asusmption позволяет реализациям снова использовать проанализированные результаты документов схемы так, чтобы многократные проверки допустимости против той же самой схемы работали быстрее.
Отметьте, что использование подсказок расположения схемы представляет уязвимость атакам "отказ в обслуживании".
ОСЛАБЬТЕСЬ НАНОГРАММ не поддерживает эту работу.
Schema
объект.UnsupportedOperationException
- Если эта работа не поддерживается вызываемым.SAXException
- Если эта работа поддерживается, но отказавшая по некоторым причинам.
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92