この質問からほとんど続きます: XSLT: CSV (またはフラット ファイル、またはプレーン テキスト) から XML へ
だから、私はここから XSLT を持っています: http://andrewjwelch.com/code/xslt/csv/csv-to-xml_v2.html
そして、CSV ファイルを XML ドキュメントに変換します。コマンド ラインで次のコマンドを使用すると、これが行われます。
java -jar saxon9he.jar -xsl:csv-to-xml.csv -it:main -o:output.xml
ここで問題は、Java コードでこれを行うにはどうすればよいかということです。
現在、次のようなコードがあります。
TransformerFactory transformerFactory = TransformerFactory.newInstance();
StreamSource xsltSource = new StreamSource(new File("location/of/csv-to-xml.xsl"));
Transformer transformer = transformerFactory.newTransformer(xsltSource);
StringWriter stringWriter = new StringWriter();
transformer.transform(documentSource, new StreamResult(stringWriter));
String transformedDocument = stringWriter.toString().trim();
(Transformer
は のインスタンスですnet.sf.saxon.Controller
。)
コマンド ラインの秘訣は、"-it:main" を指定して、XSLT 内の名前付きテンプレートを直接指すようにすることです。これは、ソース ファイルに「-s」フラグを付ける必要がないことを意味します。
問題は Java 側で再び発生します。この「-it:main」はどこでどのように指定しますか? そうすることで、その指定を必要としない他の XSLT が壊れてしまうのではないでしょうか? すべての XSLT ファイルのすべてのテンプレートに「main」という名前を付ける必要がありますか? Transformer.transform() のメソッド シグネチャを考えると、ソース ファイルを指定する必要があります。
編集: saxon9he.jar 内に s9api が隠されているのを見つけました。