В основном продолжается с этого вопроса: XSLT: CSV (or Flat File, or Plain Text) to XMLSaxon в Java: XSLT для CSV в XML
Итак, у меня есть XSLT здесь: http://andrewjwelch.com/code/xslt/csv/csv-to-xml_v2.html
И преобразует CSV файл в документ XML. Он делает это при использовании с помощью следующей команды в командной строке:
Java -jar saxon9he.jar -xsl: CSV-к-xml.csv -it: главный -o: output.xml
Так что теперь вопрос будет: Как это сделать Я делаю это в своем Java-коде?
Сейчас у меня есть код, который выглядит следующим образом: (. Transformer
является экземпляром net.sf.saxon.Controller
)
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();
Хитрость в командной строке указать «-it: Главная », чтобы указать прямо на названный шаблон в XSLT. Это означает, что вам не нужно указывать исходный файл с флагом «-s».
Проблема начинается снова на стороне Java. Где/как я могу указать это «-it: main»? Разве это не нарушит другие XSLT, которые не нуждаются в этом? Должен ли я указывать каждый шаблон в каждом XSLT-файле «main»? Учитывая подпись метода Transformer.transform(), у I есть, чтобы указать исходный файл, так что разве это не победит весь прогресс, который я совершил в этом?
Редактировать: Я нашел s9api, скрытый внутри saxon9he.jar, если кто-то его ищет.