重複の可能性:
XML に XSLT v. 2 を適用する
XML ファイルを含むディレクトリ構造があります。これらすべてのファイルに適用し、それぞれに新しい XML ファイルを生成する XSLT 1.0 があります。JAVAでコードを書いていました。しかし、私の問題は、入力 XML ファイルの取得元と同じ構造を持つ別の出力フォルダーに出力ファイルを配置できないことです。たとえば、Folder1 と Folder2 の 2 つのフォルダを持つルート ディレクトリ Home があるとします。各 Folder1 & Folder2 には、多数の XML ファイルがあります。したがって、これらのフォルダーにある XML ファイルを変換すると、生成された出力ファイルは同じ構造を持つ別のフォルダーに移動する必要があります。
Javaコードは次のとおりです。
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
public class XMLwithXSLT {
public static void main(String[] args) throws FileNotFoundException,
TransformerConfigurationException, TransformerException {
File dir = new File("Input Directory Root Path Here");
listFilesInDirectory(dir);
}
public static void listFilesInDirectory(File dir) throws FileNotFoundException,
TransformerException {
File[] files = dir.listFiles();
if (files != null) {
for (File f : files) {
if (f.isDirectory()) {
System.out.println(f.getName());
listFilesInDirectory(f);
} else {
System.out.println(f.getName());
OutputXml(f);
}
}
}
public static void OutputXml(File in) throws FileNotFoundException,
TransformerException{
TransformerFactory tFactory = TransformerFactory.newInstance();
Source xslDoc = new StreamSource("backup.xslt");
Source xmlDoc = new StreamSource(in.getPath()) ;
System.out.print(in.getName() + "/n");
String outputFileName = in.getName();
System.out.print(outputFileName );
OutputStream htmlFile;
htmlFile = new FileOutputStream(outputFileName);
Transformer transformer = tFactory.newTransformer(xslDoc);
transformer.transform(xmlDoc, new StreamResult(htmlFile));
}
}
生成された新しいファイルの出力パスを指定する方法として、誰かが私を助けることができますか? また、入力と同じディレクトリ形式で出力ファイルを生成するにはどうすればよいですか?