|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個軟體套件 下一個軟體套件 | 框架 無框架 |
請參見:
描述
介面摘要 | |
---|---|
ErrorListener | 要提供自定義錯誤處理,則需實作此介面並使用 setErrorListener 方法註冊一個帶有 Transformer 的實作的實例。 |
Result | 實作此介面的物件包含建構轉換結果階層樹所需的資訊。 |
Source | 實作此介面的物件包含充當源輸入(XML 源或轉換指令)所需的資訊 |
SourceLocator | 此介面的主要目的是報告在 XML 源或轉換指令中發生錯誤的位置。 |
Templates | 實作此介面的物件是處理後的轉換指令的運行時表示形式。 |
URIResolver | 實作此介面的物件可由處理器進行調用,以將 document()、xsl:import 或 xsl:include 中使用的 URI 轉換為 Source 物件。 |
類別摘要 | |
---|---|
OutputKeys | 提供可用於設置 Transformer 的輸出屬性或從 Transformer 或 Templates 物件檢索輸出屬性的字元串常數。 |
Transformer | 此抽象類別的實例能夠將源階層樹轉換為結果階層樹。 |
TransformerFactory | TransformerFactory 實例可用於創建 Transformer 和 Templates 物件。 |
異常摘要 | |
---|---|
TransformerConfigurationException | 指示嚴重的配置錯誤。 |
TransformerException | 此類別指定了轉換過程中發生的異常條件。 |
錯誤摘要 | |
---|---|
TransformerFactoryConfigurationError | 當通過 Transformer Factories 進行的配置存在問題時拋出此異常。 |
此套件定義了用於處理轉換指令,以及執行從源到結果的轉換的一般 API。這些介面不依賴於 SAX 或 DOM 標準,且盡可能少地進行有關轉換的源和結果的細節的假定。它通過定義 Source
和 Result
介面來實作這一點。
為了定義具體的使用者類別,API 定義了根級介面規範。這些介面可以在 javax.xml.transform.sax
、javax.xml.transform.dom
和 javax.xml.transform.stream
中找到。
API 從靜態函數 TransformerFactory.newInstance()
創建具體 TransformerFactory
物件。
此 API 定義了兩個介面物件,它們稱為 Source
和 Result
。為將 Source 和 Result 物件傳遞到介面,必須使用具體類別。為每個物件定義了三個具體表示形式:StreamSource
和 StreamResult
、SAXSource
和 SAXResult
、DOMSource
和 DOMResult
。這些物件中的每一個物件均定義了一個 FEATURE 字元串,可以將它傳遞到 TransformerFactory.getFeature(java.lang.String)
中以查看是否支持給定型別的 Source 或 Result 物件。例如,要測試是否支持 DOMSource 和 StreamResult,可以使用以下測試。
TransformerFactory tfactory = TransformerFactory.newInstance();
if (tfactory.getFeature(DOMSource.FEATURE) && tfactory.getFeature(StreamResult.FEATURE)) {
...
}
當處理 XML 物件時,Namespaces 存在某些問題。XML 中出現的 Qualified Names 標記為帶前綴的名稱。但前綴本身不保持標識。而由它們在上下文中所映射到的 URI 來保持標識。因此,當在 Java 程序中傳遞像 "xyz:foo" 這樣的 Qualified Name 時,必須提供將 "xyz" 映射到名稱空間的方式。
一種解決方案是創建一個保持名稱空間以及前綴和本地名稱的 "QName" 物件,但這不總是最佳解決方案,例如,當要將唯一字元串用作字典中的鍵時就是如此。沒有字元串表示形式還將導致難以在 XML 文檔的上下文之外指定名稱空間的標識。
為了將名稱空間的值傳遞給轉換,例如當設置 Transformer
上的屬性或參數時,此規範定義 String "qname" 物件參數作為兩部分字元串來傳遞,即用花括號({})括起來的名稱空間 URI,後跟本地名稱。如果 qname 有 null URI,則 String 物件只包含本地名稱。應用程序可以通過測試安全地檢查非 null URI,以查看名稱的首字元是否為 '{' 字元。
例如,如果 URI 和本地名稱是從通過 <xyz:foo xmlns:xyz="http://xyz.foo.com/yada/baz.html"/> 定義的元素獲取的,則 Qualified Name 將為 "{http://xyz.foo.com/yada/baz.html}foo"。注意不使用前綴。
結果階層樹到串流的序列化可以通過 Transformer.setOutputProperties(java.util.Properties)
和 Transformer.setOutputProperty(java.lang.String, java.lang.String)
方法來控制。這些屬性只應用於串流結果,當結果為 DOM 階層樹或 SAX 事件串流時,它們無效。
可以從 OutputKeys
類別參考比對 XSLT specification for xsl:output attributes 的字元串。也可以指定其他字元串。如果轉換器不識別輸出鍵,則拋出 IllegalArgumentException
,除非鍵名稱為 namespace qualified。雖然某些實作可能會忽略名稱空間限定的輸出鍵名稱,但它們總是允許的。
如果只需從源到結果的簡單標識轉換,則 TransformerFactory
提供一個不帶參數的 TransformerFactory.newTransformer()
方法。此方法創建一個將源有效複製到結果的 Transformer。此方法可用於從 SAX 事件創建 DOM,或從 DOM 或 SAX 事件創建 XML。
轉換 API 拋出三種型別的特殊異常。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個軟體套件 下一個軟體套件 | 框架 無框架 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。