いろいろ資料を眺めてみる。すると、JDK 1.4 以上には既にXalanはライブラリに組み込まれているという。なんてこったい!
すると、あのサンプルはJDKライブラリで実行したものなのか、ダウンロードしたXalanで実行したものなのか?
http://www.utj.co.jp/xml/dev/java/dxjava_2.html
http://tsumatec.blogspot.com/2005/10/xalan.html
http://www.nextindex.net/java/XML/Xalan.html
---------------------------
いろいろ調べてみた。
サンプルの build.xml にXSLTプロセッサへのクラスパス定義があり、そこにダウンロードしたXalanへのパスを書いていた。
(1) build.xml のクラスパスを削除して実行
(2) 環境変数classpath からXalanへのパスを削除
(3) (1)(2) 両方を行う
の三パターンでサンプルを実行してみた。
結果、(1)(2)では正常に動作した(っぽい)が、(3) ではエラーが吐き出された。
D:\DocBook\sample1>ant
Buildfile: build.xml
xslt:
[xmlvalidate] 1 file(s) have been successfully validated.
[xslt] Transforming into D:\DocBook\sample1
[xslt] Processing D:\DocBook\sample1\artsample.xml to D:\DocBook\sample1\artsample.html
[xslt] Loading stylesheet D:\DocBook\sample1\sample.xsl
[xslt] : Warning! file:/D:/DocBook/docbook-xsl-1.74.3/html/autoidx.xsl: line 476: 属性 'href' がエレメントの外側です。
[xslt] : Warning! file:/D:/DocBook/docbook-xsl-1.74.3/html/autoidx.xsl: line 514: 属性 'href' がエレメントの外側です。
[xslt] : Warning! file:/D:/DocBook/docbook-xsl-1.74.3/html/autoidx.xsl: line 537: 属性 'href' がエレメントの外側です。
:
:
:
(略)
てな具合で、DocBookスタイルシートに対してエラーを吐いているようだ。
ついでに
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
public class test {
public static void main(String[] args) {
try {
TransformerFactory trfactory = TransformerFactory.newInstance();
Transformer t = trfactory.newTransformer( new StreamSource(args[0]) );
String s = t.toString();
System.out.printf( s );
} catch(Exception e) {
e.printStackTrace();
}
}
}
こんなプログラムをclasspath環境変数でxalanを指定してある状態、ない状態で実行したところ、ある方は
D:\DocBook\test>java test sample.xsl
org.apache.xalan.transformer.TransformerImpl@16fd0b7
ない方は
D:\DocBook\test>java test sample.xsl
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl@503429
と吐き出した。
つまり
(1) SDK(うちのは1.6.0_13)にXalanは含まれる?
(2) 但し、必ずしも最新というわけでもない
(3) classpath指定があればそちらを優先する。
上記参考サイトによるとclasspath指定よりデフォルトライブラリ優先とあったのだが・・・仕様が変わったのだろうか?
付記
xalan のバージョン確認は
java org.apache.xalan.Version
でも良い(こちらの方が新しいやりかた?)
付記2
SDK1.5以上には Xalanは含まれない、という記述も見かけた。
0 件のコメント:
コメントを投稿