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, Schemas создаваемый этой фабрикой, и расширением, Validators и ValidatorHandlers создаваемый теми Schemas. |
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. См. список доступных языков схемы для возможных значений.SchemaFactoryIllegalArgumentException - Если никакая реализация языка схемы не доступна.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.SchemaFactoryIllegalArgumentException - если 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, Schemas создаваемый этой фабрикой, и расширением, Validators и ValidatorHandlers создаваемый теми Schemas.
Конструкторы и разработчики должны обратить особое внимание на как специальное предложение 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 распознать имя свойства, но временно быть неспособными возвратить его значение.
SchemaFactorys не обязаны распознавать любые определенные имена свойства.
Конструкторы свободны (и поощренный) изобрести свои собственные свойства, используя имена, основанные на их собственных 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(SAXParseExceptione ) throwsSAXException{ throw e; } public void error(SAXParseExceptione ) throwsSAXException{ throw e; } public void warning(SAXParseExceptione ) throwsSAXException{ // noop } }
Когда новое SchemaFactory объект создается, первоначально это поле, устанавливают в NULL. Это поле НЕ будет наследовано к Schemas, Validators, или ValidatorHandlers, которые создаются из этого 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{ publicLSInputresolveResource( String publicId, String systemId, String baseURI) { return null; // always return null } }
Если a LSResourceResolver броски a RuntimeException (или экземпляры его производных классов), тогда SchemaFactory прервет парсинг и вызывающую сторону newSchema метод получит то же самое RuntimeException.
Когда новое SchemaFactory объект создается, первоначально это поле, устанавливают в NULL. Это поле НЕ будет наследовано к Schemas, Validators, или ValidatorHandlers, которые создаются из этого 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
Вызываемый будет читать весь Sources и комбинируют их в единственную схему. Точная семантика комбинации зависит от языка схемы что это 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