xslt tutorial xslt transformations elements with examples
Цей посібник пояснює, що таке XSLT, його перетворення, елементи та використання на прикладі. Також висвітлюється важливість XPath для розробки коду перетворення XSLT:
Термін 'XSLT' породжується поєднанням двох слів, тобто 'XSL' і 'T', 'XSL' - це коротка форма 'Розширювана мова таблиць стилів', а 'T' - коротка форма 'Трансформація'.
Отже, в основному XSLT - це мова трансформації, яка використовується для перетворення / перетворення вихідних XML-документів у XML-документи або в інші формати, такі як HTML, PDF за допомогою XSL-FO (Форматування об’єктів) тощо.
Що ви дізнаєтесь:
Вступ до XSLT
Трансформація відбувається за допомогою процесора XSLT (наприклад, Saxon, Xalan). Цей процесор XSLT бере як джерело один або більше XML-документів із одним файлом XSLT, який містить записаний в ньому код XSLT, а результати / результати виведення генеруються пізніше, як показано на діаграмі нижче.
Процесор XSLT аналізує вихідні XML-документи за допомогою X-Path для навігації між різними вихідними елементами, починаючи від кореневого елемента і закінчуючи документами.
Рекомендована література => Все, що вам потрібно знати Х-Шлях
Перетворення XSLT
Для початку перетворення нам потрібен один XML-документ, на якому буде працювати код XSLT, сам файл коду XSLT та інструмент або програмне забезпечення, що мають процесор XSLT (Ви можете використовувати будь-яку безкоштовну версію або пробну версію програмного забезпечення для навчальних цілей).
# 1) XML-код
Нижче наведено вихідний XML-код, на якому буде працювати код XSLT.
Ім'я файлу: Books.xml
XSLT Programmer's Reference Michael Kay Wrox 4th Head First Java Kathy Sierra O'reilly 1st SQL The Complete Reference James R. Groff McGraw-Hill 3rd
# 2) Код XSLT
Нижче наведено код XSLT, на основі якого буде працювати наведений вище документ XML.
Ім'я файлу: Books.xsl
Books:-
Book ID Book Name Author Name Publisher Price Edition
# 3) Код результату / результату
Наведений нижче код буде створений після використання коду XSLT у вищезазначеному документі XML.
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th 3741122298 Head First Java Kathy Sierra O'reilly 1st 9987436700 SQL The Complete Reference James R. Groff McGraw-Hill 3rd
# 4) Перегляд результатів / результатів у веб-браузері
Книги:
Ідентифікатор книги | Назва книги | Ім'я автора | Видавництво | Ціна | Видання |
---|---|---|---|---|---|
5350192956 | Довідник програміста XSLT | Майкл Кей | Wrox | 40 доларів | 4-й |
3741122298 | Очоліть перший Java | Кеті Сьєрра | Орейлі | 19 доларів | 1-й |
9987436700 | SQL Повне посилання | Джеймс Р. Грофф | Макгроу-Хілл | 45 доларів | 3-й |
Елементи XSLT
Щоб зрозуміти наведений вище код XSLT і він працює, спочатку потрібно зрозуміти різні елементи XSLT та їх атрибути.
# 1) АБО
Кожен код XSLT повинен починатися з кореневого елемента eitheror
Атрибути:
- @xmlns: xsl: З'єднує документ XSLT зі стандартом XSLT.
- @version: Визначає версію коду XSLT для синтаксичного аналізатора.
# два)
Ця декларація визначає набір правил, що застосовуються для обробки або перетворення обраного вхідного елемента вихідного документа до визначених правил цільового елемента вихідних документів.
В основному доступні два типи шаблонів за їх атрибутами:
(i) Названий шаблон: Коли елемент xsl: template містить атрибут @name, це називається Named Template.
Іменовані шаблони викликаються елементом xsl: call-template.
(ii) Шаблон збігу: Елемент xsl: template містить атрибут @match, який містить відповідний шаблон або XPath, застосований до вхідних вузлів.
Шаблони відповідності викликаються елементом xsl: apply-template.
xsl: елемент шаблону повинен мати або атрибут @ match, або атрибут @name, або обидва. Елемент xsl: шаблон, який не має атрибута збігу, не повинен мати атрибута режиму та атрибута пріоритету.
Давайте перепишемо вищезазначений XSLT (
до) Код XSLT на основі шаблону збігу з. Див. Нижче жовтий та сірий кольори, виділений змінений код, він дасть той самий вище результат.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Зверніть увагу на знімок екрана для виділеної області:
б) Код XSLT на основі іменованого шаблону з. Див. Нижче жовтий та сірий кольори, виділений змінений код, він дасть той самий вище результат.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Зверніть увагу на знімок екрана для виділеної області:
# 3)
Процесор знайде і застосує всі шаблони, які мають XPath, визначений в атрибуті @select.
Атрибут @mode також використовується, якщо ми хочемо надати більше одного способу виводу з однаковим вхідним вмістом.
# 4)
Процесор здійснить виклик шаблонів, що мають значення всередині атрибута @name (обов’язково).
елемент використовується для передачі параметрів шаблону.
питання інтерв’ю з jira для майстра скраму
# 5)
Надайте значення рядка / тексту щодо виразу XPath, визначеного в атрибуті @select, як визначено у наведеному вище коді.
Це дасть значення назві книги.
№6): Повторення
Це обробить інструкції для кожного набору вузлів (xpath, визначений в @select (обов'язковий) атрибут) у відсортованій послідовності.
Вищезазначений код означає для кожного набору вузлів магазину / книги означає:
/ магазин / книга (1)
/ магазин / книга (2)
/ магазин / книга (3)
також може використовуватися як дочірній елемент xsl: for-each для визначення порядку сортування.
№7): Умовна обробка
Xsl: if інструкції оброблятимуться лише в тому випадку, якщо логічне значення атрибута @test буде істинним, інакше інструкція не обчислюється і повертається порожня послідовність.
2'> Condition True: Count of books are more than two.
Результат: Умова вірна: Кількість книг - більше двох.
Тут count () - це заздалегідь визначена функція.
№8): Обробка альтернативних умов
xsl: вибір має кілька випадків для різних умов, які перевіряються всередині атрибута @test атрибута xsl: when, умова тесту, яка спочатку виконується серед усіх xsl: when, яка буде оброблена першою, і є додаткові xls: інакше елемент, так що якщо жоден з тестів умов не здійсниться, тоді буде розглянуто цей xsl: інакше.
Condition True: Count of book is one. Condition True: Count of book is two. Condition True: Count of book is three. No condition match.
Результат: Умова вірна: Кількість книг три.
# 9)
xsl: copy працює на контекстному елементі, тобто якщо це вузол, то він скопіює контекстний вузол у щойно створений вузол, і це не буде копіювати дочірні елементи вузла контексту. З цієї причини це називається неглибокою копією. На відміну від елемента xsl: copy-of, елемент xsl: copy не має атрибута @ select.
У наведеному нижче коді елементи контексту копіюються до виводу, а всі дочірні елементи викликаються та копіюються xsl: apply-template рекурсивно.
node () | @ * Стоїть для всіх вузлів та всіх їх атрибутів рекурсивно.
Результат: Це копіює всі вузли та атрибути вихідного документа рекурсивно у вихідний документ, тобто створюється точна копія вихідного документа.
# 10)
xsl: copy-of скопіює послідовність вузлів з усіма його дочірніми елементами та атрибутами за замовчуванням рекурсивно, через це це також називається глибоким копіюванням. Атрибут @select необхідний для оцінки XPath.
Результат: Це копіює всі вузли та атрибути вихідного документа рекурсивно у вихідний документ, тобто створюється точна копія вихідного документа.
Застосовує копію поточного вузла та поточного атрибута.
# одинадцять)
Цей елемент використовується для написання коментаря до цільового результату; будь-який текстовий вміст, що стоїть поруч із цим тегом, буде надрукований як вихідний коментар.
Це буде надруковано для виведення як вузол коментарів.
Результат:
# 12)
Це генерує текстовий вузол до результату, значення всередині xsl: text буде надруковано як рядок для виведення.
Це
рядок тексту.
Вихід:
Це
рядок тексту.
# 13)
Це генерує елемент до результату документа з іменем, згаданим в його атрибуті @name. Атрибут name - це обов’язковий атрибут.
Результат: 5350192956
# 14)
Це генерує атрибут для його батьківського елемента в документі результату. Ім'я атрибута визначається атрибутом name, а значення атрибута обчислюється XPath, згаданим в атрибуті select, як вказано в коді нижче. Атрибут name - це обов’язковий атрибут.
Результат:
# п'ятнадцять)
Цей елемент буде сортувати вибраний вузол послідовно відповідно до зростання або спадання. Вузол або XPath задається через атрибут @select, а напрямок сортування визначається атрибутом @order.
У наведеному нижче коді ми отримаємо всі списки книг відповідно до назви книги в алфавітному порядку.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Перегляньте цей знімок екрана для виділеної області:
Результат: Наведений нижче список містить назви книг в алфавітному порядку, тобто за зростанням.
Книги:
Ідентифікатор книги | Назва книги | Ім'я автора | Видавництво | Ціна | Видання |
---|---|---|---|---|---|
3741122298 | Очоліть перший Java | Кеті Сьєрра | Орейлі | 19 доларів | 1-й |
9987436700 | SQL Повне посилання | Джеймс Р. Грофф | Макгроу-Хілл | 45 доларів | 3-й |
5350192956 | Довідник програміста XSLT | Майкл Кей | Wrox | 40 доларів | 4-й |
# 16)
Цей елемент оголошує змінну, яка містить значення. Змінна може бути глобальною змінною або локальною змінною. Ім'я змінної визначається атрибутом @name, а значення, яке буде містити ця змінна, визначається атрибутом @select.
Доступ до глобальної змінної є загальним, тобто змінні можна викликати в будь-якому елементі і залишатися доступними в таблиці стилів.
Щоб визначити глобальну змінну, нам просто потрібно оголосити, що поруч із кореневим елементом таблиці стилів, як показано в коді нижче, виділеним жовтим кольором, змінна ‘SecondBook’ є глобальною змінною, і вона має назву другої книги.
Як ініціалізувати масив об'єктів в Java
Доступ локальної змінної є локальним до елемента, в якому вона визначена, тобто та змінна не буде доступною за межами елемента, в якому вона визначена, як показано в нижченаведеному коді, який виділений сірим кольором, змінна 'перша книга' є локальна змінна, і вона містить назву першої книги.
Для здійснення виклику глобальної змінної до локальної змінної перед іменем змінної використовується символ долара ($), як показано нижче жовтим кольором $ .
First Book Name: Second Book Name:
Зверніть увагу на знімок екрана для виділеної області:
Результат:
Назва першої книги: Довідник програміста XSLT
Назва другої книги: Head First Java
# 17)
Цей елемент використовується для декларування ключів для відповідності значень шаблонів цьому конкретному ключу.
Name - це постачальник цього ключа за допомогою атрибута @name (“ get-publisher “), Який згодом використовується всередині функції key (). Атрибут @match надається для індексації вхідного вузла виразами XPath (“ книга “), Як у жовтому виділеному @match, використовується для індексування всіх книг, доступних у магазині.
Щодо атрибута @match використовується атрибут @use, він оголошує вузол, щоб отримати значення для цього ключа через вираз XPath (“видавець”).
Тепер, припустимо, якщо нам потрібні деталі книги, яку видає лише видавець «Wrox», ми можемо легко отримати це значення за допомогою елемента xsl: key, створивши пару ключ-значення.
ключ ('get-publisher', 'Wrox') Key () приймає два параметри, перший - це ім'я ключа, яке в даному випадку є «get-publisher», друге - значення рядка, яке потрібно здійснити для пошуку, а в нашому випадку це «Wrox».
Books:-
Book ID Book Name Author Name Publisher Price Edition
Зверніть увагу на знімок екрана для виділеної області:
Результат:
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th
Результат / Перегляд HTML:
Книги:
Ідентифікатор книги | Назва книги | Ім'я автора | Видавництво | Ціна | Видання |
---|---|---|---|---|---|
5350192956 | Довідник програміста XSLT | Майкл Кей | Wrox | 40 доларів | 4-й |
# 18)
Цей елемент використовується для налагодження при розробці XSLT. Елемент видає свої результати на стандартному екрані виводу програми.
Атрибут @terminate використовується з двома значеннями або «так», або «ні», якщо для значення встановлено значення «так», тоді парсер негайно припиняється, як тільки умова тесту виконується для виконання повідомлення.
Щоб зрозуміти це, припустимо, якщо у нашому вхідному документі елемент ціни випадково спорожняється, як у наведеному нижче коді, тоді обробка повинна негайно припинитися, як тільки процесор зустріне порожній елемент ціни, чого можна легко досягти за допомогою xsl: повідомлення всередині умови перевірки if, як у наведеному нижче коді XSLT.
Попередження про налагоджувач відображається на стандартному екрані програми: Обробка завершена xsl: повідомлення в рядку 21.
Введіть код XML:
SQL The Complete Reference James R. Groff McGraw-Hill 3rd
Перегляньте знімок екрана для виділеної області:
як використовувати регулярний вираз у C ++
Код XSLT:
Books:-
Book ID Book Name Author Name Publisher Price Edition Terminating: price element is empty.
Перегляньте знімок екрана для виділеної області:
Результат: Зверніть увагу, що як тільки парсер виявляє порожній цінник, він негайно припиняє обробку, через яку закриваючі теги, і не з’явиться в кінці файлу.
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th 3741122298 Head First Java Kathy Sierra O'reilly 1st Перегляньте знімок екрана для виділеної області:

# 19) &
елемент визначає параметр до шаблону, якщо він визначений всередині. Він може бути визначений як всередині як глобальний параметр, так і всередині як локальний параметр для цього шаблону.
Значення передається / надається, коли шаблон викликається byor.

він передає значення параметра, визначеного всередині шаблону. Атрибут типу @name містить ім'я параметра, яке повинно відповідати атрибуту @name елемента. Атрибут @Select використовується для встановлення значення цього параметра.

Для отримання значення параметра використовується те саме, що і змінний знак долара ($).

Вихідний XML-код:
XSLT Programmer's Reference Michael Kay Wrox 4th Head First Java Kathy Sierra O'reilly 1st SQL The Complete Reference James R. Groff McGraw-Hill 3rd
Код XSLT:
List of Books Name :-
Book Name:
Перегляньте знімок екрана для виділеної області:

Результат:
List of Books Name :-
Book Name: XSLT Programmer's Reference
Book Name: Head First Java
Book Name: SQL The Complete Reference