我正在使用JAXP XSLT API(javax.xml.transform)來轉換xml文件。什麼是默認的TransformerFactory?
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer(xslSource);
transformer.transform(inputSource, outputResult);
的TransformerFactory中的Javadoc說: 它使用以下查找過程順序來確定的TransformerFactory實現類加載:
- 使用javax.xml.transform.TransformerFactory的系統屬性。
- 在JRE目錄中使用屬性文件「lib/jaxp.properties」。 配置文件採用標準java.util.Properties格式, 包含實現類的完全限定名稱,其中 的關鍵是上面定義的系統屬性。 JAXP.properties 文件僅由JAXP實現讀取一次,然後將其值 緩存以供將來使用。如果 第一次嘗試讀取文件時該文件不存在,則不會再嘗試 以檢查其存在。在第一次讀取 之後,無法更改jaxp.properties中任何屬性的值 。
- 使用Services API(詳見JAR 規範)(如果可用)確定類名。服務API將在運行時可用的罐子 中的文件 META-INF/services/javax.xml.transform.TransformerFactory中尋找類名。
- 平臺默認TransformerFactory實例。
我不知道如何決定哪個是默認的TransformerFactory實例?
謝謝。如何檢查Oracle JDK附帶的默認xslt處理器支持哪些XSLT版本(1.0,2.0,3.0),例如Oracle JDK 1.6? – user3014901 2015-04-05 17:51:29
所有當前版本Oracle JDK中的默認XSLT處理器僅支持XSLT 1.0。但是如果你想檢查這個,你可以寫一個測試,例如'test =「system-property('xsl:version')= 1.0」' – 2015-04-05 22:45:24