разбить файл XML по элементам - PullRequest
0 голосов
/ 02 февраля 2011

Это похожий вопрос с небольшими отличиями:

Разделить XML-файл на несколько файлов на основе порогового значения

Мой корневой элемент называется хранилищем, а элементы для разделения называются хранилищем. И я хочу сделать это из Java с XSL или без, вот мой Java-код, который я использовал для запуска XSL:

public void transform(String transformator, File source, String destination) {
    try {    
        TransformerFactory tFactory = TransformerFactory.newInstance();

        Transformer transformer = tFactory.newTransformer(new StreamSource(transformatorLocation));

        try {
            transformer.transform(new StreamSource(new InputStreamReader(new FileInputStream(source), "UTF-8")), new StreamResult(new OutputStreamWriter(new FileOutputStream(destination), "UTF-8")));
        } catch (TransformerException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            System.err.println("File is missing");
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    } catch (TransformerConfigurationException e) {
        e.printStackTrace();
    }
}

Я пробовал оба решения в этом вопросе, но оба они выдают ошибку, одно из них:

ОШИБКА: «Неподдерживаемый элемент XSL» http://www.w3.org/1999/XSL/Transform:for-each-group'' javax.xml.transform.TransformerException: java.lang.RuntimeException: неподдерживаемый элемент XSL 'http://www.w3.org/1999/XSL/Transform:for-each-group'

Другое - эта таблица стилей не может быть скомпилирована.

Чего я пытаюсь достичь? Передайте аргумент классу Java, сколько магазинов я хочу в одном файле, и разбейте его на n частей.

1 Ответ

4 голосов
/ 02 февраля 2011

Я считаю, что for-each-group - это конструкция XSLT 2.0. Процессоры XSLT по умолчанию в Java еще не поддерживают XSLT 2.0.

Вам либо нужно придерживаться XSLT 1.0, либо найти процессор XSLT с 2.0 и использовать его вместо этого (например, Saxon ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...