XSLT

Язык описания шаблона трансформации одного XML-документа в другой.

 

Спецификация трансформации сохраняется в файле .xsl формата.

 

Чтобы отработала трансформация XML через описанный XSLT-шаблон иногда достаточно открыть входящий XML-файл в интернет-браузере, в котором в шапке указан путь к xsl-файлу. Интернет-браузер откроет преобразованный XML.

 

Но это не всегда работает и в целом удобнее всего всё делать через IntelliJ IDEA:
работать с XML-документами, разрабатывать, отлаживать и запускать XSLT-шаблоны,
выводить на один экран в вертикальном разделении сразу 3 файла: входящий XML, XSLT-шаблон, исходящий XML:

 

 

 

Ниже приведён пример -- некое упражнение, которое можно сделать своими руками, для знакомства с XSLT.

 

1. Организуем папку "XSLT Test" для проекта преобразования файлов.
В папке будут размещены файлы:
input.xml -- входящий файл
output.xml-- исходящий файл
transform.xsl -- файл со спецификацией преобразования input.xml в output.xml

 

2. Откроем проект -- папку "XSLT Test" -- в IDEA.

 

3. Через IDEA создадим новый файл input.xml в папке проекта:

 

 

 

4. Раздобудем какой-нибудь XML -- будет примером входящего файла.
Например, это будет XML одного из сервисов Центробанка -- DVXML:
(см. Знакомство с веб-сервисом)

 

 

 

5. Вставим этот XML в файл input.xml:
 

 

 

6. Создим новый "XSLT Stylesheet" в папке проекта:

 

 

 

7. Сохраним новый XSLT Stylesheet как transform:

 

 

8. Добавим RUN configuration для проекта:

 

 

 

9. Проверим не выключены ли xsl plugins.
File --> Settings --> Plugins --> поиск по xsl:

 

 

 

10. Включим XSL Plugins:
(если были выключены)

 


 
 

11. Откроем настройки RUN Сonfiguration:

 

 

 

12. Выставим настройки RUN Сonfiguration для проекта "XSLT Test":

 

 

 

13. Перейдём к настройке XSLT-шаблона.
 Настроим первую спецификацию на тест "Hello World":

 

 

 

14. Отобразим результат теста "Hello World" с помощью кнопки Run:
 (элемент и его значение должны появиться в output.xml)

 

 

 

15.  Переходим на входящий файл и смотрим чего бы из него взять в исходящий:

      (например, думаем взять вложенный элемент <Date> из <DV> элемента)

 

 

 

16. Возвращаемся к настройке XSLT-шаблона.
 Убираем тест "Hello World" и вместо него настраиваем for-each:

 

 

 

17. В этот for-each, для каждого элемента "DV", указываем создать элемент "test":
 (для предварительного тестирования for-each)

 

 

 

18. Run и просмотр результата создания элемента "test" для каждого DV:
 (предварительное тестирования for-each)

 

 

 

19. Переходим снова на входящий файл, смотрим чего бы из него ещё взять в исходящий, вместо тестового "test":

     (например, думаем взять элемент VIDay из DV)

 

 

 

20. Продолжаем настройку XSLT-шаблона и выражения for-each -- указываем для каждого элемента DV создать элемент "date",
 (вместо "test") со значением элемента VIDay:

 

 

 

21. Run и просмотр результата создания элемента "VIDay" для каждого DV:

 

 

 

22. Отформатировать код:

 

 

 

23. Результат форматирования кода:

 

 

24. IDEA указывает на ошибку в результирующем XML:

 

 

 

25. Исправляем ошибку -- добавляем в xml XSLT-шаблона корневой элемент "document":

 

 

 

26. Run и просмотр исправленного результата:

 

 

 

27. Для дальнейшей удобнейшей разработки XSLT:
 Разделить окно редактирования файлов по вертикали -- шаг 1 -- Split Veritically для output.xml:

 

 

 

28. Разделить окно редактирования файлов по вертикали -- шаг 2 -- Split Veritically для transform.xsl:

 

 

 

29. Окна редактирования файлов разделены по вертикали:

 

 

 



© 2020 | Анна Петросян | pashelp@yandex.ru