Ноу Інти, лекція, застосування мови перетворень xslt

Анотація: Розглядається генерація коду перетвореннями XSLT. Вивчається синтаксис XSLT, особливості застосування перетворень, а також виконання таких операцій, як фільтрація, сортування, вибірка за умовою в шаблонах. Виконання трансформації програмним шляхом в C #. Переваги та недоліки технології.

Мова перетворень XSLT

У другій лекції ми вже розглядали приклад з використанням XSLT. У цій лекції ми розглянемо цю технологію більш докладно. XSL (eXtensible Stylesheet Language) перекладається як Розширюваний Мова Сталий, і являє собою мову для створення стилів XML документів. XSLT (XSL Transformations) - це мова перетворень XSL і є його частиною. Стиль XSLT призначений для перетворення ієрархічної структури і формату документа XML. Результатами перетворення можуть стати XML - файл. текстовий файл. програмний код, HTML - файл. файл у форматі PDF. і так далі. Ця мова надає потужні можливості для маніпуляції даними, інформацією, текстом в ієрархічному вигляді.

А це як раз те, що потрібно для генерації коду. Застосування XSLT може істотно допомогти в генерації коду. Крім того, він надає зручну альтернативу технології шаблонів Т4.

Як працює XSLT

Модель XSLT включає в себе такі частини як:

Документи XML є вхідними даними, які потрібно перетворити в інші документи. Документ стилю XSLT є коректним (well formed) документом XML і містить набір правил для конвертування валюти. Іншими словами, документ стилю є шаблоном.

Процесор XSLT є додатком, яке приймає в якості вхідних даних документи XML і стилі XSLT. Він виконує трансформацію, тобто застосування набору правил в стилях XSLT до документів XML. Результатом цієї роботи є вихідні документи.

Процесори XSLT мають безліч реалізацій і вбудовані в багато браузери на кшталт Internet Explorer, Firefox, Mozilla, Opera та інші. В Internet Explorer використовується інструмент MSXML, розроблений Microsoft. XSLT - процесор вбудований в Internet Explorer, починаючи з версії 4.5. Згенерований результат прикладів даної лекції можна переглядати шляхом відкриття XML-файлів в одному з браузерів. В кінці лекції ми розглянемо можливості запуску трансформації програмним шляхом, використовуючи відповідні класи мови програмування.

Іншою частиною технології XSL є мова XPath. призначений для доступу до вузлів документа XML шляхом завдання шляхів і виразів. Мова Xpath використовується в файлах стилів для навігації усередині XML -документів, визначення частин вихідного XML-документа, які збігаються з одним або більше заздалегідь заданими шаблонами. При знаходженні збіги процесор XSLT застосує до нього відповідні правила з файлу стилю і перетворює його в частину результуючого документа. У файлах стилів XSLT вираження XPath використовуються досить інтенсивно.

застосування XSLT

Мова XSLT складається з безлічі інструкцій, записаних у вигляді тегів. Ім'я кожної інструкції зазвичай починається з символів xsl. Для виконання трансформації документ стилю XSLT повинен бути коректним документом XML.

Для перетворення документа XML необхідно додати в початок документа інструкцію, подібну до наступного:

XSL - файл стилів зазвичай містить безліч елементів, найголовнішим з яких є елемент xsl: stylesheet. Саме він вказує, що даний XML - файл є файлом стилів. Крім нього можуть міститися інші елементи, наприклад xsl: template. xsl: value-of. Документ XML і файл стилю передається в XSLT - процесор. який обробляє дані файли, виконує перетворення і виводить результат трансформації.

Нижче представлений документ XML. що містить список мов програмування.

Приклад 5.1. файл languages.xml

Необхідно вивести цей список в форматі HTML. Для цієї мети використовуємо інструкцію xsl: for-each. яка буде застосовувати частину шаблону до секцій документа, найменування яких зазначено в атрибуті select. У нашому випадку зазначимо select = "languages ​​/ language".

Файл стилів буде застосовуватися наступний:

Приклад 5.2. файл languages.xsl

Шаблон всередині xsl: for-each виводить вміст кожного елемента language з languages. Для цієї мети використовується інструкція xsl: value-of і задається атрибут select = ".". Це означає, що процесор повинен вибирати текст вмісту поточного елемента в документі. Крім відображення вмісту можна задавати імена конкретних тегів, а також атрибутів для вибірки значень, що зберігаються в них. Приклади будуть розглянуті далі.

Відкриємо XML файл через Internet Explorer або інший браузер. Буде виведений такий текст:

Мої улюблені мови:

Одним з найголовніших елементів в стилі є xsl: template. Служить для визначення повторно використовуваного шаблону і містить правила, за якими буде перетворений документ XML. В атрибуті match міститься вираз для відбору вузлів, до яких буде застосовано шаблон. Також може бути присутнім атрибут name. В цьому випадку є можливість викликати шаблон по імені інструкцією xsl: apply-templates.

Для повторення виведення шаблону для кожного елемента документа застосовується інструкція xsl: for-each. Шаблон виконується для кожного елемента, відповідного умові, вказаною в атрибуті select.

Інструкція xsl: value-of служить для обчислення виразу, записаного в атрибуті select з подальшим виведенням результату в тому місці, де розташований сам елемент.

фільтрація

Ми розглянули випадок, коли зчитуються значення кожного вузла. Однак часто виникає необхідність вибирати тільки частина даних, тобто їх треба фільтрувати. Шаблони XSLT підтримують два способи фільтрації.

Один з них - це застосування атрибута select інструкції xsl: for-each. а другий - застосування атрибута match елемента xsl: template. Застосування match ми розглянемо пізніше, а зараз розглянемо select.

Змінимо трохи файл з даними: додамо атрибут high. позначає, чи є мова з нашого списку мовою високого рівня. Також розширимо сам список мов.

Приклад 5.3. файл languages4.xml

Зауважимо, що значення false для атрибута high варто тільки для значення "Assembler". Змінимо трохи файл таблиці стилів: