Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Создание таблиц стилей с использованием XSL



 

Расширяемый язык таблиц стилей (Extensible Stylesheet Language, XSL), как следует из его названия, – это язык для конструирования таблиц стилей. Таблицы стилей XSL используются для описания внешнего вида документов XML, предназначенных для чтения людьми.

Например, web-дизайнер может создать таблицу стилей для XML-каталога товаров. В этой таблице стилей может быть указано, какие шрифты, размеры шрифтов и границ нужно использовать в документе, что фактически выполняется, когда сам документ объединяется с таблицей стилей с помощью процессора XSL.

Применение таблицы стилей к XML – документу процессор таблиц стилей осуществляет в два этапа.

Первый этап – трансформация дерева (tree transformation). Можно, например, написать таблицу стилей, которая расположит товары в каталоге в алфавитном порядке или пронумерует их, прежде чем отобразить. Трансформация дерева позволяет также перемещать данные XML и выполнять вычисления с этими данными.

Второй этап – форматирование (formatting). Форматирование фактически представляет собой процесс задания стиля отображения данных, размеров шрифтов, разрывов страниц и т. п.

Спецификация XSL содержит три различных языка, предназначенных для осуществления этих двух задач:

XML Path Language (XPath) – язык для создания ссылок на различные части документа XML;

XSL Transformations (XSLT) – язык, предназначенный для генерации дерева документа;

Extensible Stylesheet Language (XSL) – XSLT плюс описание набора объектов форматирования и свойств форматирования.

Предположим, что имеется документ XML (MyMusic.xml), описывающий музыкальную библиотеку:

 

<?xml version="l.0"?>

<library>

<cd>

<title> Just Singin' Along </title>

<artist> The Happy Guys </artist>

<description>

         A lovely collection of songs that the whole family can sing right along with.

</description>

<song><title> I'm Really Fine </title></song>

<song><title> Can't Stop Grinnin' </title></song>

<song><title> Things Are Swell </title></song>

<purchase_date> 2/23/1954 </purchase_date>

</cd>

<cd>

<title>

             It's Dot Com Enough for Me: Songs From Silicon Somewhere

  </title>

  <artist>The Nettizens</artist>

  <description>

               A collection of the best folk music from Internet companies.

   </description>

   <song><title> My B2B Is BRОKE </title></song>

   <song><title> Workin' in a Cubicle </title></song>

   <song><title> Killer Content Strategy </title></song>

   <song>

   <title> She Took the Bricks. I Got the Clicks </title>

   </song>

   <purchase_date> 7/12/2000 </purchase_date>

</cd>

</library>

 

Можно создать и напечатать список всего, что имеется в библиотеке. Один из способов сделать это заключается в том, чтобы применить к документу MyMusic.xml таблицу стилей, которая трансформирует его в формат HTML. Ниже приводится таблица стилей (CDstyle.xsl), которая генерирует документ HTML из документа MyMusic.xml:

 

<?xml version="1.0"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/ Transform">

<xsl:template match="/">

<TABLE STYLE="border:lpx solid black; width:300px">

<TR STYLE="font-size:10pt; font-family:Verdana;

     font weight:bold; text-decoration:underline">

<TD> Title </TD>

<TD> Artist </TD>

</TR>

<xsl:for-each select="library/cd">

<TR STYLE="font-family:Verdana; font-size:12pt;

        padding:0px 6px">

<TD><xsl:value-of select="title"/></TD>

<TD><xsl:value-of select="artist"/></TD>

</TR>

</xsl:for-each>

</TABLE>

</xsl:template>

</xsl:stylesheet>

 

Связать таблицу стилей CDstyle.xsl с XML-документом MyMusic.xml можно с помощью инструкции по обработке.

Например:

 

<?xml-stylesheet href="CDstyle.xsl" type="text/xsl"?>

 

Для применения определенного формата к данным XML можно также использовать каскадные таблицы стилей CSS (см. вопрос №1). В этом случае связь XML документ с CSS можно с помощью инструкции stylesheet:

 

<? Xml-stylesheet type href="CDstyle.css" type="text/css"?>

 

В таблице стилей CDstyle.xsl показан базовый пример трансформации данных XML с помощью стандартной таблицы стилей. XSLT находит данные, которые соответствуют некоторому образцу, и вставляет их в нужное место шаблона template. Поиск соответствия с образцом – очень важная часть XSL. Посмотрим на образец, который применялся во второй части нашей таблицы стилей CDstyle.xsl:

 

