mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-07-05 16:22:43 +08:00
184 lines
18 KiB
HTML
184 lines
18 KiB
HTML
<div class="header">
|
||
<h1 class="title" title="Package">Package javax.xml.transform</h1>
|
||
<div class="docSummary">
|
||
<div class="block">
|
||
该包定义了用于处理转换指令的通用API,并执行从源到结果的转换。
|
||
</div>
|
||
</div>
|
||
<p>See: <a href="#package.description">描述</a></p>
|
||
</div><div class="contentContainer">
|
||
<ul class="blockList">
|
||
<li class="blockList">
|
||
<table border="0" cellpadding="3" cellspacing="0" class="typeSummary" summary="Interface Summary table, listing interfaces, and an explanation">
|
||
<caption>
|
||
<span>接口摘要</span>
|
||
<span class="tabEnd"> </span>
|
||
</caption>
|
||
<tbody>
|
||
<tr>
|
||
<th class="colFirst" scope="col">接口</th>
|
||
<th class="colLast" scope="col">描述</th>
|
||
</tr>
|
||
</tbody>
|
||
<tbody>
|
||
<tr class="altColor">
|
||
<td class="colFirst"><a href="../../../javax/xml/transform/ErrorListener.html" title="interface in javax.xml.transform">ErrorListener</a></td>
|
||
<td class="colLast">
|
||
<div class="block">
|
||
<span>要提供自定义错误处理,实现此接口并使用<code>setErrorListener</code>方法注册与该实现的实例<a href="../../../javax/xml/transform/Transformer.html" title="javax.xml.transform中的类"><code>Transformer</code></a> 。</span>
|
||
</div> </td>
|
||
</tr>
|
||
<tr class="rowColor">
|
||
<td class="colFirst"><a href="../../../javax/xml/transform/Result.html" title="interface in javax.xml.transform">Result</a></td>
|
||
<td class="colLast">
|
||
<div class="block">
|
||
实现此接口的对象包含构建转换结果树所需的信息。
|
||
</div> </td>
|
||
</tr>
|
||
<tr class="altColor">
|
||
<td class="colFirst"><a href="../../../javax/xml/transform/Source.html" title="interface in javax.xml.transform">Source</a></td>
|
||
<td class="colLast">
|
||
<div class="block">
|
||
实现此接口的对象包含充当源输入(XML源或转换指令)所需的信息。
|
||
</div> </td>
|
||
</tr>
|
||
<tr class="rowColor">
|
||
<td class="colFirst"><a href="../../../javax/xml/transform/SourceLocator.html" title="interface in javax.xml.transform">SourceLocator</a></td>
|
||
<td class="colLast">
|
||
<div class="block">
|
||
此接口主要用于报告XML源或转换指令中发生错误的目的。
|
||
</div> </td>
|
||
</tr>
|
||
<tr class="altColor">
|
||
<td class="colFirst"><a href="../../../javax/xml/transform/Templates.html" title="interface in javax.xml.transform">Templates</a></td>
|
||
<td class="colLast">
|
||
<div class="block">
|
||
实现此接口的对象是已处理的转换指令的运行时代表。
|
||
</div> </td>
|
||
</tr>
|
||
<tr class="rowColor">
|
||
<td class="colFirst"><a href="../../../javax/xml/transform/URIResolver.html" title="interface in javax.xml.transform">URIResolver</a></td>
|
||
<td class="colLast">
|
||
<div class="block">
|
||
实现此接口的对象,可由处理器调用,将document(),xsl:import或xsl:include中使用的URI转换为Source对象。
|
||
</div> </td>
|
||
</tr>
|
||
</tbody>
|
||
</table> </li>
|
||
<li class="blockList">
|
||
<table border="0" cellpadding="3" cellspacing="0" class="typeSummary" summary="Class Summary table, listing classes, and an explanation">
|
||
<caption>
|
||
<span>类摘要</span>
|
||
<span class="tabEnd"> </span>
|
||
</caption>
|
||
<tbody>
|
||
<tr>
|
||
<th class="colFirst" scope="col">类</th>
|
||
<th class="colLast" scope="col">描述</th>
|
||
</tr>
|
||
</tbody>
|
||
<tbody>
|
||
<tr class="altColor">
|
||
<td class="colFirst"><a href="../../../javax/xml/transform/OutputKeys.html" title="class in javax.xml.transform">OutputKeys</a></td>
|
||
<td class="colLast">
|
||
<div class="block">
|
||
提供可用于设置Transformer的输出属性或从Transformer或Templates对象检索输出属性的字符串常量。
|
||
</div> </td>
|
||
</tr>
|
||
<tr class="rowColor">
|
||
<td class="colFirst"><a href="../../../javax/xml/transform/Transformer.html" title="class in javax.xml.transform">Transformer</a></td>
|
||
<td class="colLast">
|
||
<div class="block">
|
||
这个抽象类的一个实例可以将一个源代码树转换成一个结果树。
|
||
</div> </td>
|
||
</tr>
|
||
<tr class="altColor">
|
||
<td class="colFirst"><a href="../../../javax/xml/transform/TransformerFactory.html" title="class in javax.xml.transform">TransformerFactory</a></td>
|
||
<td class="colLast">
|
||
<div class="block">
|
||
<span>TransformerFactory实例可用于创建<a href="../../../javax/xml/transform/Transformer.html" title="javax.xml.transform中的类"><code>Transformer</code></a>和<a href="../../../javax/xml/transform/Templates.html" title="javax.xml.transform中的接口"><code>Templates</code></a>对象。</span>
|
||
</div> </td>
|
||
</tr>
|
||
</tbody>
|
||
</table> </li>
|
||
<li class="blockList">
|
||
<table border="0" cellpadding="3" cellspacing="0" class="typeSummary" summary="Exception Summary table, listing exceptions, and an explanation">
|
||
<caption>
|
||
<span>异常摘要</span>
|
||
<span class="tabEnd"> </span>
|
||
</caption>
|
||
<tbody>
|
||
<tr>
|
||
<th class="colFirst" scope="col">异常</th>
|
||
<th class="colLast" scope="col">描述</th>
|
||
</tr>
|
||
</tbody>
|
||
<tbody>
|
||
<tr class="altColor">
|
||
<td class="colFirst"><a href="../../../javax/xml/transform/TransformerConfigurationException.html" title="class in javax.xml.transform">TransformerConfigurationException</a></td>
|
||
<td class="colLast">
|
||
<div class="block">
|
||
表示严重的配置错误。
|
||
</div> </td>
|
||
</tr>
|
||
<tr class="rowColor">
|
||
<td class="colFirst"><a href="../../../javax/xml/transform/TransformerException.html" title="class in javax.xml.transform">TransformerException</a></td>
|
||
<td class="colLast">
|
||
<div class="block">
|
||
此类指定在转换过程中发生的异常情况。
|
||
</div> </td>
|
||
</tr>
|
||
</tbody>
|
||
</table> </li>
|
||
<li class="blockList">
|
||
<table border="0" cellpadding="3" cellspacing="0" class="typeSummary" summary="Error Summary table, listing errors, and an explanation">
|
||
<caption>
|
||
<span>Error Summary</span>
|
||
<span class="tabEnd"> </span>
|
||
</caption>
|
||
<tbody>
|
||
<tr>
|
||
<th class="colFirst" scope="col">Error</th>
|
||
<th class="colLast" scope="col">描述</th>
|
||
</tr>
|
||
</tbody>
|
||
<tbody>
|
||
<tr class="altColor">
|
||
<td class="colFirst"><a href="../../../javax/xml/transform/TransformerFactoryConfigurationError.html" title="class in javax.xml.transform">TransformerFactoryConfigurationError</a></td>
|
||
<td class="colLast">
|
||
<div class="block">
|
||
当Transformer工厂存在配置问题时抛出。
|
||
</div> </td>
|
||
</tr>
|
||
</tbody>
|
||
</table> </li>
|
||
</ul>
|
||
<a name="package.description">
|
||
<!-- --> </a>
|
||
<h2 title="Package javax.xml.transform Description">Package javax.xml.transform Description</h2>
|
||
<div class="block">
|
||
<p> <span>该包定义了用于处理转换指令的通用API,并执行从源到结果的转换。</span> <span>这些接口不依赖于SAX或DOM标准,并尝试尽可能少地做出关于转换的源和细节的假设。</span> <span>通过定义<a href="../../../javax/xml/transform/Source.html" title="javax.xml.transform中的接口"><code>Source</code></a>和<a href="../../../javax/xml/transform/Result.html" title="javax.xml.transform中的接口"><code>Result</code></a>接口实现了这一点。</span> </p>
|
||
<p> <span>要定义用户的具体类,API定义了在根级别找到的接口的特殊化。</span> <span>这些接口在发现<a href="../../../javax/xml/transform/sax/package-summary.html"><code>javax.xml.transform.sax</code></a> , <a href="../../../javax/xml/transform/dom/package-summary.html"><code>javax.xml.transform.dom</code></a>和<a href="../../../javax/xml/transform/stream/package-summary.html"><code>javax.xml.transform.stream</code></a> 。</span> </p>
|
||
<h3> <span>创建对象</span> </h3>
|
||
<p> <span>API允许从静态函数<a href="../../../javax/xml/transform/TransformerFactory.html#newInstance--"><code>TransformerFactory.newInstance()</code></a>创建一个具体的<a href="../../../javax/xml/transform/TransformerFactory.html" title="javax.xml.transform中的类"><code>TransformerFactory</code></a>对象。</span> </p>
|
||
<h3> <span>输入和输出规范</span> </h3>
|
||
<p> <span>该API定义了两个名为<a href="../../../javax/xml/transform/Source.html" title="javax.xml.transform中的接口"><code>Source</code></a>和<a href="../../../javax/xml/transform/Result.html" title="javax.xml.transform中的接口"><code>Result</code>的</a>接口对象。</span> <span>为了将Source和Result对象传递给接口,必须使用具体的类。</span> <span>三个具体表现在为每个对象的定义: <a href="../../../javax/xml/transform/stream/StreamSource.html" title="javax.xml.transform.stream中的类"><code>StreamSource</code></a>和<a href="../../../javax/xml/transform/stream/StreamResult.html" title="javax.xml.transform.stream中的类"><code>StreamResult</code></a> , <a href="../../../javax/xml/transform/sax/SAXSource.html" title="javax.xml.transform.sax中的类"><code>SAXSource</code></a>和<a href="../../../javax/xml/transform/sax/SAXResult.html" title="javax.xml.transform.sax中的类"><code>SAXResult</code></a> ,并<a href="../../../javax/xml/transform/dom/DOMSource.html" title="javax.xml.transform.dom中的类"><code>DOMSource</code></a>和<a href="../../../javax/xml/transform/dom/DOMResult.html" title="javax.xml.transform.dom中的类"><code>DOMResult</code></a> 。</span> <span>这些对象中的每一个定义了一个FEATURE字符串(我是URL的形式),可以传递给<a href="../../../javax/xml/transform/TransformerFactory.html#getFeature-java.lang.String-"><code>TransformerFactory.getFeature(java.lang.String)</code></a>以查看给定类型的Source或Result对象是否受支持。</span> <span>例如,要测试是否支持DOMSource和StreamResult,您可以应用以下测试。</span> </p>
|
||
<pre> <span><code> TransformerFactory tfactory = TransformerFactory.newInstance(); if (tfactory.getFeature(DOMSource.FEATURE) && tfactory.getFeature(StreamResult.FEATURE)) { ... } </code></span> </pre>
|
||
<h3> <span><a name="qname-delimiter">Qualified Name Representation</a></span> </h3>
|
||
<p> <span><a href="http://www.w3.org/TR/REC-xml-names">Namespaces</a>在处理XML对象时提出了一个问题区域。</span> <span>合格名称以XML标记显示为前缀名称。</span> <span>但前缀本身并不持有身份。</span> <span>相反,它是上下文映射到拥有身份的URI。</span> <span>因此,当Java程序中通过“xyz:foo”等合格名称时,必须提供将“xyz”映射到命名空间的方法。</span> </p>
|
||
<p> <span>一个解决方案是创建一个保存命名空间URI的“QName”对象,以及前缀和本地名称,但这并不总是最佳的解决方案,例如,当您要使用唯一的字符串作为键一个字典对象。</span> <span>没有字符串表示也使得很难在XML文档的上下文之外指定命名空间的标识。</span> </p>
|
||
<p> <span>为了将命名空间值传递给转换,例如在<a href="../../../javax/xml/transform/Transformer.html" title="javax.xml.transform中的类"><code>Transformer</code></a>对象上设置属性或参数时,此规范定义了一个String“qname”对象参数作为两部分字符串传递,命名空间URI由大括号括起来{}),后跟本地名称。</span> <span>如果qname具有空URI,则String对象仅包含本地名称。</span> <span>应用程序可以通过测试来查看名称的第一个字符是否为“{”字符,从而安全地检查非空URI。</span> </p>
|
||
<p> <span>例如,如果从使用<xyz:foo xmlns:xyz =“http://xyz.foo.com/yada/baz.html”/>定义的元素获取URI和本地名称,则合格名称将为“{http://xyz.foo.com/yada/baz.html}foo”。</span> <span>请注意,前缀丢失。</span> </p>
|
||
<h3> <span>结果树序列化</span> </h3>
|
||
<p> <span>结果树的串行化可以通过<a href="../../../javax/xml/transform/Transformer.html#setOutputProperties-java.util.Properties-"><code>Transformer.setOutputProperties(java.util.Properties)</code></a>和<a href="../../../javax/xml/transform/Transformer.html#setOutputProperty-java.lang.String-java.lang.String-"><code>Transformer.setOutputProperty(java.lang.String, java.lang.String)</code></a>方法进行控制。</span> <span>这些属性仅适用于流结果,当结果是DOM树或SAX事件流时,它们不起作用。</span> </p>
|
||
<p> <span>匹配<a href="http://www.w3.org/TR/xslt#output">XSLT specification for xsl:output attributes的</a>字符串可以从<a href="../../../javax/xml/transform/OutputKeys.html" title="javax.xml.transform中的类"><code>OutputKeys</code></a>类引用。</span> <span>也可以指定其他字符串。</span> <span>如果变压器不识别输出键,则抛出<a href="../../../java/lang/IllegalArgumentException.html" title="java.lang中的类"><code>IllegalArgumentException</code></a> ,除非键名称为<a href="#qname-delimiter">namespace qualified</a> 。</span> <span>总是允许输入命名空间限定的输出密钥名称,尽管它们可能被某些实现忽略。</span> </p>
|
||
<p> <span>如果所需要的是将源简单的身份转换为结果,那么<a href="../../../javax/xml/transform/TransformerFactory.html" title="javax.xml.transform中的类"><code>TransformerFactory</code></a>提供了一个没有参数的<a href="../../../javax/xml/transform/TransformerFactory.html#newTransformer--"><code>TransformerFactory.newTransformer()</code></a>方法。</span> <span>此方法创建一个有效地将源复制到结果的Transformer。</span> <span>此方法可用于从SAX事件创建DOM或从DOM或SAX事件创建XML或HTML流。</span> </p>
|
||
<h3> <span>异常和错误报告</span> </h3>
|
||
<p> <span>转换API会抛出三种类型的异常异常。</span> <span>甲<a href="../../../javax/xml/transform/TransformerFactoryConfigurationError.html" title="javax.xml.transform中的类"><code>TransformerFactoryConfigurationError</code></a>平行于<a href="../../../javax/xml/parsers/FactoryConfigurationError.html" title="javax.xml.parsers中的类"><code>FactoryConfigurationError</code></a> ,并且当与所述的TransformerFactory的结构存在问题,则抛出。</span> <span>当使用“javax.xml.transform.TransformerFactory”系统属性指定的转换工厂类无法找到或实例化时,通常会抛出此错误。</span> </p>
|
||
<p> <span>如果由于任何原因无法创建<a href="../../../javax/xml/transform/TransformerConfigurationException.html" title="javax.xml.transform中的类">Transformer,</a>则可能会抛出<code>TransformerConfigurationException</code>。</span> <span>如果转换指令中存在语法错误,则可能会抛出TransformerConfigurationException,例如调用<a href="../../../javax/xml/transform/TransformerFactory.html#newTransformer-javax.xml.transform.Source-"><code>TransformerFactory.newTransformer(javax.xml.transform.Source)</code></a>时。</span> </p>
|
||
<p> <span><a href="../../../javax/xml/transform/TransformerException.html" title="javax.xml.transform中的类"><code>TransformerException</code></a>是在转换过程中发生的一般异常。</span> <span>变压器异常可能会包装另一个异常,并且如果调用了<a href="../../../javax/xml/transform/TransformerException.html#printStackTrace--"><code>TransformerException.printStackTrace()</code></a>方法中的任何一个,它将从最近的一个开始生成堆栈转储列表。</span> <span>变压器异常还提供了一个<a href="../../../javax/xml/transform/SourceLocator.html" title="javax.xml.transform中的接口"><code>SourceLocator</code></a>对象,指示源树中的哪个或变换指令发生错误。</span> <span>可以调用<a href="../../../javax/xml/transform/TransformerException.html#getMessageAndLocation--"><code>TransformerException.getMessageAndLocation()</code></a>获取位置信息的错误消息,并且可以调用<a href="../../../javax/xml/transform/TransformerException.html#getLocationAsString--"><code>TransformerException.getLocationAsString()</code></a>来获取位置字符串。</span> </p>
|
||
<p> <span>转换警告和错误发送到<a href="../../../javax/xml/transform/ErrorListener.html" title="javax.xml.transform中的接口"><code>ErrorListener</code></a> ,此时应用程序可能会决定报告错误或警告,并可能会决定为非致命错误<code>异常</code> 。</span> <span>该<code>ErrorListener</code>可以通过设置<a href="../../../javax/xml/transform/TransformerFactory.html#setErrorListener-javax.xml.transform.ErrorListener-"><code>TransformerFactory.setErrorListener(javax.xml.transform.ErrorListener)</code></a>报告说有语法错误在转换指令,或通过做错误<a href="../../../javax/xml/transform/Transformer.html#setErrorListener-javax.xml.transform.ErrorListener-"><code>Transformer.setErrorListener(javax.xml.transform.ErrorListener)</code></a>报告在转换过程中出现的错误。</span> <span>这两个对象上的<code>ErrorListener</code>始终是有效的,非<code>null</code> ,无论是由应用程序设置还是由处理器提供的默认实现。</span> <span>处理器提供的默认实现将会将所有警告和错误报告给<code>System.err</code> ,并且不会抛出任何<code>异常</code> s。</span> <span><em>强烈</em>鼓励应用程序注册和使用<code>ErrorListener</code> ,以确保警告和错误的正确行为。</span> </p>
|
||
<h3> <span>解决转换中的URI</span> </h3>
|
||
<p> <span>API提供了一种从样式表指令中引用的URI或通过调用应用程序解析的转换内的URI的方法。</span> <span>这可以通过创建一个实现类来完成<a href="../../../javax/xml/transform/URIResolver.html" title="javax.xml.transform中的接口"><code>URIResolver</code></a>接口,其方法之一, <a href="../../../javax/xml/transform/URIResolver.html#resolve-java.lang.String-java.lang.String-"><code>URIResolver.resolve(java.lang.String, java.lang.String)</code></a> ,并使用这个类来设置URI分辨率的转换指令或改造与<a href="../../../javax/xml/transform/TransformerFactory.html#setURIResolver-javax.xml.transform.URIResolver-"><code>TransformerFactory.setURIResolver(javax.xml.transform.URIResolver)</code></a>或<a href="../../../javax/xml/transform/Transformer.html#setURIResolver-javax.xml.transform.URIResolver-"><code>Transformer.setURIResolver(javax.xml.transform.URIResolver)</code></a> 。</span> <span><code>URIResolver.resolve</code>方法使用两个String参数,即样式表指令中找到的URI或构建为转换过程的一部分,以及如果需要绝对URI,则第一个参数将作为绝对的基本URI。</span> <span>返回的<a href="../../../javax/xml/transform/Source.html" title="javax.xml.transform中的接口"><code>Source</code></a>对象必须由变压器使用,如其实现的功能所指定。</span> </p>
|
||
</div>
|
||
</div> |