872 lines
66 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="header">
<div class="subTitle">
compact2, compact3
</div>
<div class="subTitle">
javax.xml.validation
</div>
<h2 class="title" title="Class SchemaFactory">Class SchemaFactory</h2>
</div><div class="contentContainer">
<ul class="inheritance">
<li><a href="../../../java/lang/Object.html" title="class in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>javax.xml.validation.SchemaFactory</li>
</ul> </li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr/> <br/> <pre>public abstract class <span class="typeNameLabel">SchemaFactory</span>
extends <a href="../../../java/lang/Object.html" title="class in java.lang">Object</a></pre>
<div class="block">
<span>创建<a href="../../../javax/xml/validation/Schema.html" title="javax.xml.validation中的类"><code>Schema</code></a>对象的工厂。</span>
<span>入口点到验证API。</span>
<p> <span><a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>是一个模式编译器。</span> <span>它读取模式的外部表示,并准备它们进行验证。</span> </p>
<p> <span><a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>类不是线程安全的。</span> <span>换句话说,应用程序有责任确保在任何给定的时刻最多有一个线程使用<a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>对象。</span> <span>鼓励实施方法标记为<code>synchronized</code>以保护自己免受破坏的客户端。</span> </p>
<p> <span><a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>不是<a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类">入门的</a></span> <span>虽然正在调用其中一个<code>newSchema</code>方法,但应用程序可能不会尝试递归调用<code>newSchema</code>方法,即使是从同一个线程。</span> </p>
<h2> <span><a name="schemaLanguage"></a>模式语言</span> </h2>
<p> <span>此规范使用命名空间URI来指定模式语言。</span> <span>下表显示了本规范定义的值。</span> </p>
<p> <span>为了符合规范实施只需要支持W3C XML Schema 1.0。</span> <span>但是,如果选择支持此处列出的其他模式语言,则必须符合本规范中描述的相关行为。</span> </p>
<p> <span>这里未列出的模式语言预计将引入自己的URI来表示自己。</span> <span><a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>类能够在运行时为其他架构语言定位其他实现。</span> </p>
<p> <span>请注意由于XML DTD与解析过程密切相关并且对解析过程有重大影响因此无法将DTD验证定义为独立于解析的过程。</span> <span>因此本规范未定义XML DTD的语义。</span> <span>这并不能阻止实现者以合适的方式实现它,但是<em>用户被警告说在该接口上实现的任何DTD验证必然偏离XML 1.0中定义的XML DTD语义</em></span> </p>
<span> value language <a href="../../../javax/xml/XMLConstants.html#W3C_XML_SCHEMA_NS_URI"><code>XMLConstants.W3C_XML_SCHEMA_NS_URI</code></a> ("<code>http://www.w3.org/2001/XMLSchema</code>") <a href="http://www.w3.org/TR/xmlschema-1">W3C XML Schema 1.0</a> <a href="../../../javax/xml/XMLConstants.html#RELAXNG_NS_URI"><code>XMLConstants.RELAXNG_NS_URI</code></a> ("<code>http://relaxng.org/ns/structure/1.0</code>") <a href="http://www.relaxng.org/">RELAX NG 1.0</a> </span>
<table border="1" cellpadding="2">
</table>
</div>
<dl>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.5
</dd>
</dl> </li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- --> </a> <h3>构造方法摘要</h3>
<table border="0" cellpadding="3" cellspacing="0" class="memberSummary" summary="Constructor Summary table, listing constructors, and an explanation">
<caption>
<span>构造方法</span>
<span class="tabEnd"> </span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colLast" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/validation/SchemaFactory.html#SchemaFactory--">SchemaFactory</a></span>()</code>
<div class="block">
派生类的构造方法
</div> </td>
</tr>
</tbody>
</table> </li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- --> </a> <h3>方法摘要</h3>
<table border="0" cellpadding="3" cellspacing="0" class="memberSummary" summary="Method Summary table, listing methods, and an explanation">
<caption>
<span class="activeTableTab" id="t0"><span>所有方法</span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t1"><span><a href="javascript:show(1);">静态方法</a></span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t2"><span><a href="javascript:show(2);">接口方法</a></span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t3"><span><a href="javascript:show(4);">抽象方法</a></span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t4"><span><a href="javascript:show(8);">具体的方法</a></span><span class="tabEnd"> </span></span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor" id="i0">
<td class="colFirst"><code>abstract <a href="../../../org/xml/sax/ErrorHandler.html" title="interface in org.xml.sax">ErrorHandler</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/validation/SchemaFactory.html#getErrorHandler--">getErrorHandler</a></span>()</code>
<div class="block">
<span>获得当前<a href="../../../org/xml/sax/ErrorHandler.html" title="org.xml.sax中的接口"><code>ErrorHandler</code></a>设置为此<a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a></span>
</div> </td>
</tr>
<tr class="rowColor" id="i1">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/validation/SchemaFactory.html#getFeature-java.lang.String-">getFeature</a></span>(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> name)</code>
<div class="block">
查找特征标记的值。
</div> </td>
</tr>
<tr class="altColor" id="i2">
<td class="colFirst"><code><a href="../../../java/lang/Object.html" title="class in java.lang">Object</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/validation/SchemaFactory.html#getProperty-java.lang.String-">getProperty</a></span>(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> name)</code>
<div class="block">
查找属性的值。
</div> </td>
</tr>
<tr class="rowColor" id="i3">
<td class="colFirst"><code>abstract <a href="../../../org/w3c/dom/ls/LSResourceResolver.html" title="interface in org.w3c.dom.ls">LSResourceResolver</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/validation/SchemaFactory.html#getResourceResolver--">getResourceResolver</a></span>()</code>
<div class="block">
<span>获得当前<a href="../../../org/w3c/dom/ls/LSResourceResolver.html" title="界面在org.w3c.dom.ls中"><code>LSResourceResolver</code></a>设置为<a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a></span>
</div> </td>
</tr>
<tr class="altColor" id="i4">
<td class="colFirst"><code>abstract boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/validation/SchemaFactory.html#isSchemaLanguageSupported-java.lang.String-">isSchemaLanguageSupported</a></span>(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> schemaLanguage)</code>
<div class="block">
指定的模式是否支持此
<code>SchemaFactory</code>
</div> </td>
</tr>
<tr class="rowColor" id="i5">
<td class="colFirst"><code>static <a href="../../../javax/xml/validation/SchemaFactory.html" title="class in javax.xml.validation">SchemaFactory</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/validation/SchemaFactory.html#newInstance-java.lang.String-">newInstance</a></span>(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> schemaLanguage)</code>
<div class="block">
在查找的实现
<code>SchemaFactory</code>支持指定模式语言,并将其返回。
</div> </td>
</tr>
<tr class="altColor" id="i6">
<td class="colFirst"><code>static <a href="../../../javax/xml/validation/SchemaFactory.html" title="class in javax.xml.validation">SchemaFactory</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/validation/SchemaFactory.html#newInstance-java.lang.String-java.lang.String-java.lang.ClassLoader-">newInstance</a></span>(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> schemaLanguage, <a href="../../../java/lang/String.html" title="class in java.lang">String</a> factoryClassName, <a href="../../../java/lang/ClassLoader.html" title="class in java.lang">ClassLoader</a> classLoader)</code>
<div class="block">
从类名获取一个新的实例
<code>SchemaFactory</code>
</div> </td>
</tr>
<tr class="rowColor" id="i7">
<td class="colFirst"><code>abstract <a href="../../../javax/xml/validation/Schema.html" title="class in javax.xml.validation">Schema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/validation/SchemaFactory.html#newSchema--">newSchema</a></span>()</code>
<div class="block">
<span>创建一个特殊的<a href="../../../javax/xml/validation/Schema.html" title="javax.xml.validation中的类"><code>Schema</code></a>对象。</span>
</div> </td>
</tr>
<tr class="altColor" id="i8">
<td class="colFirst"><code><a href="../../../javax/xml/validation/Schema.html" title="class in javax.xml.validation">Schema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/validation/SchemaFactory.html#newSchema-java.io.File-">newSchema</a></span>(<a href="../../../java/io/File.html" title="class in java.io">File</a> schema)</code>
<div class="block">
将指定的File
<code>File</code>为模式,并将其作为
<code>Schema</code>返回。
</div> </td>
</tr>
<tr class="rowColor" id="i9">
<td class="colFirst"><code><a href="../../../javax/xml/validation/Schema.html" title="class in javax.xml.validation">Schema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/validation/SchemaFactory.html#newSchema-javax.xml.transform.Source-">newSchema</a></span>(<a href="../../../javax/xml/transform/Source.html" title="interface in javax.xml.transform">Source</a> schema)</code>
<div class="block">
将指定的源解析为模式,并将其作为模式返回。
</div> </td>
</tr>
<tr class="altColor" id="i10">
<td class="colFirst"><code>abstract <a href="../../../javax/xml/validation/Schema.html" title="class in javax.xml.validation">Schema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/validation/SchemaFactory.html#newSchema-javax.xml.transform.Source:A-">newSchema</a></span>(<a href="../../../javax/xml/transform/Source.html" title="interface in javax.xml.transform">Source</a>[] schemas)</code>
<div class="block">
将指定的源解析为模式并将其作为模式返回。
</div> </td>
</tr>
<tr class="rowColor" id="i11">
<td class="colFirst"><code><a href="../../../javax/xml/validation/Schema.html" title="class in javax.xml.validation">Schema</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/validation/SchemaFactory.html#newSchema-java.net.URL-">newSchema</a></span>(<a href="../../../java/net/URL.html" title="class in java.net">URL</a> schema)</code>
<div class="block">
将指定的URL
<code>URL</code>为模式,并将其作为
<code>Schema</code>返回。
</div> </td>
</tr>
<tr class="altColor" id="i12">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/validation/SchemaFactory.html#setErrorHandler-org.xml.sax.ErrorHandler-">setErrorHandler</a></span>(<a href="../../../org/xml/sax/ErrorHandler.html" title="interface in org.xml.sax">ErrorHandler</a> errorHandler)</code>
<div class="block">
<span>设置<a href="../../../org/xml/sax/ErrorHandler.html" title="org.xml.sax中的接口"><code>ErrorHandler</code></a>以接收<code>newSchema</code>方法调用期间<code>newSchema</code>错误。</span>
</div> </td>
</tr>
<tr class="rowColor" id="i13">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/validation/SchemaFactory.html#setFeature-java.lang.String-boolean-">setFeature</a></span>(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> name, boolean value)</code>
<div class="block">
<span>设置了一个功能,这个<code>SchemaFactory</code> <a href="../../../javax/xml/validation/Schema.html" title="javax.xml.validation中的类"><code>Schema</code></a>此工厂创建S推而广之 <a href="../../../javax/xml/validation/Validator.html" title="javax.xml.validation中的类"><code>Validator</code></a> S和<a href="../../../javax/xml/validation/ValidatorHandler.html" title="javax.xml.validation中的类"><code>ValidatorHandler</code></a>那些创建小号<a href="../../../javax/xml/validation/Schema.html" title="javax.xml.validation中的类"><code>Schema</code></a>秒。</span>
</div> </td>
</tr>
<tr class="altColor" id="i14">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/validation/SchemaFactory.html#setProperty-java.lang.String-java.lang.Object-">setProperty</a></span>(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> name, <a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> object)</code>
<div class="block">
设置属性的值。
</div> </td>
</tr>
<tr class="rowColor" id="i15">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/validation/SchemaFactory.html#setResourceResolver-org.w3c.dom.ls.LSResourceResolver-">setResourceResolver</a></span>(<a href="../../../org/w3c/dom/ls/LSResourceResolver.html" title="interface in org.w3c.dom.ls">LSResourceResolver</a> resourceResolver)</code>
<div class="block">
<span>设置<a href="../../../org/w3c/dom/ls/LSResourceResolver.html" title="界面在org.w3c.dom.ls中"><code>LSResourceResolver</code></a>以在解析模式时自定义资源分辨率。</span>
</div> </td>
</tr>
</tbody>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- --> </a> <h3>Methods inherited from class java.lang.<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a></h3> <code><a href="../../../java/lang/Object.html#clone--">clone</a>, <a href="../../../java/lang/Object.html#equals-java.lang.Object-">equals</a>, <a href="../../../java/lang/Object.html#finalize--">finalize</a>, <a href="../../../java/lang/Object.html#getClass--">getClass</a>, <a href="../../../java/lang/Object.html#hashCode--">hashCode</a>, <a href="../../../java/lang/Object.html#notify--">notify</a>, <a href="../../../java/lang/Object.html#notifyAll--">notifyAll</a>, <a href="../../../java/lang/Object.html#toString--">toString</a>, <a href="../../../java/lang/Object.html#wait--">wait</a>, <a href="../../../java/lang/Object.html#wait-long-">wait</a>, <a href="../../../java/lang/Object.html#wait-long-int-">wait</a></code></li>
</ul> </li>
</ul> </li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- --> </a> <h3>构造方法详细信息</h3> <a name="SchemaFactory--">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>SchemaFactory</h4> <pre>protected SchemaFactory()</pre>
<div class="block">
<p> <span>派生类的构造方法</span> </p>
<p> <span>构造函数什么也不做。</span> </p>
<p> <span>派生类必须创建<a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>具有<code>null</code> <a href="../../../org/xml/sax/ErrorHandler.html" title="org.xml.sax中的接口"><code>ErrorHandler</code></a><code>null</code> <a href="../../../org/w3c/dom/ls/LSResourceResolver.html" title="界面在org.w3c.dom.ls中"><code>LSResourceResolver</code>的对象</a></span> </p>
</div> </li>
</ul> </li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- --> </a> <h3>方法详细信息</h3> <a name="newInstance-java.lang.String-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>newInstance</h4> <pre>public static <a href="../../../javax/xml/validation/SchemaFactory.html" title="class in javax.xml.validation">SchemaFactory</a> newInstance(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> schemaLanguage)</pre>
<div class="block">
<p> <span>在查找的实现<code>SchemaFactory</code>支持指定模式语言,并将其返回。</span> </p>
<p> <span>要找到给定模式语言的<code>SchemaFactory</code>对象,该方法按照以下顺序查找以下位置,其中“类加载器”是指上下文类加载器:</span> </p>
<ol>
<li> <span>如果系统属性<code>"javax.xml.validation.SchemaFactory:<i>schemaLanguage</i>"</code>存在(其中<i>schemaLanguage</i>是此方法的参数),则将其值作为类名读取。</span> <span>该方法将尝试通过使用类加载器来创建此类的新实例,并且如果成功创建则返回此类。</span> </li>
<li> <span><code>$java.home/lib/jaxp.properties</code>被读取,并且查找与上述系统属性的键相关联的值。</span> <span>如果存在,该值将像上面那样处理。</span> </li>
<li> <span>使用由<a href="../../../java/util/ServiceLoader.html" title="java.util中的类"><code>ServiceLoader</code></a>类定义的服务提供商加载工具尝试使用default loading mechanism定位并加载服务的<a href="../../../java/util/ServiceLoader.html#load-java.lang.Class-">实现</a> :服务提供商加载工具将使用<a href="../../../java/lang/Thread.html#getContextClassLoader--">current thread's context class loader</a>尝试加载服务。</span> <span>如果上下文类加载器为null <a href="../../../java/lang/ClassLoader.html#getSystemClassLoader--">那么</a>将使用<a href="../../../java/lang/ClassLoader.html#getSystemClassLoader--">system class loader</a></span> <br/> <span>每个潜在的服务提供商都需要实现方法<a href="../../../javax/xml/validation/SchemaFactory.html#isSchemaLanguageSupported-java.lang.String-"><code>isSchemaLanguageSupported(String schemaLanguage)</code></a></span> <br/> <span>第一个服务提供者发现支持指定的模式语言被返回。</span> <br/> <span>在的情况下, <a href="../../../java/util/ServiceConfigurationError.html" title="java.util中的类"><code>ServiceConfigurationError</code></a>一个<a href="../../../javax/xml/validation/SchemaFactoryConfigurationError.html" title="javax.xml.validation中的类"><code>SchemaFactoryConfigurationError</code></a>将被抛出。</span> </li>
<li> <span>平台默认<code>SchemaFactory</code>位于实现具体的方式。</span> <span>对于W3C XML Schema必须有一个默认的平台<code>SchemaFactory</code></span> </li>
</ol>
<p> <span>如果一切都失败, <a href="../../../java/lang/IllegalArgumentException.html" title="java.lang中的类"><code>IllegalArgumentException</code></a>将被抛出。</span> </p>
<p> <span><strong>故障排除提示:</strong></span> </p>
<p> <span>有关如何解析属性文件,请参阅<a href="../../../java/util/Properties.html#load-java.io.InputStream-"><code>Properties.load(java.io.InputStream)</code></a></span> <span>特别地,冒号:'需要在属性文件中进行转义因此请确保模式语言URI在其中正确转义。</span> <span>例如:</span> </p>
<pre> <span>http\://www.w3.org/2001/XMLSchema=org.acme.foo.XSSchemaFactory</span> </pre>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<span><code>schemaLanguage</code> - 指定返回的SchemaFactory将理解的模式语言。</span>
<span>有关可能的值,请参阅<a href="#schemaLanguage">the list of available schema languages</a></span>
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
新实例一个
<code>SchemaFactory</code>
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果没有模式语言的实现可用。
</dd>
<dd>
<code><a href="../../../java/lang/NullPointerException.html" title="class in java.lang">NullPointerException</a></code> - 如果
<code>schemaLanguage</code>参数为空。
</dd>
<dd>
<code><a href="../../../javax/xml/validation/SchemaFactoryConfigurationError.html" title="class in javax.xml.validation">SchemaFactoryConfigurationError</a></code> - 如果遇到配置错误。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/xml/validation/SchemaFactory.html#newInstance-java.lang.String-java.lang.String-java.lang.ClassLoader-"><code>newInstance(String schemaLanguage, String factoryClassName, ClassLoader classLoader)</code></a>
</dd>
</dl> </li>
</ul> <a name="newInstance-java.lang.String-java.lang.String-java.lang.ClassLoader-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>newInstance</h4> <pre>public static <a href="../../../javax/xml/validation/SchemaFactory.html" title="class in javax.xml.validation">SchemaFactory</a> newInstance(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> schemaLanguage,
<a href="../../../java/lang/String.html" title="class in java.lang">String</a> factoryClassName,
<a href="../../../java/lang/ClassLoader.html" title="class in java.lang">ClassLoader</a> classLoader)</pre>
<div class="block">
<p> <span>从类名获取一个新的实例<code>SchemaFactory</code></span> <span><code>SchemaFactory</code>如果指定的工厂类名支持指定模式语言返回。</span> <span>在类路径中有多个提供程序时,此功能很有用。</span> <span>它可以更好地控制应用程序,因为它可以指定应该加载哪个提供程序。</span> </p>
<h2> <span>提示进行故障排除</span> </h2>
<p> <span>设置<code>jaxp.debug</code>系统属性将导致此方法打印大量调试消息到<code>System.err</code>关于它正在做什么和在哪里看。</span> </p>
<p> <span>如果您有问题,请尝试:</span> </p>
<pre> <span>java -Djaxp.debug=1 YourProgram ....</span> </pre>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<span><code>schemaLanguage</code> - 指定返回的<code>SchemaFactory</code>将理解的架构语言。</span>
<span>有关可能的值,请参见<a href="#schemaLanguage">the list of available schema languages</a></span>
</dd>
<dd>
<code>factoryClassName</code> -完全限定工厂类名称,提供实施
<code>javax.xml.validation.SchemaFactory</code>
</dd>
<dd>
<span><code>classLoader</code> - <code>ClassLoader</code>用于加载工厂类。</span>
<span>如果<code>null</code>当前的<code>Thread</code>的上下文classLoader用于加载工厂类。</span>
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
新实例的一个
<code>SchemaFactory</code>
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果
<code>factoryClassName</code>
<code>null</code> 或者工厂类无法加载实例化或不支持schemLanguage参数中
<code>schemLanguage</code>的模式语言。
</dd>
<dd>
<code><a href="../../../java/lang/NullPointerException.html" title="class in java.lang">NullPointerException</a></code> - 如果
<code>schemaLanguage</code>参数为空。
</dd>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.6
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/xml/validation/SchemaFactory.html#newInstance-java.lang.String-"><code>newInstance(String schemaLanguage)</code></a>
</dd>
</dl> </li>
</ul> <a name="isSchemaLanguageSupported-java.lang.String-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>isSchemaLanguageSupported</h4> <pre>public abstract boolean isSchemaLanguageSupported(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> schemaLanguage)</pre>
<div class="block">
<p>这个<code>SchemaFactory</code>是否支持指定的模式? </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<span><code>schemaLanguage</code> - 指定返回的<code>SchemaFactory</code>将理解的架构语言。</span>
<span><code>schemaLanguage</code>必须指定一个<a href="#schemaLanguage">valid</a>模式语言。</span>
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
<code>true</code>如果
<code>SchemaFactory</code>支持
<code>schemaLanguage</code> ,否则
<code>false</code>
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/NullPointerException.html" title="class in java.lang">NullPointerException</a></code> - 如果
<code>schemaLanguage</code>
<code>null</code>
</dd>
<dd>
<code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果
<code>schemaLanguage.length() == 0</code>
<code>schemaLanguage</code>未指定
<a href="#schemaLanguage">valid</a>模式语言。
</dd>
</dl> </li>
</ul> <a name="getFeature-java.lang.String-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getFeature</h4> <pre>public boolean getFeature(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> name)
throws <a href="../../../org/xml/sax/SAXNotRecognizedException.html" title="class in org.xml.sax">SAXNotRecognizedException</a>,
<a href="../../../org/xml/sax/SAXNotSupportedException.html" title="class in org.xml.sax">SAXNotSupportedException</a></pre>
<div class="block">
<span>查找特征标记的值。</span>
<p> <span>功能名称是任何完全限定的URI。</span> <span><a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>可以识别功能名称,但暂时无法返回其值。</span> </p>
<p> <span>实施者是免费并被鼓励发明自己的功能使用自己的URI建立的名称。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>name</code> - 功能名称它是非空的完全限定URI。
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
特征的当前值true或false
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../org/xml/sax/SAXNotRecognizedException.html" title="class in org.xml.sax">SAXNotRecognizedException</a></code> - 如果无法分配或检索到特征值。
</dd>
<dd>
<span><code><a href="../../../org/xml/sax/SAXNotSupportedException.html" title="class in org.xml.sax">SAXNotSupportedException</a></code> - 当<a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>识别功能名称,但此时无法确定其值。</span>
</dd>
<dd>
<code><a href="../../../java/lang/NullPointerException.html" title="class in java.lang">NullPointerException</a></code> - 如果
<code>name</code>
<code>null</code>
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/xml/validation/SchemaFactory.html#setFeature-java.lang.String-boolean-"><code>setFeature(String, boolean)</code></a>
</dd>
</dl> </li>
</ul> <a name="setFeature-java.lang.String-boolean-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>setFeature</h4> <pre>public void setFeature(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> name,
boolean value)
throws <a href="../../../org/xml/sax/SAXNotRecognizedException.html" title="class in org.xml.sax">SAXNotRecognizedException</a>,
<a href="../../../org/xml/sax/SAXNotSupportedException.html" title="class in org.xml.sax">SAXNotSupportedException</a></pre>
<div class="block">
<p> <span>设置了一个功能,这个<code>SchemaFactory</code> <a href="../../../javax/xml/validation/Schema.html" title="javax.xml.validation中的类"><code>Schema</code></a>此工厂创建S推而广之 <a href="../../../javax/xml/validation/Validator.html" title="javax.xml.validation中的类"><code>Validator</code></a> S和<a href="../../../javax/xml/validation/ValidatorHandler.html" title="javax.xml.validation中的类"><code>ValidatorHandler</code></a>那些创建小号<a href="../../../javax/xml/validation/Schema.html" title="javax.xml.validation中的类"><code>Schema</code></a>秒。</span> </p>
<p> <span>实施者和开发人员应特别<a href="../../../javax/xml/validation/Schema.html" title="javax.xml.validation中的类">注意</a>如何处理由<a href="../../../javax/xml/validation/SchemaFactory.html#newSchema--"><code>newSchema()</code></a>返回的特殊<a href="../../../javax/xml/validation/Schema.html" title="javax.xml.validation中的类"><code>Schema</code></a>对象。</span> <span>在某些情况下,例如,当<code>SchemaFactory</code>和实际加载模式的类来自不同的实现时, <code>SchemaFactory</code>功能可能无法自动继承。</span> <span>开发人员应确保在两个地方明确设置诸如安全处理等功能。</span> </p>
<p> <span>功能名称是任何完全限定的URI。</span> <span><a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>可以公开特征值,但无法更改当前值。</span> </p>
<p> <span>所有实现都需要支持<a href="../../../javax/xml/XMLConstants.html#FEATURE_SECURE_PROCESSING"><code>XMLConstants.FEATURE_SECURE_PROCESSING</code></a>功能。</span> <span>当功能是:</span> </p>
<ul>
<li> <span><code>true</code> 实现将限制XML处理以符合实现限制。</span> <span>示例包括enity扩展限制和消耗大量资源的XML Schema结构。</span> <span>如果XML处理由于安全原因而受到限制则将通过对已注册的<a href="../../../org/xml/sax/ErrorHandler.html#fatalError-org.xml.sax.SAXParseException-"><code>ErrorHandler.fatalError(SAXParseException exception)</code></a>的呼叫进行报告。</span> <span><a href="../../../javax/xml/validation/SchemaFactory.html#setErrorHandler-org.xml.sax.ErrorHandler-"><code>setErrorHandler(ErrorHandler errorHandler)</code></a></span> </li>
<li> <span><code>false</code> 实现将根据XML规范处理XML而不考虑可能的实现限制。</span> </li>
</ul>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>name</code> - 特征名称它是非空的完全限定URI。
</dd>
<dd>
<code>value</code> - 要素的值true或false
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../org/xml/sax/SAXNotRecognizedException.html" title="class in org.xml.sax">SAXNotRecognizedException</a></code> - 如果不能分配或检索到特征值。
</dd>
<dd>
<span><code><a href="../../../org/xml/sax/SAXNotSupportedException.html" title="class in org.xml.sax">SAXNotSupportedException</a></code> - 当<a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>识别功能名称但无法设置请求的值时。</span>
</dd>
<dd>
<code><a href="../../../java/lang/NullPointerException.html" title="class in java.lang">NullPointerException</a></code> - 如果
<code>name</code>
<code>null</code>
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/xml/validation/SchemaFactory.html#getFeature-java.lang.String-"><code>getFeature(String)</code></a>
</dd>
</dl> </li>
</ul> <a name="setProperty-java.lang.String-java.lang.Object-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>setProperty</h4> <pre>public void setProperty(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> name,
<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> object)
throws <a href="../../../org/xml/sax/SAXNotRecognizedException.html" title="class in org.xml.sax">SAXNotRecognizedException</a>,
<a href="../../../org/xml/sax/SAXNotSupportedException.html" title="class in org.xml.sax">SAXNotSupportedException</a></pre>
<div class="block">
<span>设置属性的值。</span>
<p> <span>属性名称是任何完全限定的URI。</span> <span><a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>可以识别属性名称,但无法更改当前值。</span> </p>
<p> <span>实现JAXP 1.5或更高版本的所有实现都需要支持<a href="../../../javax/xml/XMLConstants.html#ACCESS_EXTERNAL_DTD"><code>XMLConstants.ACCESS_EXTERNAL_DTD</code></a><a href="../../../javax/xml/XMLConstants.html#ACCESS_EXTERNAL_SCHEMA"><code>XMLConstants.ACCESS_EXTERNAL_SCHEMA</code></a>属性。</span> </p>
<ul>
<li><p> <span>访问模式文件中的外部DTD仅限于<a href="../../../javax/xml/XMLConstants.html#ACCESS_EXTERNAL_DTD"><code>XMLConstants.ACCESS_EXTERNAL_DTD</code></a>属性指定的<a href="../../../javax/xml/XMLConstants.html#ACCESS_EXTERNAL_DTD">协议</a></span> <span>如果访问被创造新模式的过程中,由于该物业的限制否认, <a href="../../../org/xml/sax/SAXException.html" title="在org.xml.sax中的类"><code>SAXException</code></a>将被抛出<a href="../../../javax/xml/validation/SchemaFactory.html#newSchema-javax.xml.transform.Source-"><code>newSchema(Source)</code></a><a href="../../../javax/xml/validation/SchemaFactory.html#newSchema-java.io.File-"><code>newSchema(File)</code></a><a href="../../../javax/xml/validation/SchemaFactory.html#newSchema-java.net.URL-"><code>newSchema(URL)</code></a>或或<a href="../../../javax/xml/validation/SchemaFactory.html#newSchema-javax.xml.transform.Source:A-"><code>newSchema(Source[])</code></a>方法。</span> </p><p> <span>访问xml源文件中的外部DTD仅限于<a href="../../../javax/xml/XMLConstants.html#ACCESS_EXTERNAL_DTD"><code>XMLConstants.ACCESS_EXTERNAL_DTD</code></a>属性指定的<a href="../../../javax/xml/XMLConstants.html#ACCESS_EXTERNAL_DTD">协议</a></span> <span>如果访问被验证过程中,由于该物业的限制否认, <a href="../../../org/xml/sax/SAXException.html" title="在org.xml.sax中的类"><code>SAXException</code></a>将被抛出<a href="../../../javax/xml/validation/Validator.html#validate-javax.xml.transform.Source-"><code>Validator.validate(Source)</code></a><a href="../../../javax/xml/validation/Validator.html#validate-javax.xml.transform.Source-javax.xml.transform.Result-"><code>Validator.validate(Source, Result)</code></a>方法。</span> </p><p> <span><a href="../../../javax/xml/XMLConstants.html#ACCESS_EXTERNAL_SCHEMA">schemaLocation</a>属性访问外部引用集仅限于<a href="../../../javax/xml/XMLConstants.html#ACCESS_EXTERNAL_SCHEMA"><code>XMLConstants.ACCESS_EXTERNAL_SCHEMA</code></a>属性指定的<a href="../../../javax/xml/XMLConstants.html#ACCESS_EXTERNAL_SCHEMA">协议</a></span> <span>如果访问被验证过程中,由于该物业的限制否认, <a href="../../../org/xml/sax/SAXException.html" title="在org.xml.sax中的类"><code>SAXException</code></a>将被抛出<a href="../../../javax/xml/validation/Validator.html#validate-javax.xml.transform.Source-"><code>Validator.validate(Source)</code></a><a href="../../../javax/xml/validation/Validator.html#validate-javax.xml.transform.Source-javax.xml.transform.Result-"><code>Validator.validate(Source, Result)</code></a>方法。</span> </p><p> <span>由Import和Include元素访问外部引用设置仅限于<a href="../../../javax/xml/XMLConstants.html#ACCESS_EXTERNAL_SCHEMA"><code>XMLConstants.ACCESS_EXTERNAL_SCHEMA</code></a>属性指定的<a href="../../../javax/xml/XMLConstants.html#ACCESS_EXTERNAL_SCHEMA">协议</a></span> <span>如果访问被创造新模式的过程中,由于该物业的限制否认, <a href="../../../org/xml/sax/SAXException.html" title="在org.xml.sax中的类"><code>SAXException</code></a>将被抛出<a href="../../../javax/xml/validation/SchemaFactory.html#newSchema-javax.xml.transform.Source-"><code>newSchema(Source)</code></a><a href="../../../javax/xml/validation/SchemaFactory.html#newSchema-java.io.File-"><code>newSchema(File)</code></a><a href="../../../javax/xml/validation/SchemaFactory.html#newSchema-java.net.URL-"><code>newSchema(URL)</code></a><a href="../../../javax/xml/validation/SchemaFactory.html#newSchema-javax.xml.transform.Source:A-"><code>newSchema(Source[])</code></a>方法。</span> </p></li>
</ul>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>name</code> - 属性名称它是非空的完全限定的URI。
</dd>
<dd>
<code>object</code> - 该物业所需的价值。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../org/xml/sax/SAXNotRecognizedException.html" title="class in org.xml.sax">SAXNotRecognizedException</a></code> - 如果不能分配或检索属性值。
</dd>
<dd>
<span><code><a href="../../../org/xml/sax/SAXNotSupportedException.html" title="class in org.xml.sax">SAXNotSupportedException</a></code> - 当<a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>识别属性名称但无法设置请求的值时。</span>
</dd>
<dd>
<code><a href="../../../java/lang/NullPointerException.html" title="class in java.lang">NullPointerException</a></code> - 如果
<code>name</code>
<code>null</code>
</dd>
</dl> </li>
</ul> <a name="getProperty-java.lang.String-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getProperty</h4> <pre>public <a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> getProperty(<a href="../../../java/lang/String.html" title="class in java.lang">String</a> name)
throws <a href="../../../org/xml/sax/SAXNotRecognizedException.html" title="class in org.xml.sax">SAXNotRecognizedException</a>,
<a href="../../../org/xml/sax/SAXNotSupportedException.html" title="class in org.xml.sax">SAXNotSupportedException</a></pre>
<div class="block">
<span>查找属性的值。</span>
<p> <span>属性名称是任何完全限定的URI。</span> <span><a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>可以识别属性名称,但暂时无法返回其值。</span> </p>
<p> <span><a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a> s不需要识别任何特定的属性名称。</span> </p>
<p> <span>实施者是免费的并被鼓励发明自己的属性使用自己的URI建立的名称。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>name</code> - 属性名称它是非空的完全限定URI。
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
当前的属性值。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../org/xml/sax/SAXNotRecognizedException.html" title="class in org.xml.sax">SAXNotRecognizedException</a></code> - 如果不能分配或检索属性值。
</dd>
<dd>
<code><a href="../../../org/xml/sax/SAXNotSupportedException.html" title="class in org.xml.sax">SAXNotSupportedException</a></code> - 当XMLReader识别属性名称但此时无法确定其值。
</dd>
<dd>
<code><a href="../../../java/lang/NullPointerException.html" title="class in java.lang">NullPointerException</a></code> - 如果
<code>name</code>
<code>null</code>
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/xml/validation/SchemaFactory.html#setProperty-java.lang.String-java.lang.Object-"><code>setProperty(String, Object)</code></a>
</dd>
</dl> </li>
</ul> <a name="setErrorHandler-org.xml.sax.ErrorHandler-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>setErrorHandler</h4> <pre>public abstract void setErrorHandler(<a href="../../../org/xml/sax/ErrorHandler.html" title="interface in org.xml.sax">ErrorHandler</a> errorHandler)</pre>
<div class="block">
<span>设置<a href="../../../org/xml/sax/ErrorHandler.html" title="org.xml.sax中的接口"><code>ErrorHandler</code></a>以接收在<code>newSchema</code>方法调用期间<code>newSchema</code>错误。</span>
<p> <span>错误处理程序可用于在模式解析期间自定义错误处理过程。</span> <span>当设置<a href="../../../org/xml/sax/ErrorHandler.html" title="org.xml.sax中的接口"><code>ErrorHandler</code></a>时,解析模式期间发现的错误将首先发送到<a href="../../../org/xml/sax/ErrorHandler.html" title="org.xml.sax中的接口"><code>ErrorHandler</code></a></span> </p>
<p> <span>错误处理程序可以通过从处理程序中抛出<a href="../../../org/xml/sax/SAXException.html" title="在org.xml.sax中的类"><code>SAXException</code></a>来立即中止方案的解析。</span> <span>或者例如它可以在屏幕上打印一个错误,并尝试通过从<code>ErrorHandler</code>正常返回来继续<a href="../../../org/xml/sax/ErrorHandler.html" title="org.xml.sax中的接口">处理</a></span> </p>
<p> <span>如果任何<a href="../../../java/lang/Throwable.html" title="java.lang中的类"><code>Throwable</code></a> (或其衍生类的实例)从<a href="../../../org/xml/sax/ErrorHandler.html" title="org.xml.sax中的接口"><code>ErrorHandler</code></a>抛出,则<code>newSchema</code>方法的调用者将抛出相同的<a href="../../../java/lang/Throwable.html" title="java.lang中的类"><code>Throwable</code></a>对象。</span> </p>
<p> <span><a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>不允许抛出<a href="../../../org/xml/sax/SAXException.html" title="在org.xml.sax中的类"><code>SAXException</code></a>没有首先报告给<a href="../../../org/xml/sax/ErrorHandler.html" title="org.xml.sax中的接口"><code>ErrorHandler</code></a></span> </p>
<p> <span>即使在<a href="../../../javax/xml/validation/Schema.html" title="javax.xml.validation中的类"><code>Schema</code></a>被解析时,应用程序也可以调用此方法。</span> </p>
<p> <span><a href="../../../org/xml/sax/ErrorHandler.html" title="org.xml.sax中的接口"><code>ErrorHandler</code></a>为空时,实现将表现为如下设置以下<a href="../../../org/xml/sax/ErrorHandler.html" title="org.xml.sax中的接口"><code>ErrorHandler</code></a> </span> </p>
<pre> <span>class DraconianErrorHandler implements <a href="../../../org/xml/sax/ErrorHandler.html" title="interface in org.xml.sax"><code>ErrorHandler</code></a> {
public void fatalError( <a href="../../../org/xml/sax/SAXParseException.html" title="class in org.xml.sax"><code>SAXParseException</code></a> e ) throws <a href="../../../org/xml/sax/SAXException.html" title="class in org.xml.sax"><code>SAXException</code></a> {
throw e;
}
public void error( <a href="../../../org/xml/sax/SAXParseException.html" title="class in org.xml.sax"><code>SAXParseException</code></a> e ) throws <a href="../../../org/xml/sax/SAXException.html" title="class in org.xml.sax"><code>SAXException</code></a> {
throw e;
}
public void warning( <a href="../../../org/xml/sax/SAXParseException.html" title="class in org.xml.sax"><code>SAXParseException</code></a> e ) throws <a href="../../../org/xml/sax/SAXException.html" title="class in org.xml.sax"><code>SAXException</code></a> {
// noop
}
}</span> </pre>
<p> <span>当创建一个新的<a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>对象时最初该字段设置为null。</span> <span>此字段<em>不会</em>被继承到<a href="../../../javax/xml/validation/Schema.html" title="javax.xml.validation中的类"><code>Schema</code></a> S <a href="../../../javax/xml/validation/Validator.html" title="javax.xml.validation中的类"><code>Validator</code></a> S<a href="../../../javax/xml/validation/ValidatorHandler.html" title="javax.xml.validation中的类"><code>ValidatorHandler</code></a> S中的从这个创建<a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a></span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<span><code>errorHandler</code> - 要设置的新的错误处理程序。</span>
<span>该参数可以是<code>null</code></span>
</dd>
</dl> </li>
</ul> <a name="getErrorHandler--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getErrorHandler</h4> <pre>public abstract <a href="../../../org/xml/sax/ErrorHandler.html" title="interface in org.xml.sax">ErrorHandler</a> getErrorHandler()</pre>
<div class="block">
<span>获得当前<a href="../../../org/xml/sax/ErrorHandler.html" title="org.xml.sax中的接口"><code>ErrorHandler</code></a>设置为此<a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a></span>
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
<span>此方法返回通过<a href="../../../javax/xml/validation/SchemaFactory.html#setErrorHandler-org.xml.sax.ErrorHandler-"><code>setErrorHandler(ErrorHandler)</code></a>方法最后设置的对象如果该方法从未调用则为null因为此<a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>已创建。</span>
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/xml/validation/SchemaFactory.html#setErrorHandler-org.xml.sax.ErrorHandler-"><code>setErrorHandler(ErrorHandler)</code></a>
</dd>
</dl> </li>
</ul> <a name="setResourceResolver-org.w3c.dom.ls.LSResourceResolver-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>setResourceResolver</h4> <pre>public abstract void setResourceResolver(<a href="../../../org/w3c/dom/ls/LSResourceResolver.html" title="interface in org.w3c.dom.ls">LSResourceResolver</a> resourceResolver)</pre>
<div class="block">
<span>设置<a href="../../../org/w3c/dom/ls/LSResourceResolver.html" title="界面在org.w3c.dom.ls中"><code>LSResourceResolver</code></a>以在解析模式时自定义资源分辨率。</span>
<p> <span><a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>在解析模式时需要定位外部资源时使用<a href="../../../org/w3c/dom/ls/LSResourceResolver.html" title="界面在org.w3c.dom.ls中"><code>LSResourceResolver</code></a> ,尽管构成“定位外部资源”的方式取决于每个模式语言。</span> <span>例如对于W3C XML Schema这包括文件<code>&lt;include&gt;</code> d或<code>&lt;import&gt;</code> ed以及从模式文件引用的DTD等。</span> </p>
<p> <span>即使在<a href="../../../javax/xml/validation/Schema.html" title="javax.xml.validation中的类"><code>Schema</code></a>被解析时,应用程序也可以调用此方法。</span> </p>
<p> <span><a href="../../../org/w3c/dom/ls/LSResourceResolver.html" title="界面在org.w3c.dom.ls中"><code>LSResourceResolver</code></a>为空时,实现将表现为如下设置以下<a href="../../../org/w3c/dom/ls/LSResourceResolver.html" title="界面在org.w3c.dom.ls中"><code>LSResourceResolver</code></a> </span> </p>
<pre> <span>class DumbDOMResourceResolver implements <a href="../../../org/w3c/dom/ls/LSResourceResolver.html" title="interface in org.w3c.dom.ls"><code>LSResourceResolver</code></a> {
public <a href="../../../org/w3c/dom/ls/LSInput.html" title="interface in org.w3c.dom.ls"><code>LSInput</code></a> resolveResource(
String publicId, String systemId, String baseURI) {
return null; // always return null
}
}</span> </pre>
<p> <span>如果<a href="../../../org/w3c/dom/ls/LSResourceResolver.html" title="界面在org.w3c.dom.ls中"><code>LSResourceResolver</code></a>抛出一个<a href="../../../java/lang/RuntimeException.html" title="java.lang中的类"><code>RuntimeException</code></a> (或其派生类的实例),则<a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>将中止解析和的呼叫者<code>newSchema</code>方法将接收相同<a href="../../../java/lang/RuntimeException.html" title="java.lang中的类"><code>RuntimeException</code></a></span> </p>
<p> <span>当创建一个新的<a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>对象时最初该字段设置为null。</span> <span>该字段<em>不会</em>被继承为<a href="../../../javax/xml/validation/Schema.html" title="javax.xml.validation中的类"><code>Schema</code></a> s <a href="../../../javax/xml/validation/Validator.html" title="javax.xml.validation中的类"><code>Validator</code></a> s或<a href="../../../javax/xml/validation/ValidatorHandler.html" title="javax.xml.validation中的类"><code>ValidatorHandler</code></a> s这是从此<a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>创建的。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<span><code>resourceResolver</code> - 要设置的新资源解析器。</span>
<span>此参数可以为null。</span>
</dd>
</dl> </li>
</ul> <a name="getResourceResolver--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getResourceResolver</h4> <pre>public abstract <a href="../../../org/w3c/dom/ls/LSResourceResolver.html" title="interface in org.w3c.dom.ls">LSResourceResolver</a> getResourceResolver()</pre>
<div class="block">
<span>获得当前<a href="../../../org/w3c/dom/ls/LSResourceResolver.html" title="界面在org.w3c.dom.ls中"><code>LSResourceResolver</code></a>设置为此<a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a></span>
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
<span>此方法返回通过<a href="../../../javax/xml/validation/SchemaFactory.html#setResourceResolver-org.w3c.dom.ls.LSResourceResolver-"><code>setResourceResolver(LSResourceResolver)</code></a>方法最后设置的对象如果该方法从未调用则为null因为此<a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>已创建。</span>
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/xml/validation/SchemaFactory.html#setErrorHandler-org.xml.sax.ErrorHandler-"><code>setErrorHandler(ErrorHandler)</code></a>
</dd>
</dl> </li>
</ul> <a name="newSchema-javax.xml.transform.Source-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>newSchema</h4> <pre>public <a href="../../../javax/xml/validation/Schema.html" title="class in javax.xml.validation">Schema</a> newSchema(<a href="../../../javax/xml/transform/Source.html" title="interface in javax.xml.transform">Source</a> schema)
throws <a href="../../../org/xml/sax/SAXException.html" title="class in org.xml.sax">SAXException</a></pre>
<div class="block">
<p> <span>将指定的源解析为模式,并将其作为模式返回。</span> </p>
<p> <span>这是一个方便的方法<a href="../../../javax/xml/validation/SchemaFactory.html#newSchema-javax.xml.transform.Source:A-"><code>newSchema(Source[] schemas)</code></a></span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>schema</code> - 表示模式的源。
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
新的
<code>Schema</code>从解析
<code>schema</code>
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../org/xml/sax/SAXException.html" title="class in org.xml.sax">SAXException</a></code> - 如果解析期间发生SAX错误。
</dd>
<dd>
<code><a href="../../../java/lang/NullPointerException.html" title="class in java.lang">NullPointerException</a></code> - 如果
<code>schema</code>为空。
</dd>
</dl> </li>
</ul> <a name="newSchema-java.io.File-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>newSchema</h4> <pre>public <a href="../../../javax/xml/validation/Schema.html" title="class in javax.xml.validation">Schema</a> newSchema(<a href="../../../java/io/File.html" title="class in java.io">File</a> schema)
throws <a href="../../../org/xml/sax/SAXException.html" title="class in org.xml.sax">SAXException</a></pre>
<div class="block">
<p> <span>将指定的File <code>File</code>为模式,并将其作为<code>Schema</code>返回。</span> </p>
<p> <span>这是一个方便的方法<a href="../../../javax/xml/validation/SchemaFactory.html#newSchema-javax.xml.transform.Source-"><code>newSchema(Source schema)</code></a></span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>schema</code> - 表示模式的文件。
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
新的
<code>Schema</code>从解析
<code>schema</code>
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../org/xml/sax/SAXException.html" title="class in org.xml.sax">SAXException</a></code> - 解析时是否发生SAX错误。
</dd>
<dd>
<code><a href="../../../java/lang/NullPointerException.html" title="class in java.lang">NullPointerException</a></code> - 如果
<code>schema</code>为空。
</dd>
</dl> </li>
</ul> <a name="newSchema-java.net.URL-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>newSchema</h4> <pre>public <a href="../../../javax/xml/validation/Schema.html" title="class in javax.xml.validation">Schema</a> newSchema(<a href="../../../java/net/URL.html" title="class in java.net">URL</a> schema)
throws <a href="../../../org/xml/sax/SAXException.html" title="class in org.xml.sax">SAXException</a></pre>
<div class="block">
<p> <span>将指定的URL <code>URL</code>为模式,并将其作为<code>Schema</code>返回。</span> </p>
<p> <span>这是一个方便的方法<a href="../../../javax/xml/validation/SchemaFactory.html#newSchema-javax.xml.transform.Source-"><code>newSchema(Source schema)</code></a></span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>schema</code> -
<code>URL</code> ,表示一个模式。
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
新的
<code>Schema</code>从解析
<code>schema</code>
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../org/xml/sax/SAXException.html" title="class in org.xml.sax">SAXException</a></code> - 解析时是否发生SAX错误。
</dd>
<dd>
<code><a href="../../../java/lang/NullPointerException.html" title="class in java.lang">NullPointerException</a></code> - 如果
<code>schema</code>为空。
</dd>
</dl> </li>
</ul> <a name="newSchema-javax.xml.transform.Source:A-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>newSchema</h4> <pre>public abstract <a href="../../../javax/xml/validation/Schema.html" title="class in javax.xml.validation">Schema</a> newSchema(<a href="../../../javax/xml/transform/Source.html" title="interface in javax.xml.transform">Source</a>[] schemas)
throws <a href="../../../org/xml/sax/SAXException.html" title="class in org.xml.sax">SAXException</a></pre>
<div class="block">
<span>将指定的源解析为模式并将其作为模式返回。</span>
<p> <span>被调用者将读取所有<a href="../../../javax/xml/transform/Source.html" title="javax.xml.transform中的接口"><code>Source</code></a>并将它们组合成一个模式。</span> <span>组合的确切语义取决于创建此<a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>对象的模式语言。</span> </p>
<p> <span>当设置了一个<a href="../../../org/xml/sax/ErrorHandler.html" title="org.xml.sax中的接口"><code>ErrorHandler</code></a>时,被调用者将向处理程序报告源中发现的所有错误。</span> <span>如果处理程序引发异常,它将中止模式编译,并从该方法抛出相同的异常。</span> <span>此外,在将错误报告给处理程序之后,被叫方可以通过抛出来中止进一步的处理。</span> <span>如果未设置错误处理程序,则被调用者将在源中抛出第一个错误。</span> </p>
<h2> <span>W3C XML Schema 1.0</span> </h2>
<p> <span>生成的模式包含指定源的组件。</span> <span>如果将所有这些源都使用适用于schemaLocation和命名空间的值导入到具有不同targetNamespace的单个模式文档中并且导入元素的顺序与源的顺序相同那么将实现相同的结果。</span> <span>XML Schema建议的第4.2.3节介绍了处理器在这方面的选择。</span> <span>处理器在处理JAXP模式源和XML Schema导入时应该是一致的JAXP兼容解析器之间的行为可能会有所不同;</span> <span>特别地,解析器可以选择忽略除了第一个&lt;import&gt;对于给定的命名空间而不管schemaLocation中提供的信息。</span> </p>
<p> <span>如果解析的模式集合包含XML Schema规范第5.1节中指定的错误,则该错误必须报告给<a href="../../../org/xml/sax/ErrorHandler.html" title="org.xml.sax中的接口"><code>ErrorHandler</code></a></span> </p>
<h2> <span>RELAX NG</span> </h2>
<p> <span>对于RELAX NG这种方法必须抛出<a href="../../../java/lang/UnsupportedOperationException.html" title="java.lang中的类"><code>UnsupportedOperationException</code></a>如果<code>schemas.length!=1</code></span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<span><code>schemas</code> - 要解析的输入。</span>
<span><a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>需要认识到<a href="../../../javax/xml/transform/sax/SAXSource.html" title="javax.xml.transform.sax中的类"><code>SAXSource</code></a> <a href="../../../javax/xml/transform/stream/StreamSource.html" title="javax.xml.transform.stream中的类"><code>StreamSource</code></a> <a href="../../../javax/xml/transform/stax/StAXSource.html" title="javax.xml.transform.stax中的类"><code>StAXSource</code></a><a href="../../../javax/xml/transform/dom/DOMSource.html" title="javax.xml.transform.dom中的类"><code>DOMSource</code></a></span>
<span>输入模式必须是XML文档或XML元素且不能为null。</span>
<span>为了向后兼容,传递文档或元素以外的任何结果都是依赖于实现的。</span>
<span>实现必须识别和处理输入或抛出IllegalArgumentException。</span>
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
<span>始终返回一个非空的有效<a href="../../../javax/xml/validation/Schema.html" title="javax.xml.validation中的类"><code>Schema</code></a>对象。</span>
<span>请注意,当报告错误时,不保证返回的<a href="../../../javax/xml/validation/Schema.html" title="javax.xml.validation中的类"><code>Schema</code></a>对象是有意义的。</span>
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<span><code><a href="../../../org/xml/sax/SAXException.html" title="class in org.xml.sax">SAXException</a></code> - 如果在处理指定的输入期间发现错误。</span>
<span>当设置了<a href="../../../org/xml/sax/ErrorHandler.html" title="org.xml.sax中的接口"><code>ErrorHandler</code></a>时,首先会报错。</span>
<span><a href="../../../javax/xml/validation/SchemaFactory.html#setErrorHandler-org.xml.sax.ErrorHandler-"><code>setErrorHandler(ErrorHandler)</code></a></span>
</dd>
<dd>
<code><a href="../../../java/lang/NullPointerException.html" title="class in java.lang">NullPointerException</a></code> - 如果
<code>schemas</code>参数本身为空或数组中的任何项为空。
</dd>
<dd>
<code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果该方法中没有识别到数组中的任何项目。
</dd>
<dd>
<code><a href="../../../java/lang/UnsupportedOperationException.html" title="class in java.lang">UnsupportedOperationException</a></code> - 如果模式语言不支持此操作。
</dd>
</dl> </li>
</ul> <a name="newSchema--">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>newSchema</h4> <pre>public abstract <a href="../../../javax/xml/validation/Schema.html" title="class in javax.xml.validation">Schema</a> newSchema()
throws <a href="../../../org/xml/sax/SAXException.html" title="class in org.xml.sax">SAXException</a></pre>
<div class="block">
<span>创建一个特殊的<a href="../../../javax/xml/validation/Schema.html" title="javax.xml.validation中的类"><code>Schema</code></a>对象。</span>
<p> <span>返回的<a href="../../../javax/xml/validation/Schema.html" title="javax.xml.validation中的类"><code>Schema</code></a>对象的确切语义取决于创建此<a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>的模式语言。</span> </p>
<p> <span>此外,允许实现使用实现特定的属性/功能来改变此方法的语义。</span> </p>
<p> <span>实施者和开发人员应该特别<a href="../../../javax/xml/validation/Schema.html" title="javax.xml.validation中的类">注意</a>这个<a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>所设置的功能如何处理这个特殊的<a href="../../../javax/xml/validation/Schema.html" title="javax.xml.validation中的类"><code>Schema</code></a></span> <span>在某些情况下,例如,当<a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>和类实际加载模式来自不同的实现时, <a href="../../../javax/xml/validation/SchemaFactory.html" title="javax.xml.validation中的类"><code>SchemaFactory</code></a>功能可能无法自动继承。</span> <span>开发人员应确保在两个地方明确设置诸如安全处理等功能。</span> </p>
<h2> <span>W3C XML Schema 1.0</span> </h2>
<p> <span>对于XML模式此方法创建一个<a href="../../../javax/xml/validation/Schema.html" title="javax.xml.validation中的类"><code>Schema</code></a>对象,通过使用文档中指定的位置提示来执行验证。</span> </p>
<p> <span>返回的<a href="../../../javax/xml/validation/Schema.html" title="javax.xml.validation中的类"><code>Schema</code></a>对象假设如果文档引用模式位置提示中的相同URL则它们将始终解析为同一模式文档。</span> <span>此asusmption允许实现重用解析文档的结果以便针对相同模式的多个验证运行速度更快。</span> </p>
<p> <span>请注意,使用模式位置提示会引入拒绝服务攻击的漏洞。</span> </p>
<h2> <span>RELAX NG</span> </h2>
<p> <span>RELAX NG不支持此操作。</span> </p>
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
<span>始终返回非空有效的<a href="../../../javax/xml/validation/Schema.html" title="javax.xml.validation中的类"><code>Schema</code></a>对象。</span>
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/UnsupportedOperationException.html" title="class in java.lang">UnsupportedOperationException</a></code> - 被调用者不支持此操作。
</dd>
<dd>
<code><a href="../../../org/xml/sax/SAXException.html" title="class in org.xml.sax">SAXException</a></code> - 如果此操作受支持但由于某些原因失败。
</dd>
</dl> </li>
</ul> </li>
</ul> </li>
</ul>
</div>
</div>