Как применить преобразования XSL в командной строке с помощью Java 8?

Я успешно применил преобразование XSL в командной строке, используя то , что описано здесь, но пример, кажется, работает только на Java 6 или старше. Я продолжаю видеть примеры, говорящие, что я должен использовать com.sun.org.apache.xalan.internal.xslt.Processкак cli, но когда я пытаюсь, что я только получаю: Error: Main method not found in class com.sun.org.apache.xalan.internal.xslt.Process

Есть ли способ применить преобразования XSL в командной строке в Java 8, или они просто удалили это?

Я работаю в среде airgapped, поэтому любые решения, которые включают загрузку чего-либо, не будут работать. У меня есть доступ только к JDKs и JREs.

1 ответ

  1. Это другой подход к тому, о котором вы говорили. Если вы не вынуждены по какой-то причине предварительно компилировать XSLT в класс Java, вы можете использовать это также. Преимущество этого подхода заключается в том, что ваш код является агностическим для различных реализаций JAXP XSLT.

    Попробуйте следующее для кода java, где вы загружаете XSLT и применяете его к XML-файлу

    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    Transformer transformer = transformerFactory.newTransformer(xsltAsDomSource);
    transformer.transform(inputXmlSource, outputXmlResult);
    

    Запустите его как jar или как класс от CLI как обычно. JDK8 будет использовать предварительно упакованный процессор XSLT по умолчанию, если вы просто скажете:

    java -jar yourJarName.jar
    

    Однако если вы хотите больше контроля с использованием определенного процессора XSLT, вы можете использовать «javax.XML.преобразиться.TransformerFactory » параметр для указания выбранного класса реализации. Прочитайте JDK8 TransformerFactory API Doc, чтобы лучше понять.