Існують два основні кроки для відображення XML-документа при використанні XSL-таблиць стилів.
Створення файлу XSL-таблиці стилів. XSL є додатком XML, тобто XSL-таблиця є коректно сформованим XML-документ, який відповідає правилам XSL. Подібно до будь-якого XML-документа, XSL-таблиця стилів містить простий текст, і ви можете створити її за допомогою будь-якого текстового редактора.
Пов'язування XSL-таблиці стилів з XML-документом. Ви можете пов'язати XSL-таблицю стилів з XML-документом, включивши у документ інструкцію з обробки xml-stylesheet, яка має таку узагальнену форму запису:
Тут XSLFilePath є включений у лапки URL, який вказує місцезнаходження файлу таблиці стилів. Ви можете використовувати повний URL, наприклад:
Частіше використовують неповний URL, який задає місцезнаходження XML-документа, що містить інструкцію з обробки xml-stylesheet, наприклад:
.
(Відносний URL зустрічається частіше, оскільки ви зазвичай зберігаєте файл таблиці стилів у тій самій папці, де зберігається XML-документ, або в одній із вкладених в неї папок.)
Довідка. Хоча можна зв'язати XSL-таблицю стилів з використанням повного URL, таблиця стилів при цьому повинна розміщуватися на тому ж домені, що і XML-документ, з яким він пов'язаний. Наприклад, якщо домен містить XML-документ, то і XSL-таблиця стилів повинна розміщуватися на тому ж домені.
Як правило, інструкція з обробки xml-stylesheet додається в пролог XML-документа за оголошенням XML.
Якщо ви пов'язали XSL-таблицю стилів із XML-документом, можна відкрити цей документ безпосередньо в браузері, який відображатиме XML-документ з використанням інструкцій з перетворення стилів, що містяться в таблиці. На відміну від каскадних таблиць стилів, якщо ви пов'язуєте з XML-документом більше, ніж одну XSL-таблицю стилів, браузер використовує першу таблицю і ігнорує всі останні. Якщо ви пов'яжете з XML-документом і CSS-таблицю, і XSL-таблицю стилів, браузер використає тільки XSL-таблицю стилів.
Використання одного шаблону XSL
На відміну від CSS, що містить правила, XSL-таблиця стилів включає один або декілька шаблонів, кожен з яких містить інформацію для відображення в певній гілці елементів в XML-документі. Існує можливість створити просту XSL-таблицю стилів, яка включає тільки один шаблон. Цей шаблон містить інформацію для відображення всього документа.
Далі поданий перший приклад XSL-таблиці стилів example_15.xsl. Ця таблиця стилів пов'язана з XML-документом:
Book Description
Author:
Title:
Price:
Binding type:
Number of pages:
.
Приклад відповідного example_15.xml файлу наведений нижче:
Herman
Melville
hardcover
724
$9.95
.
На рисунку 11 показано як браузер відображує XML-документ відповідно до інструкцій з таблиці стилів.
Рисунок 11 - Результат відображення перетвореного xml-документа
Кожна XSL-таблиця стилів повинна мати елемент Документ, поданий нижче. (Нагадаємо, що елемент Документ, відомий як кореневий елемент, є XML-елементом верхнього рівня, який містить всі інші елементи).
Елемент Документ xsl:stylesheet служить не лише сховищем для інших елементів, але також ідентифікує документ як XSL-таблицю стилів. Цей елемент є одним із XSL-елементів спеціального призначення, що використо-вуються в таблиці стилів. Всі XSL-елементи належать простору імен xsl – тобто ви передуєте імені кожного XSL-елемента префіксом xsl:, що позначає простір імен. Ви визначаєте цей простір імен в початковому тегу елемента xsl:stylesheet, наприклад, таким чином:
Це визначення дозволяє вам використовувати простір імен всередині елементів таблиці стилів.
Елемент Документ xsl:stylesheet XSL-таблиці стилів повинен містити один або декілька шаблонів елементів, які скорочено називатимемо шаблонами. Даний Документ містить тільки один шаблон, який має таку форму:
.
Браузер використовує шаблон для відображення певної гілки елементів в ієрархії XML-документа, з яким ви пов'язуєте таблицю стилів. Атрибут match шаблону вказує на певну гілку. (Атрибут match аналогічний селектору в правилі CSS). Значення атрибута match носить назву зразка (pattern). Зразок в даному прикладі ("/") представляє кореневий елемент всього XML-документа. Цей шаблон, таким чином, містить інструкції для відображення всього XML-документа.
Кожна XSL-таблиця стилів повинна містити один і лише один шаблон з атрибутом match, який має значення "/". Ви також можете включити один або декілька додаткових шаблонів з інструкціями для відображення певних підлеглих гілок в структурі XML-документа; кожна з них повинна мати зразок, що відповідає певній гілці.
Кореневий зразок ("/") не представляє елемент Документ (або кореневий елемент) XML-документа. Він представляє весь документ, для якого елемент Документ є дочірнім.
Далі наведений повний опис шаблону з даної таблиці стилів:
Book Description
Author:
Title:
Price:
Binding type:
Number of pages:
.
Шаблон містить два види XML-елементів.
XML-елементи, що представляють HTML-розмітку. Прикладами подібного виду XML-елемента з даної таблиці стилів є:
Book Description
,
який відображує заголовок другого рівня
Author: ,
який відображує блок тексту, набраного курсивом (Author:), і
,
який створює пустий рядок.
Всі ці XML-елементи є коректно сформованими і представляють стандартні HTML-елементи. Браузер просто копіює кожен HTML-елемент безпосередньо на вихід HTML, який сприймає і відображує їх.
Довідка. Кожен з елементів, що представляють HTML-розмітку, має бути коректно сформованим XML-елементом, а також стандартним HTML-елементом. Отже, ви не можете використовувати HTML-конструкції, які не є коректно сформованим XML, такі, як елементи, що складаються тільки з початкового тегу. Наприклад, щоб задати елемент переведення рядка в HTML, ви не можете просто ввести
, як ви це робите для HTML-сторінки. Замість цього ви повинні використовувати коректно сформований тег порожнього XML-елемента
.
XSL-елементи. Приклади XSL-елементів з даної таблиці стилів є елементами xsl:value-of, наприклад:
.
Браузер відрізняє XML-елемент від елемента, який представляє HTML, оскільки перший має як префікс опис простору імен xsl:. XSL-елементи в шаблоні не копіюються на вихід HTML. Вони лише містять інструкції з вибору і модифікації даних XML, або використовуються для виконання інших завдань.
XSL-елемент value-of додає текстовий вміст певного XML-елемента, а також будь-яких його дочірніх елементів, які він має, – у вихідний модуль HTML, який сприймається і відображується браузером. Ви вказуєте певний XML-елемент, що задаєте зразком, який привласнюєте атрибуту select XSL-елемента value-of. У прикладі елемента, розглянутого вище, value-of атрибута select привласнений зразок "BOOK/AUTHOR", що приводить до виведення текстового вмісту елемента AUTHOR XML-документа. Текстовий вміст елемента AUTHOR складається з символьних даних, що належать двом його дочірнім елементам, FIRSTNAME і LASTNAME.
Зверніть увагу, що XML-елемент у зразку задається за допомогою оператора шляху (в даному випадку BOOK/AUTHOR), який визначає місцезнаходження елемента в ієрархії XML-документа. (Оператор шляху схожий на шлях до файлу, який операційна система використовує для вказівки місцезнаходження файлу або папки).
Головний момент, на який потрібно звернути увагу, полягає в тому, що оператор шляху в значенні атрибута select відноситься до поточного елемента. Кожен контекст всередині XSL-таблиці стилів відноситься до поточного елемента. Оскільки даний приклад шаблону відноситься до кореневого елемента всього документа (за допомогою установки атрибута match="/"), поточним "елементом" для даного шаблону є кореневий елемент документа. (У даному випадку поточний елемент не володіє відповідним літералом, а є батьком елемента Документ). Таким чином, всередині цього шаблону оператор шляху BOOK/AUTHOR вказує на елемент AUTHOR, вкладений в елемент BOOK, вкладений у кореневий елемент документа. (Оператор шляху в значенні атрибута select аналогічний неповному шляху до файлу, що задає місцезнаходження файлу щодо поточної робочої папки).
Якщо ви опустите атрибут select для XSL-елемента value-of, елемент здійснюватиме виведення текстового вмісту плюс текстовий вміст всіх дочірніх елементів у поточний елемент. (У нашому прикладі, оскільки поточним є кореневий елемент, пропуск атрибута select приведе до виведення всіх символьних даних у XML-документ.)
Метою поданого в даному прикладі шаблону елементів є відображення тексту назви для кожного з дочірніх XML-елементів у документі (AUTHOR, TITLE, PRICE, BINDING і PAGES) плюс текстового вмісту кожного елемента. Зверніть увагу, що порядок елементів value-of у шаблоні визначає порядок, в якому браузер відображує ці елементи. Таким чином, навіть із цієї простої таблиці стилів ви можете зрозуміти, що XSL-таблиця стилів є набагато гнучкішою, ніж CSS, яка завжди відображує елементи в тому порядку, в якому вони знаходяться в документі.
Отже, як ви могли відмітити, XSL-таблиця стилів повідомляє браузеру, як відображувати XML-документ шляхом вибіркового перетворення XML-елементів у блок HTML-розмітки, який сприймається і відображується браузером аналогічно розмітці, що міститься на HTML-сторінці. Відмітимо, що вам не потрібно включати в XSL-шаблон елементи, що представляють елементи HTML або BODY, які є стандартними складовими частинами HTML-сторінки, оскільки браузер сам ефективно їх формує.
На рисунку 12 показано як браузер генерує першу частину блоку HTML-розмітки для документа і таблиці стилів.