загрузка...
 
ОСНОВИ ВИКОРИСТАННЯ XSL-ТАБЛИЦЬ СТИЛІВ
Повернутись до змісту

ОСНОВИ ВИКОРИСТАННЯ XSL-ТАБЛИЦЬ СТИЛІВ

Існують два основні кроки для відображення 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-розмітки для документа і таблиці стилів.

 

 

Рисунок 12– Генерація html-коду браузером

XML-документ

  

   Herman

   Melville

   .

XSL-таблиця стилів

  

Book Description

   Author:

  
.

           

HTML, що відображується

  

Book Description

   Author:

   Hermann Melville.



загрузка...