При применении таблицы стилей XSL с Java выходные данные отображаются с ошибками

Просто наперед, я довольно новичок в Java, XML и XSL, так что терпите меня.:)

Я работаю над унифицированным заданием, которое попросило меня объединить два XML-файла с использованием Java.

Хотя что-то вроде этого было бы гораздо проще при использовании исключительно XSL, моей задачей было использовать Java для объединения указанных файлов и сортировки частей XML-документа в порядке атрибутов даты.

Так; У меня совмещение работает правильно, но я пытаюсь отформатировать вывод и отсортировать рассматриваемые части.

В моем Java-коде мне пришлось удалить некоторые элементы из конечного (комбинированного) выходного XML-файла; и я использовал x.getParentNode().removeChild(x), чтобы сделать это.

Это оставляет меня везде с пустыми текстовыми узлами, поэтому у меня есть следующий XSL для переформатирования на заключительном этапе:

<!-- Code removed due to possible plagiarism -->

Теперь это странная часть. Если я применяю этот XSL к выходному документу, который генерирует мой Java-код вручную, он работает как положено и дает мне идеальный результат.

Однако, если я пытаюсь применить XSL с Java, он удаляет пробелы, но не дает правильного отступа для выходного документа. Код ниже показывает, что я имею в виду (выходной файл XML был сокращен для ясности):

Правильный вывод при применении вручную:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE authors
  SYSTEM "output.dtd">
<authors>
   <author>
      <name>AMADEO, Giovanni Antonio</name>
      <born-died>b. ca. 1447, Pavia, d. 1522, Milano</born-died>
      <nationality>Italian</nationality>
      <biography>Giovanni Antonio was....</biography>
      <artworks form="architecture">
         <artwork date="1473">
            <title>Façade of the church</title>
            <technique>Marble</technique>
            <location>Certosa, Pavia</location>
         </artwork>
      </artworks>
   </author>
</authors>

Вывод при применении с Java (с использованием класса Transformer):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE authors SYSTEM "output.dtd">
<authors>
<author>
<name>AMADEO, Giovanni Antonio</name>
<born-died>b. ca. 1447, Pavia, d. 1522, Milano</born-died>
<nationality>Italian</nationality>
<biography>Giovanni Antonio Amadeo was an Italian early Renaissance sculptor, architect, and engineer. In 1466 he was engaged as a sculptor, with his brother Protasio, at the famous Certosa, near Pavia. He was a follower of the style of Bramantino of Milan, and he represents, like him, the Lombard direction of the Renaissance. He practised cutting deeply into marble, arranging draperies in cartaceous folds, and treating surfaces flatly even when he sculptured figures in high relief. Excepting in these technical points he differed from his associates completely, and so far surpassed them that he may be ranked with the great Tuscan artists of his time, which can be said of hardly any other North-Italian sculptor.</biography>
<artworks form="architecture">
<artwork date="1473">
<title>Façade of the church</title>
<technique>Marble</technique>
<location>Certosa, Pavia</location>
</artwork>
</artworks>
</author>

Заметьте, как нет абсолютно никаких отступов?

Вот мой код Java, который сохраняет выходные данные и применяет XSL:

// Code removed due to possible plagiarism.

Замечания:

  • srcDoc1 - это XML-документ, который я объединил (программа в основном вытащила материал из srcDoc2 и поместила его в srcDoc1).

Последние пару дней я бился головой о клавиатуру, и мне действительно нужен совет, почему так себя ведет.

Заранее спасибо!

1 ответ

Решение

В ветке комментариев мы определили, что вы загружаете Saxon в свой проект Eclipse, а Xalan - в свое автономное Java-приложение.

Другие вопросы по тегам