0

複数の出力ファイルで XSLT 変換を実行したいと考えています。そこで、「xsl:result-document」を使用しました。変換が失敗した場合、すべての出力ファイルを削除する必要があります。しかし、「xsl:result-document」によって作成されたドキュメントの生成が失敗した場合、私のプログラムはこのドキュメントを削除できなくなりました。その理由は、「xsl:result-document」が別の OutputStream を作成するためだと思います。すべての出力ストリームを閉じる方法を知っている人はいますか?

編集: Saxon 9.5 を使用して変換を行います。

ソースコードについては、以下を参照してください。

public void simpleTransform(String sourcePath, String xsltPath, String outputPath)
{  
String resultDir=outputPath+"/filename.html";
TransformerFactory tFactory = TransformerFactory.newInstance(); 
StreamSource ss = new StreamSource(new File(xsltPath));
StreamResult sr = new StreamResult(new File(resultDir));
Transformer transformer = tFactory.newTransformer(ss); 
try
{
    transformer.transform(new StreamSource(new File(sourcePath)), sr);  
    System.out.println("Transformation finished!"); 
}
catch (TransformerException te)
{
    try
    {
        System.out.println("Transformation failed! Trying to close Outputstreams...");
        sr.getOutputStream().flush();
        sr.getOutputStream().close();
        transformer.reset();
        System.out.println("Outputstream closed!");
        try
        {
            FileUtils.deleteDirectory(new File(tempDirPath));
            System.out.println("Files succesfully deleted!");
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
}
}
4

1 に答える 1