以下の内容はhttps://waman.hatenablog.com/entry/20090414/1239658302より取得しました。


FEATURE フィールド

標準 API に定義されている Source, Result インターフェースの実装には、public static final な String フィールド「FEATURE」が定義されています。 これは TransformerFactory#getFeature() メソッドによって、各タイプの Source, Result をサポートしているかどうかを確認するのに使います。

使い方


デフォルトの TransformerFactory の実装が SAXSource をサポートしているかどうかを確認するためには、以下のようにします:

TransformerFactory factory = TransformerFactory.newInstance();
System.out.println(factory.getFeature(SAXSource.FEATURE));

SAXSource がサポートされているなら「true」が、サポートされていないなら「false」が標準出力に表示されます。

Sun の JDK


Sun MicrosystemsJDK (1.6.0_01) にデフォルトで組み込まれている TransformerFactory の実装について、各タイプの Source, Result がサポートされているかどうか調べてみました。 実装クラスは

com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl

Xalan かそれを修正したような実装のようですね。

TransformerFactory#getFeature() の実行結果は下表の通り:

Source サポート Result サポート
Stream StreamSource true StreamResult true
SAX SAXSource true SAXResult true
StAX StAXSource false StAXResult false
DOM DOMSource true DOMResult true
JAXB JAXBSource true JAXBResult true

StAX ってサポートされてないことになってるんですけど。 ソースコードを細かく追いかけたわけではありませんが、内部的には StAX イベントから SAX イベント (?) に変換しているようです。

JDOM, dom4j


JDOMSource, DocumentSource は SAXSource を、JDOMResult, DocumentResult は SAXResult をそれぞれ拡張しているので、これらの FEATURE フィールドは SAXSource.FEATURE, SAXResult.FEATURE と同じです。

これらのフィールドの他に、JDOM や dom4jnative にサポートしているかどうかを確認するための public static final な String フィールドも定義されています:

  • JDOMSource.JDOM_FEATURE
  • JDOMResult.JDOM_FEATURE
  • DocumentSource.DOM4J_FEATURE

DocumentResult にはこの手のフィールドは定義されていません。




以上の内容はhttps://waman.hatenablog.com/entry/20090414/1239658302より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14