public abstract class SchemaFactory extends Object
Schema
对象。验证接口的入口点。
SchemaFactory
是架构的编译器。它读取模式的外部表示,并准备它们进行验证。
SchemaFactory
类不是线程安全的。换句话说,它是应用程序的责任保证最多只有一个线程在任何时候使用SchemaFactory
对象。实施鼓励synchronized
标记方法来保护自己从破碎的客户。
SchemaFactory
是不可重入。而其中的newSchema
方法被调用时,应用程序可能不会尝试递归调用newSchema
方法,即使在同一个线程。
本规范使用命名空间URI指定的模式语言。下表显示了本规范所定义的值。
为了符合规格,实现只需支持W3C XML Schema 1。然而,如果它选择支持其他模式语言在这里上市,必须符合本规范所描述的相关行为
模式语言没有列在这里将介绍自己的URI来代表自己。的SchemaFactory
类可定位为在运行时其他模式语言实现。
注意,因为XML DTD是紧密相连的解析过程,在解析的过程中效果显著,它是不可能定义的DTD验证作为一个独立的解析过程。为此,本规范没有定义XML DTD的语义。这并不禁止实施与执行在一个他们认为合适的方式,但用户警告说任何DTD验证实现此接口的一定偏离XML DTD的XML语义定义1。
value | language |
---|---|
XMLConstants.W3C_XML_SCHEMA_NS_URI ("http://www.w3.org/2001/XMLSchema ") |
W3C XML Schema 1.0 |
XMLConstants.RELAXNG_NS_URI ("http://relaxng.org/ns/structure/1.0 ") |
RELAX NG 1.0 |
Modifier | Constructor and Description |
---|---|
protected |
SchemaFactory()
派生类的构造函数。
|
Modifier and Type | Method and Description |
---|---|
abstract ErrorHandler |
getErrorHandler()
被设置为这
SchemaFactory 当前
ErrorHandler 。
|
boolean |
getFeature(String name)
查找功能标志的值。
|
Object |
getProperty(String name)
查找属性的值。
|
abstract LSResourceResolver |
getResourceResolver()
被设置为这
SchemaFactory 当前
LSResourceResolver 。
|
abstract boolean |
isSchemaLanguageSupported(String schemaLanguage)
指定架构的
SchemaFactory 支持?
|
static SchemaFactory |
newInstance(String schemaLanguage)
查找支持指定的模式语言的
SchemaFactory 执行并返回它。
|
static SchemaFactory |
newInstance(String schemaLanguage, String factoryClassName, ClassLoader classLoader)
从中获得的一个新实例类的名称
SchemaFactory 。
|
abstract Schema |
newSchema()
创建一个特殊的
Schema 对象。
|
Schema |
newSchema(File schema)
将指定的
File 作为一个模式,并将其作为
Schema 。
|
Schema |
newSchema(Source schema)
将指定的源作为一个模式,并将其作为模式。
|
abstract Schema |
newSchema(Source[] schemas)
将指定的源(S)作为一个模式,并将其作为模式。
|
Schema |
newSchema(URL schema)
将指定的
URL 作为一个模式,并将其作为
Schema 。
|
abstract void |
setErrorHandler(ErrorHandler errorHandler)
设置接收
newSchema 方法调用期间遇到错误的
ErrorHandler 。
|
void |
setFeature(String name, boolean value)
|
void |
setProperty(String name, Object object)
设置属性的值。
|
abstract void |
setResourceResolver(LSResourceResolver resourceResolver)
设置自定义资源解析解析模式的
LSResourceResolver 。
|
public static SchemaFactory newInstance(String schemaLanguage)
查找支持指定的模式语言的SchemaFactory
执行并返回它。
发现对于一个给定的模式语言的SchemaFactory
对象,这种方法看起来以下依次为“类装载器”指的是上下文类加载器的地方:
"javax.xml.validation.SchemaFactory:schemaLanguage"
存在(在schemalanguage是这个方法的参数),那么它的价值是理解为一个类的名字。该方法将尝试使用类装载器来创建这个类的一个新实例,并返回它如果它成功创建。$java.home/lib/jaxp.properties
是阅读的关键是在系统属性关联的值是找。如果存在,值被处理就像上面一样。ServiceLoader
类定义,试图定位和加载使用default loading mechanism服务的实现:服务提供者装载设备将使用current thread's context class loader尝试加载服务。如果上下文类加载器是空的,将使用的system class loader。isSchemaLanguageSupported(String schemaLanguage)
。SchemaFactoryConfigurationError
ServiceConfigurationError
将抛出的情况下SchemaFactory
坐落在一个具体实施方式。必须有一个默认的SchemaFactory
W3C XML架构平台。如果一切都失败了,IllegalArgumentException
将抛出。
解决问题的技巧:
看到Properties.load(java.io.InputStream)
究竟属性文件解析。特别是,冒号“:”需要在属性文件中逃脱,所以确保语言图式的URI是正确转义它。例如:
HTTP:/ /两。org / 2001 /模式= org.acme.foo.xsschemafactory
schemaLanguage
-指定的模式语言,返回的schemafactory会理解的。看到的可能值
the list of available schema languages。
SchemaFactory
新实例
IllegalArgumentException
-如果没有实现的模式语言是可用的。
NullPointerException
-如果
schemaLanguage
参数为空。
SchemaFactoryConfigurationError
-如果遇到一个配置错误。
newInstance(String schemaLanguage, String factoryClassName, ClassLoader classLoader)
public static SchemaFactory newInstance(String schemaLanguage, String factoryClassName, ClassLoader classLoader)
从中获得的一个新实例类的名称SchemaFactory
。如果指定的工厂SchemaFactory
类名支持指定的模式语言返回。此功能是有用的当有多个供应商在类路径。它给应用程序提供了更多的控制,因为它可以指定要加载哪个提供程序。
设置jaxp.debug
系统属性将导致这种方法印制大量的调试消息System.err
关于它是什么做的,是在看。
如果你有问题的话:
java djaxp。调试= 1你的…
schemaLanguage
-指定的模式语言,返回的
SchemaFactory
会理解的。看到的可能值
the list of available schema languages。
factoryClassName
完全合格的工厂类的名称,提供了实现
javax.xml.validation.SchemaFactory
。
classLoader
用于负荷工厂类
ClassLoader
。如果
null
电流
Thread
上下文类加载器来加载工厂类。
SchemaFactory
新实例
IllegalArgumentException
-如果
factoryClassName
是
null
,或工厂类不能被实例化负载,或不支持在
schemLanguage
参数指定的模式语言。
NullPointerException
-如果
schemaLanguage
参数为空。
newInstance(String schemaLanguage)
public abstract boolean isSchemaLanguageSupported(String schemaLanguage)
指定架构的SchemaFactory
支持?
schemaLanguage
-指定的模式语言,返回的
SchemaFactory
会理解的。
schemaLanguage
必须指定一个
valid图式语言。
true
如果
SchemaFactory
支持
schemaLanguage
,其他
false
。
null
schemaLanguage
NullPointerException
。
IllegalArgumentException
-如果
schemaLanguage.length() == 0
或
schemaLanguage
不指定
valid图式语言。
public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException
功能名称是完全合格的URI。一SchemaFactory
识别特征的名字,但暂时无法返回它的值是可能的。
实施者是自由的(鼓励)来创造自己的特色,以建立自己的URI的名字。
name
特点的名字,这是一个非空的完全合格的URI。
SAXNotRecognizedException
-如果特征值不能被分配或检索。
SAXNotSupportedException
-当
SchemaFactory
识别特征名称,但不能确定它的价值在这个时候。
null
name
NullPointerException
。
setFeature(String, boolean)
public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException
设置这一SchemaFactory
特征,Schema
s这个工厂创建,并推而广之,Validator
s和ValidatorHandler
s那些Schema
s创建。
同时,开发商应特别注意如何返回newSchema()
特殊Schema
对象处理。在某些情况下,例如,当SchemaFactory
和班级实际加载模式来自不同的实现,也许不可能SchemaFactory
特征是遗传的自动。开发人员应该确保在两个地方显式设置的功能,如安全处理。
功能名称是完全合格的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
-当
SchemaFactory
识别特征的名字,但不能设置请求的值。
null
name
NullPointerException
。
getFeature(String)
public void setProperty(String name, Object object) throws SAXNotRecognizedException, SAXNotSupportedException
属性名称是完全合格的URI。一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[])
方法引发。
在XML源文件访问外部DTD是限制由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
识别属性名称,但不能设置请求的值。
null
name
NullPointerException
。
public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException
属性名称是完全合格的URI。一SchemaFactory
识别属性名称,但暂时无法返回它的值是可能的。
SchemaFactory
s不需要承认任何特定的属性名称。
实施者是自由的(鼓励)来创造他们自己的特性,以建立自己的URI的名字。
name
-属性的名字,这是一个非空的完全合格的URI。
SAXNotRecognizedException
-如果属性值不能被分配或检索。
SAXNotSupportedException
当XmlReader识别属性名称,但不能确定它的价值在这个时候。
null
name
NullPointerException
。
setProperty(String, Object)
public abstract void setErrorHandler(ErrorHandler errorHandler)
newSchema
方法调用期间遇到错误的
ErrorHandler
。
错误处理程序可以用于自定义模式分析过程中的错误处理过程。当一个ErrorHandler
设置,发现错误在分析模式将首先发送到ErrorHandler
。
错误处理程序可以中止解析架构立即从处理扔SAXException
。或例如可以打印一个错误的屏幕,试图通过正常的ErrorHandler
返回继续处理
如果任何Throwable
(或其派生类的实例)是从一个ErrorHandler
抛出,这newSchema
方法调用者会泛起同样的Throwable
对象。
SchemaFactory
不允许扔SAXException
不先报告给ErrorHandler
。
应用程序可以调用此方法,即使在Schema
被解析。
当ErrorHandler
是null,实施将有如以下ErrorHandler
设置:
类draconianerrorhandler实现ErrorHandler
{公共无效的致命错误(SAXParseException
E)抛出SAXException
{把E;}公共无效错误(SAXParseException
E)抛出SAXException
{把E;}公共无效报警(SAXParseException
E)抛出SAXException
{/ /空}}
当一个新的SchemaFactory
对象被创建,最初该字段设置为null。这场会不会遗传给Schema
s,Validator
s,或ValidatorHandler
s是从这SchemaFactory
创建。
errorHandler
-一个新的错误处理程序将。这个参数可以是
null
。
public abstract ErrorHandler getErrorHandler()
SchemaFactory
当前
ErrorHandler
。
setErrorHandler(ErrorHandler)
方法,或null如果方法从来没有所谓的因为这
SchemaFactory
创造了。
setErrorHandler(ErrorHandler)
public abstract void setResourceResolver(LSResourceResolver resourceResolver)
LSResourceResolver
。
SchemaFactory
使用LSResourceResolver
当需要定位的外部资源,在分析模式,但到底什么是“定位外部资源”是由每个模式语言。例如,W3C XML Schema模式,这包括文件<include>
d或<import>
ed,和DTD模式文件引用,等等。
应用程序可以调用此方法,即使在Schema
被解析。
当LSResourceResolver
是null,实施将有如以下LSResourceResolver
设置:
类dumbdomresourceresolver实现LSResourceResolver
{公共LSInput
resolveresource(publicid字符串,字符串的字符串systemid,baseuri){返回空;/ /始终返回空值}}
如果一个LSResourceResolver
抛出一个RuntimeException
(或其派生类的实例),然后SchemaFactory
将中止的解析和newSchema
方法调用者会得到相同的RuntimeException
。
当一个新的SchemaFactory
对象被创建,最初该字段设置为null。这场会不会遗传给Schema
s,Validator
s,或ValidatorHandler
s是从这SchemaFactory
创建。
resourceResolver
-新资源解析器将。此参数可以为空。
public abstract LSResourceResolver getResourceResolver()
SchemaFactory
当前
LSResourceResolver
。
setResourceResolver(LSResourceResolver)
方法,或null如果方法从来没有所谓的因为这
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
作为一个模式,并将其作为Schema
。
这是一个newSchema(Source schema)
便利的方法。
schema
文件代表一个模式。
schema
新
Schema
。
SAXException
SAX误差。
NullPointerException
-如果
schema
是空的。
public Schema newSchema(URL schema) throws SAXException
将指定的URL
作为一个模式,并将其作为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和命名空间的适当值,到一个不同的目标,没有自己的成分单一的架构文档,如果引进的元素被在同一顺序的来源。的XML Schema推荐4.2.3节描述选项处理器已经在这方面。当处理器应该在JAXP的图式来源和XML Schema的进口处理一致,JAXP兼容的解析器之间的行为可能会有所不同;特别是,解析器可以选择忽略除了第一个 <进口> 对于一个给定的命名空间,无论在schemaLocation提供信息。 进口>
如果解析的模式包括误差(S)在XML Schema规范5.1节的规定,那么错误必须报告给ErrorHandler
。
relax ng,这个方法必须把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
和班级实际加载模式来自不同的实现,也许不可能SchemaFactory
特征是遗传的自动。开发人员应该确保在两个地方显式设置的功能,如安全处理。
XML架构,此方法创建一个Schema
对象的位置提示指定文件进行验证。
返回的Schema
对象假设如果文件参考架构中的位置提示相同的URL,他们总是会解析到相同的架构文档。这asusmption允许实现重用解析结果模式文档,多重验证对相同的模式将运行得更快。
请注意,使用模式位置提示介绍了拒绝服务攻击的一个漏洞。
放松不支持此操作。
Schema
对象。
UnsupportedOperationException
-如果该操作是不被支持的。
SAXException
操作支持,但由于某种原因失败。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.