<xsl:for-each selесt="library/cd">

 

Эта строка задает цикл по всем экземплярам элемента cd внутри элемента library. Если нужно создать разделенный запятыми список всех песен на каждом диске (каждому диску соответствует свой экземпляр элемента cd), то нужно задать еще один цикл внутри приведенного выше цикла. Это показано в примере:

...

<xsl:for-each select="library/cd">

<TR STYLE="font-family:Verdana; font-size:12pt;

        padding:0px 6px">

<TD><xsl:value-of select="title"/></TD>

<TD><xsl:value-of select="artist"/></TD>

<TD>

     <xsl:for-each select="song">

          <xsl:value-of select="title"/>"

          <xsl:if test="context()[not(end())]"> , 

          </xsl:if>

     </xsl: for-each>

</TD>

</TR>

</xsl:for-each>

...

 

Если получившийся документ XML открыть в браузере, поддерживающем XSL, то он будет выглядеть примерно так, как показано на рис. 2.1.

 

 

Рис. 2.1. Результат применения таблицы CDstyle.xsl к файлу MyMusic.xml

 

2.2 Язык преобразований XSLT

 

Язык генерации дерева документа XSLT (XSL Transformations) - это одна из реализаций XML. По традиции, документ, записанный на языке XSLT, называется таблицей стилей (stylesheet), хотя его правильнее назвать документом, содержащим правила преобразований.

Все элементы XML, объявленные в языке XSLT, относятся к пространству имен http://www.w3.org/1999/XSL/Transform. Обычно они записываются с префиксом xsl. Если принят этот префикс, то корневой элемент документа XSLT - таблицы стилей будет называться xsl:stylesheet. Как синоним этого имени можно записывать корневой элемент таблицы стилей с именем xsl:transform.

У корневого элемента xsl:stylesheet есть один обязательный атрибут version, указывающий версию языка.

Простейшая таблица стилей XSLT (файл simple . xsl ) выглядит так:

 

<?xml version="l.0" encoding="windows-1251" ?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="text" encoding="CP866" />

</xsl:stylesheet>

 

Здесь только определяется префикс xsl пространства имен http :// www.w3.org/1999/XSL/Transform и задается один стиль – шаблон xsl:output для вывода на стандартное устройство, а именно выводится "плоский" текст, на что показывает значение "text" атрибута method (другие значения — "html", "xhtml" и "xml"). Вывод текста будет сделан в кодировке СР866, указываемой атрибутом encoding. Такая кодировка выбрана для вывода кириллицы на консоль MS Windows, для других устройств можно выбрать кодировку UTF-8, CP1251 или KOI8-R.

Эту таблицу стилей записываем в файл, например, simple . xsl. Ссылку на таблицу стилей можно поместить в XML документ notebook . xml как одну из инструкций по обработке, а именно инструкцию xml-stylesheet. Пример такой ссылки:

 

<?xml version="1.0" encoding="windows-1251" ?>

<?xml-stylesheet type="text/xsl" href="simple.xsl"?>

<notebook>

<person>

<name first="Иван" second="Петрович" surname="Сидоров"/>

<address>

    <street>Садовая, 12 — 34</street>

    <city>Пушкин</city><zip>123321/zip>

</address>

<phone-list>

     <work-phone> 123456 </work-phone>

     <home-phone> 654321 </home-phone>

</phone-list>

</person>

<person>

<name first="Mapия" second="Ивановна" surname ="Федорова"/>

<address>

   <street> Hижняя, 12 </street>

   <city>3apeчeнск</city><zip> 321123 </zip>

</address>

<phone-list>

   <home-phone>224321</home-phone>

</phone-list>

</person>

</notebook>

 

"Увидев" инструкцию по обработке xml-stylesheet, программа-обработчик XML, если она, кроме того, является процессором XSLT, выполнит преобразование, заданное в файле simple . xsl. Преобразование заключается в выводе содержимого элементов файла notebook . xml на экран (или консоль), без всякого форматирования. Будет сделано только преобразование текста в кодировку СР866 и выведен слитный текст даже без пробелов между содержимым элементов.

Т.е., процессор все выводит в одну строку:

 


Поделиться:



Последнее изменение этой страницы: 2019-05-08; Просмотров: 302; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.03 с.)
Главная | Случайная страница | Обратная связь