Саксонский в Java: XSLT для CSV в XML
В основном продолжение этого вопроса: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
Итак, теперь возникает вопрос:How do I do I do this in my Java code?
Прямо сейчас у меня есть код, который выглядит так:
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();
(TheTransformer
является примеромnet.sf.saxon.Controller
.)
Хитрость в командной строке состоит в том, чтобы указать & quot; -it: main & quot; чтобы указать прямо на названный шаблон в XSLT. Это означает, что вам не нужно указывать исходный файл с ключом -s. флаг.
Проблема начинается снова на стороне Java. Где / как я могу указать этот & quot; -it: main & quot ;? Не нарушит ли это другие XSLT, которые не нуждаются в указанном? Должен ли я называть каждый шаблон в каждом XSLT-файле «основным»? Учитывая метод подписи Transformer.transform (), яhave чтобы указать исходный файл, чтобы он не опровергал весь прогресс, который я сделал в выяснении этой вещи?
Edit: Я нашел s9api, спрятанный в saxon9he.jar, если кто-то ищет его.