загрузка...
 
Розділ 5 Обробка xml-данихВИКОРИСТАННЯ ДЕКІЛЬКОХ ШАБЛОНІВ
Повернутись до змісту

Розділ 5 Обробка xml-данихВИКОРИСТАННЯ ДЕКІЛЬКОХ ШАБЛОНІВ

Інший спосіб відображення XML-елементів, що повторюються, полягає в створенні окремого шаблону для кожного елемента з подальшим викликом цього шаблону з використанням XSL-елемента apply-templates. Приклад використання подібної методики наведений у XSL-таблиці стилів, поданій в example_17.xsl. Ця таблиця стилів призначена для пов'язання з XML-документом (з example_16.xml); встановити цей зв'язок ви можете шляхом модифікації інструкції xml-stylesheet у документі таким чином:

  

     

Book Inventory

     

  

  

      Title:

     

      Author:

     

      Binding type:

     

      Number of pages:

     

      Price:

     

  

.

Розглянута в прикладі таблиця стилів містить два шаблони. Один шаблон містить інструкції для відображення всього документа (шляхом установки match="/", що вказує на кореневу частку документа). Всі XSL-таблиці стилів вимагають наявності такого шаблону. Інший шаблон містить інструкції для відображення елемента BOOK (шаблон з установкою match="BOOK"). Спочатку браузер обробляє шаблон, який відповідає кореневій частині елемента:

  

Book Inventory

  

.

XSL-елемент apply-templates повідомляє браузеру, що для кожного елемента BOOK усередині кореневого елемента INVENTORY він повинен обробляти шаблон, що відповідає елементу BOOK, тобто шаблон, для атрибута match який встановлено в значення "BOOK". Таблиця стилів включає такий шаблон, що відповідає елементу BOOK:

   Title:

  

   Author:

  

   Binding type:

  

   Number of pages:

  

   Price:

  

.

Оскільки цей шаблон відповідає елементу BOOK, елемент BOOK є поточним елементом в контексті шаблону. У зв'язку з цим доступ до дочірніх елементів BOOK здійснюється за допомогою зразка, що містить тільки ім'я елемента, як в нашому прикладі:

.

Примітка. Якщо ви не вкажете атрибут select для елемента apply-templates, браузер обробляє відповідний шаблон (якщо він є) для кожного дочірнього елемента поточного елемента. У даному прикладі для елемента apply-templates єдиним дочірнім елементом для поточного елемента (коренева частка документа) є елемент INVENTORY, який не має відповідного шаблону. Таким чином, якщо ви опустите атрибут select, ніякі дані не будуть виведені.

Браузер обробляє шаблон BOOK один раз для кожного елемента BOOK, відображуючи всю інформацію про книги, наявну в документі, як показано на рисунку 15.

 

 

Рисунок 15 -  Відображення елементів документа



загрузка...