SlideShare a Scribd company logo
1 of 54
XML to HTML -
преобразования
http://ProductivityBlog.com.ua
О чем пойдет речь
▪Простые преобразования
▪Циклы, форматирование, таблицы и
оформление
▪Фильтры и условия
▪Визуальное XML to HTML преобразование
co StyleVision
Файлы и инструменты
Файлы практических работ в файле
XSLT_3.zip в папке Practice
XMLSpy, StyleVision из пакета
ALTOVA MissionKit
Простые преобразования
▪ <xsl:stylesheet>
▪ <xsl:output>
▪ Практика
▪ <xsl:template>
▪ <html>
▪ <xsl:value-of>
<xsl:stylesheet>
▪ Кое-что будет повторяться, но это даже хорошо
▪ XSLT-файлы – это XML-файлы
▪ Тег верхнего уровня
<xsl:stylesheet version=“1.0”
xmlns:xsl=“http://www.w3.org/1999/XSL/Transform”>
</xsl:stylesheet>
<xsl:output>
▪ Непосредственно вложен в корневой элемент
▪ Задает формат для выходного файла
▪ method – тип файла
▪ xml, html, text
▪ encoding – кодировка
▪ indent – отступы тегов для лучшей читабельности
<xsl:output method=“xml” version=“1.0” encoding=“UTF-8”
indent=“yes”/>
Практика –
создание XSLT-файла
▪Создать новый файл в XMLSpy
▪выбрать XSLT 1.0
▪выбрать Generic XSL/XSLT Transformation
▪ В теге xsl:output поменять атрибут method на
html
▪Сохранить файл под именем xml2html1.xslt
Готовый файл можно найти в папке Chapter3transformations
<xsl:template>
▪ Определяет какие данные войдут в
результирующий файл
▪ Чтобы взять все данные из исходного файла:
<xsl:template match=“/”>
</xsl:template>
<html>
▪ Внутри xsl:template настраивают содержимое выходного файла
▪ Для HTML файла:
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
▪ XMLSpy добавит head, title и body автоматически при добавлении
html
<xsl:value-of>
▪ Помещает в результирующий файл данные из
исходного
▪XPath-выражение в атрибуте select
▪названия – из ИСХОДНОГО файла
<xsl:value-of select=“//product[color=‘Yellow’]/name”/>
Практика –
редактирование XSLT-файла
▪ Добавить ссылку на
furniture.xml
▪ Добавить теги xsl:template и
html
▪ Добавить заголовок страницы
– Yellow furniture
▪ Добавить xsl:value-of в тело
документа
▪ Сохранить файл под именем
xml2html1.xslt
▪ Запустить трансформацию
▪ Сохранить результат под
именем Output1.html
▪ Просмотреть результат в
браузере
Готовый файл можно найти в папке Chapter3transformations
Практика –
редактирование XSLT-файла
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<html>
<head>
<title>Yellow Furniture</title>
</head>
<body>
<xsl:value-of select="//product[color='Yellow']/name"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Готовый файл можно найти в папке Chapter3transformations
Циклы, форматирование, таблицы
и оформление
▪<xsl:for-each>
▪<h1>,<font>,<br/>
▪<table>
Практика – подготовка данных
▪ Открыть файл furniture.xml
▪ Переключиться в режим таблицы и просмотреть
содержимое файла
Готовый файл можно найти в папке Chapter3transformations
<xsl:for-each>
▪ Отбирает набор элементов и позволяет перебрать
и обработать их один за другим
▪ Пример:
<xsl:for-each select=“//product[product_line=‘Boston’]”>
<xsl:value-of select=“name”/>
</xsl:for-each>
<xsl:for-each>
▪ То же самое, но чуть по-другому:
<xsl:for-each select=
“//product[product_line=‘Boston’]/name”>
<xsl:value-of select=“.”/>
</xsl:for-each>
<h1>, <font>, <br/>
▪ Форматирование данных
<h1>A Quick</h1>
<h2>Brown Fox</h2>
<h3>Jumped<br/>Over</h3>
<font style=“font: 16pt Times”>
The Lazy<br/>Dogs</fonts>
Практика – циклы
▪ Добавить тег xsl:for-each в тело файла
xml2html1.xslt
▪ Поменять заголовок на Boston Products
▪ Cохранить как xml2html2.xslt
▪ Запустить трансформацию
▪ Сохранить результат как Output2.html
Готовый файл можно найти в папке Chapter3transformations
Практика – циклы
<head>
<title>Boston Products</title>
</head>
<body>
<h1>Furniture Warehouse Product List</h1>
<h2>Boston Product Line</h2><br/>
<xsl:for-each select="//product[product_line='Boston']">
<font face="Courier" color="#F00000">
<xsl:value-of select="name"/>
</font>
$ <xsl:value-of select="retail_price"/><br/>
</xsl:for-each>
</body>
Готовый файл можно найти в папке Chapter3transformations
<table>
▪ Просто добавляем тег <table> - структура таблицы будет
добавлена автоматически
<table>
<tbody>
<tr>
<td></td>
</tr>
</tbody>
</table>
▪ Кроме tbody есть еще thead и tfoot
▪ Кроме tr и td есть еще th
<table>
<table>
<thead>
<tr bgcolor="#B893F4">
<th>Name</th>
<th>Price</th>
<th>Color</th>
</tr>
</thead>
<tbody>
<xsl:for-each select="//product">
<tr>
<td bgcolor="#D9D2FF"><xsl:value-of select="name"/></td>
<td bgcolor="#F9DFFF">$ <xsl:value-of select="retail_price"/></td>
<td><xsl:value-of select="color"/></td>
</tr>
</xsl:for-each>
</tbody>
</table>
Практика – таблицы
▪ В файл xml2html2.xslt добавить тег <table>, как
показано на предыдущем слайде
▪ Cохранить как xml2html3.xslt
▪ Запустить трансформацию
▪ Сохранить результат как Output3.html
Готовый файл можно найти в папке Chapter3transformations
Вложенные циклы, условия,
поиск элементов
▪ Чтобы просмотреть все комнаты для каждого
продукта нужны вложенные циклы
<xsl:for-each select=“//product”>
<xsl:for-each select=“room”>
<xsl:value-of select=“.”/>
</xsl:for-each>
</xsl:for-each>
Вложенные циклы, условия,
поиск элементов
▪ Добавляем запятые между комнатами для каждого
продукта нужны вложенные циклы
<xsl:for-each select=“//product”>
<xsl:for-each select=“room”>
<xsl:value-of select=“.”/>
<xsl:if test=“position()!=last()”/>,</xsl:if>
</xsl:for-each>
<br/>
</xsl:for-each>
Практика – таблицы
▪ В файл xml2html3.xslt добавить вложенные
циклы, как показано на предыдущем слайде
▪ Cохранить как xml2html4.xslt
▪ Запустить трансформацию
▪ Сохранить результат как Output4.html
Готовый файл можно найти в папке Chapter3transformations
Практика – использование
таблицы стилей
▪ Добавить CSS-стили в тег <head>
▪ Использовать добавленные классы для
стилизации таблицы
▪ Cохранить как xml2html5.xslt
▪ Запустить трансформацию
▪ Сохранить результат как Output5.html
Готовый файл можно найти в папке Chapter3transformations
Практика – использование
таблицы стилей
<style type="text/css">
body {
font-family : Arial ;
font-size : 13px ; }
table {
border-collapse : collapse ; }
table, th, td {
border : 1px ;
border-color : #666 ;
border-style : solid ; }
td {
padding : 5px ; }
.Title {
color : #FFF ; }
</style>
Готовый файл можно найти в папке Chapter3transformations
<thead class="Title">
…
<tfoot class="Title">
<tr style="background-color:#B893F4">
<th>===</th>
<th>===</th>
<th>===</th>
</tr>
</tfoot>
Фильтры и условия
▪<xsl:if>
▪<xsl:sort>
▪<xsl:choose>
▪<xsl:attribute>
<xsl:if>
▪ Изменение результирующих значений в
зависимости от истинности условия
▪по сути, упрощенный условный оператор
▪ нет ветви else
▪test – условие (TRUE или FALSE)
<xsl:if> - пример
<xsl:if test=“product_line!=‘Boston’
and product_line!=‘Albany’”>
</xsl:if>
<xsl:sort>
▪ Сортировка набора элементов. часто – внутри
цикла <xsl:for-each>
▪select – по какому ключу сортировать
▪ может быть несколько
▪order – порядок сортировки
▪data-type – название говорит за себя
▪ number или text (по умолчанию)
<xsl:sort> - пример
<xsl:for-each select=“//product”>
<xsl:sort select=“retail_price” data-type=“number”/>
</xsl:for-each>
▪ Добавить в файл xml2html5.xslt теги xsl:if для удаления двух
продуктовых линий как показано на одном из предыдущих слайдов
▪ Изменить заголовок файла на All Products except Boston and Albany
Product Lines
▪ Запустить преобразование
▪ Внутрь цикла добавить сортировку по полю retail_price
▪ Запустить преобразование
▪ Сохранить файл как xml2html6.xslt
▪ Сохранить результат как Output6.html
Практика – фильтрация
и сортировка данных
Готовый файл можно найти в папке Chapter3transformations
<xsl:choose>
▪ Проверка нескольких условий – аналог
оператора варіанта
▪xsl:when с атрибутом test
▪xsl:otherwise
▪ необязательно, но это хорошая практика
<xsl:choose> - пример
<xsl:choose>
<xsl:when test=“retail_price &lt; 200”>Budget</xsl:when>
<xsl:when test=“retail_price &lt; 600”>Standard</xsl:when>
<xsl:otherwise>Luxury</xsl:otherwise>
<xsl:choose>
▪ Добавить в тег xsl:choose как показано на
предыдущем слайде
▪ Изменить заголовок файла на All Products
except Boston and Albany Product Lines
▪ Сохранить файл как xml2html7.xslt
▪ Сохранить результат как Output7.html
Практика –
добавление категорий
Готовый файл можно найти в папке Chapter3transformations
<xsl:attribute>
<font style=“color:Red”>Budget</font>
<font>
<xsl:attribute name=“style”>
color:Red
</xsl:attribute>
</font>
▪ Добавить атрибут style, чтобы раскрасить цены
в зависимости от категории
▪ Добавить еще одну таблицу – «легенду» для
раскраски
▪ Сохранить файл как xml2html8.xslt
▪ Запустить трансформацию
▪ Сохранить результат как Output8.html
Практика –
добавление цветов и подписей
Готовый файл можно найти в папке Chapter3transformations
Практика –
добавление цветов и подписей
Визуальное XML to HTML
преобразование co StyleVision
▪Воссоздание страницы из файла
Output8.html
▪Создание страницы с
изображениями и ссылками
Цель работы
▪ Получить такой же
результат, как в предыдущих
примерах, но визуально
▪ Использовать StyleVision
▪ Открыть в StyleVision файл
furniture.xml, создать free-flow-
документ
▪ Удалить контент, добавить
заголовки первого и второго
уровней
▪ Добавить таблицу (Dynamic
Table)
▪ Выбрать столбцы name,
retail_price и room для
создания заголовков
▪ Расположить столбцы в
указанном выше порядке
▪ В ячейки футера добавить ===
▪ Раскрасить ячейки хедера и
футера (белый на #B893F4)
▪ В свойствах документа указать
шрифт 12pt Arial
▪ Просмотреть результат
Практика –
добавление таблиц и подписей
▪ Вернуться в режим дизайна
▪ В контекстном меню тега product выбрать Edit Xpath
Filter, попробовать варианты (с просмотром
результата):
▪ product_line=“Boston”
▪ product_line!="Boston" and product_line!="Albany“
▪ Отсортировать по полю retail_price
▪ Просмотреть результат
Практика –
фильтрация и сортировка
▪ C помощью окна Style
настроить цвета фона для
tcell в каждом столбце
▪ Добавить запятую перед
закрывающим тегом в
столбце Room
▪ Выделить запятую и в
контекстном меню
выбрать Enclose with >
Condition
▪ Записать выражение
position()!=last()
▪ Добавить $ перед
контентом столбца Price
▪ Просмотреть результат
Практика –
форматирование тела таблицы
▪ Выделить содержимое ячейки столбца Price
▪ В окне Style с CTRL кликнуть на text и content
▪ Кликнуть на свойстве color
▪ Нажать кнопку Xpath
▪ Ввести выражение
if (.<200) then "green" else if (.>600) then "red" else
"black“
▪ Просмотреть результат
Практика –
добавление категорий
▪ Добавить * после Price в заголовке второго столбца
▪ После таблицы вставить две пустых строки
▪ Вставить таблицу (статическая, без футера, без whole available
width) c двумя столбцами и тремя строками
▪ заголовки: Color, Category
▪ содержимое по строкам: Green|Budget, Black|Standard,
Red|Luxury
▪ задать цвета фона и текста для таблицы
▪ Просмотреть результат
Практика –
добавление легенды
▪ Сохранить результат как xml2html9.sps
▪ Cохранить результат как Output9.html
▪ Cгенерировать и сохранить также RTF и PDF -
файлы
Практика –
сохранение результата
Цель работы
▪ Мы хотим воссоздать список книг (reading_list.xml) из
предыдущего модуля, но в более красивой форме
▪ Добавим изображение обложки и ссылку
на описание книги в Википедии
▪ Хорошая идея – просмотреть файл
в XMLSpy, в меню File выбрать XSLT
и затем Produce HTML, RTF or PDF
▪ В StyleVision добавить reading_list.xml
▪ Добавить заголовок
▪ Добавить перед заголовком картинку
book_spine.png, изменить ее размер
▪ Перетащить элемент book из окна Shema Tree
и выбрать Create Table
▪ Переименовать заголовки столбцов
▪ Просмотреть результат
Практика – добавление
подписей, картинок и таблиц
▪ Кликнуть на теге title и в контекстном меню
выбрать Enclose with > Hyperlink
▪ Выбрать вариант Static and Dynamic
▪статическая часть: http://en.wikipedia.org/wiki/
▪динамическая: /wiki/book
▪ Просмотреть результат, попробовать перейти по
гиперссылкам
Практика –
добавление гиперссылок
▪ Удалить все содержимое ячейки wiki
▪ Вставить в нее картинку
▪динамическая ссылка
▪ wiki/picture
▪ Просмотреть результат
▪ В окне Style изменить ширину и высоту на 1.5in
▪ Просмотреть результат
Практика –
добавление картинок
▪ Сохранить результат (Save Design) как
xml2html10.sps
▪ Cохранить результат как Output10.html
▪ Cгенерировать и сохранить также RTF и PDF -
файлы
Практика –
сохранение результата
Подводим итоги
▪ Мы узнали как выполнить
XML to HTML-преобразование
▪ Познакомились с StyleVision
▪ Изучили возможности по
формированию документа
▪ Научились генерировать также
RTF и PDF-файлы
Вопросы
и ответы

More Related Content

Viewers also liked (8)

XSLT -7
XSLT -7XSLT -7
XSLT -7
 
XSLT -4
XSLT -4XSLT -4
XSLT -4
 
XSLT -5
XSLT -5 XSLT -5
XSLT -5
 
XSLT - 6
XSLT - 6XSLT - 6
XSLT - 6
 
Ivan Bordug Test Automation Story
Ivan Bordug Test Automation StoryIvan Bordug Test Automation Story
Ivan Bordug Test Automation Story
 
Micro Model Based Testing
Micro Model Based TestingMicro Model Based Testing
Micro Model Based Testing
 
Мастер-класс
Мастер-классМастер-класс
Мастер-класс
 
XSLT - 0
XSLT - 0XSLT - 0
XSLT - 0
 

Similar to XSLT - 3

Web весна 2013 лекция 8
Web весна 2013 лекция 8Web весна 2013 лекция 8
Web весна 2013 лекция 8Technopark
 
Верстка_Лекция2
Верстка_Лекция2Верстка_Лекция2
Верстка_Лекция2itc73
 
Как создать сайт
Как создать сайтКак создать сайт
Как создать сайтUnited Design
 
JavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in RussianJavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in RussianMikhail Davydov
 
Создание настроек темы оформления в InSales
Создание настроек темы оформления в InSalesСоздание настроек темы оформления в InSales
Создание настроек темы оформления в InSalesInSales
 
QA Fest 2015. Иван Пашко. XPath yourself. Tips & Tricks
QA Fest 2015. Иван Пашко. XPath yourself. Tips & TricksQA Fest 2015. Иван Пашко. XPath yourself. Tips & Tricks
QA Fest 2015. Иван Пашко. XPath yourself. Tips & TricksQAFest
 
презентация 4. введение в css
презентация 4. введение в cssпрезентация 4. введение в css
презентация 4. введение в cssRusov1
 
Михаил Трошев — CSS: Систематизация базовых знаний
Михаил Трошев — CSS: Систематизация базовых знанийМихаил Трошев — CSS: Систематизация базовых знаний
Михаил Трошев — CSS: Систематизация базовых знанийYandex
 
основы нтмл
основы нтмлосновы нтмл
основы нтмлolgaoov
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 То, что вы хотели знать о HandlerSocket, но не смогли нагуглить То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьSergey Xek
 
Степан Резников "Шаблонизация на клиенте"
Степан Резников "Шаблонизация на клиенте"Степан Резников "Шаблонизация на клиенте"
Степан Резников "Шаблонизация на клиенте"Yandex
 
XML в крупных размерах - Михаил Крайнюк, DrupalJedi
XML в крупных размерах - Михаил Крайнюк, DrupalJediXML в крупных размерах - Михаил Крайнюк, DrupalJedi
XML в крупных размерах - Михаил Крайнюк, DrupalJediDrupalSib
 
C# Desktop. Занятие 09.
C# Desktop. Занятие 09.C# Desktop. Занятие 09.
C# Desktop. Занятие 09.Igor Shkulipa
 
React со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендерингReact со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендерингTimophy Chaptykov
 

Similar to XSLT - 3 (20)

XSLT - 1
XSLT - 1XSLT - 1
XSLT - 1
 
Web весна 2013 лекция 8
Web весна 2013 лекция 8Web весна 2013 лекция 8
Web весна 2013 лекция 8
 
Верстка_Лекция2
Верстка_Лекция2Верстка_Лекция2
Верстка_Лекция2
 
Укрощение XML
Укрощение XMLУкрощение XML
Укрощение XML
 
Как создать сайт
Как создать сайтКак создать сайт
Как создать сайт
 
JavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in RussianJavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in Russian
 
Создание настроек темы оформления в InSales
Создание настроек темы оформления в InSalesСоздание настроек темы оформления в InSales
Создание настроек темы оформления в InSales
 
HTML 2
HTML 2HTML 2
HTML 2
 
QA Fest 2015. Иван Пашко. XPath yourself. Tips & Tricks
QA Fest 2015. Иван Пашко. XPath yourself. Tips & TricksQA Fest 2015. Иван Пашко. XPath yourself. Tips & Tricks
QA Fest 2015. Иван Пашко. XPath yourself. Tips & Tricks
 
презентация 4. введение в css
презентация 4. введение в cssпрезентация 4. введение в css
презентация 4. введение в css
 
Tables frames
Tables framesTables frames
Tables frames
 
Михаил Трошев — CSS: Систематизация базовых знаний
Михаил Трошев — CSS: Систематизация базовых знанийМихаил Трошев — CSS: Систематизация базовых знаний
Михаил Трошев — CSS: Систематизация базовых знаний
 
основы нтмл
основы нтмлосновы нтмл
основы нтмл
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 То, что вы хотели знать о HandlerSocket, но не смогли нагуглить То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 
Степан Резников "Шаблонизация на клиенте"
Степан Резников "Шаблонизация на клиенте"Степан Резников "Шаблонизация на клиенте"
Степан Резников "Шаблонизация на клиенте"
 
XML в крупных размерах - Михаил Крайнюк, DrupalJedi
XML в крупных размерах - Михаил Крайнюк, DrupalJediXML в крупных размерах - Михаил Крайнюк, DrupalJedi
XML в крупных размерах - Михаил Крайнюк, DrupalJedi
 
C# Desktop. Занятие 09.
C# Desktop. Занятие 09.C# Desktop. Занятие 09.
C# Desktop. Занятие 09.
 
Agile theming with kalatheme & panopoly
Agile theming with kalatheme & panopolyAgile theming with kalatheme & panopoly
Agile theming with kalatheme & panopoly
 
Xslt
XsltXslt
Xslt
 
React со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендерингReact со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендеринг
 

More from Alexander Babich

Актуальні курси з мого арсеналу (Бабич О.В.)
Актуальні курси з мого арсеналу (Бабич О.В.)Актуальні курси з мого арсеналу (Бабич О.В.)
Актуальні курси з мого арсеналу (Бабич О.В.)Alexander Babich
 
M365: Word, Excel, PowerPoint...
M365: Word, Excel, PowerPoint...M365: Word, Excel, PowerPoint...
M365: Word, Excel, PowerPoint...Alexander Babich
 
M365: Інші сервіси та застосунки
M365: Інші сервіси та застосункиM365: Інші сервіси та застосунки
M365: Інші сервіси та застосункиAlexander Babich
 
M365: Завершення
M365: ЗавершенняM365: Завершення
M365: ЗавершенняAlexander Babich
 
M365: рекомендації
M365: рекомендаціїM365: рекомендації
M365: рекомендаціїAlexander Babich
 
M365: Огляд платформи Microsoft365
M365: Огляд платформи Microsoft365M365: Огляд платформи Microsoft365
M365: Огляд платформи Microsoft365Alexander Babich
 
M365: Роздаткові матеріали
M365: Роздаткові матеріалиM365: Роздаткові матеріали
M365: Роздаткові матеріалиAlexander Babich
 
Meet&Code - VR, метавсесвіт та криптовалюти (1).pptx
Meet&Code - VR, метавсесвіт та криптовалюти (1).pptxMeet&Code - VR, метавсесвіт та криптовалюти (1).pptx
Meet&Code - VR, метавсесвіт та криптовалюти (1).pptxAlexander Babich
 
Ви обрали професію програміста
Ви обрали професію програмістаВи обрали професію програміста
Ви обрали професію програмістаAlexander Babich
 
Змішане навчання в ППФК
Змішане навчання в ППФКЗмішане навчання в ППФК
Змішане навчання в ППФКAlexander Babich
 
Формування професійних інтересів студентів
Формування професійних інтересів студентівФормування професійних інтересів студентів
Формування професійних інтересів студентівAlexander Babich
 
День відкритих дверей' 2021
День відкритих дверей' 2021День відкритих дверей' 2021
День відкритих дверей' 2021Alexander Babich
 
06. Обучение и сертификация по Azure
06. Обучение и сертификация по Azure06. Обучение и сертификация по Azure
06. Обучение и сертификация по AzureAlexander Babich
 
05.Внедрение Azure
05.Внедрение Azure05.Внедрение Azure
05.Внедрение AzureAlexander Babich
 
04.Службы Azure - подробнее
04.Службы Azure - подробнее04.Службы Azure - подробнее
04.Службы Azure - подробнееAlexander Babich
 
03.Сколько стоит облако
03.Сколько стоит облако03.Сколько стоит облако
03.Сколько стоит облакоAlexander Babich
 

More from Alexander Babich (20)

Актуальні курси з мого арсеналу (Бабич О.В.)
Актуальні курси з мого арсеналу (Бабич О.В.)Актуальні курси з мого арсеналу (Бабич О.В.)
Актуальні курси з мого арсеналу (Бабич О.В.)
 
M365: Word, Excel, PowerPoint...
M365: Word, Excel, PowerPoint...M365: Word, Excel, PowerPoint...
M365: Word, Excel, PowerPoint...
 
M365: Інші сервіси та застосунки
M365: Інші сервіси та застосункиM365: Інші сервіси та застосунки
M365: Інші сервіси та застосунки
 
M365: OneDrive
M365: OneDriveM365: OneDrive
M365: OneDrive
 
M365: Завершення
M365: ЗавершенняM365: Завершення
M365: Завершення
 
M365: SharePoint
M365: SharePointM365: SharePoint
M365: SharePoint
 
M365: рекомендації
M365: рекомендаціїM365: рекомендації
M365: рекомендації
 
M365: Огляд платформи Microsoft365
M365: Огляд платформи Microsoft365M365: Огляд платформи Microsoft365
M365: Огляд платформи Microsoft365
 
M365: Вступ
M365: ВступM365: Вступ
M365: Вступ
 
M365: Роздаткові матеріали
M365: Роздаткові матеріалиM365: Роздаткові матеріали
M365: Роздаткові матеріали
 
Meet&Code - VR, метавсесвіт та криптовалюти (1).pptx
Meet&Code - VR, метавсесвіт та криптовалюти (1).pptxMeet&Code - VR, метавсесвіт та криптовалюти (1).pptx
Meet&Code - VR, метавсесвіт та криптовалюти (1).pptx
 
Ви обрали професію програміста
Ви обрали професію програмістаВи обрали професію програміста
Ви обрали професію програміста
 
Змішане навчання в ППФК
Змішане навчання в ППФКЗмішане навчання в ППФК
Змішане навчання в ППФК
 
Формування професійних інтересів студентів
Формування професійних інтересів студентівФормування професійних інтересів студентів
Формування професійних інтересів студентів
 
День відкритих дверей' 2021
День відкритих дверей' 2021День відкритих дверей' 2021
День відкритих дверей' 2021
 
Спробуйте Python
Спробуйте PythonСпробуйте Python
Спробуйте Python
 
06. Обучение и сертификация по Azure
06. Обучение и сертификация по Azure06. Обучение и сертификация по Azure
06. Обучение и сертификация по Azure
 
05.Внедрение Azure
05.Внедрение Azure05.Внедрение Azure
05.Внедрение Azure
 
04.Службы Azure - подробнее
04.Службы Azure - подробнее04.Службы Azure - подробнее
04.Службы Azure - подробнее
 
03.Сколько стоит облако
03.Сколько стоит облако03.Сколько стоит облако
03.Сколько стоит облако
 

XSLT - 3

  • 1. XML to HTML - преобразования http://ProductivityBlog.com.ua
  • 2. О чем пойдет речь ▪Простые преобразования ▪Циклы, форматирование, таблицы и оформление ▪Фильтры и условия ▪Визуальное XML to HTML преобразование co StyleVision
  • 3. Файлы и инструменты Файлы практических работ в файле XSLT_3.zip в папке Practice XMLSpy, StyleVision из пакета ALTOVA MissionKit
  • 4. Простые преобразования ▪ <xsl:stylesheet> ▪ <xsl:output> ▪ Практика ▪ <xsl:template> ▪ <html> ▪ <xsl:value-of>
  • 5. <xsl:stylesheet> ▪ Кое-что будет повторяться, но это даже хорошо ▪ XSLT-файлы – это XML-файлы ▪ Тег верхнего уровня <xsl:stylesheet version=“1.0” xmlns:xsl=“http://www.w3.org/1999/XSL/Transform”> </xsl:stylesheet>
  • 6. <xsl:output> ▪ Непосредственно вложен в корневой элемент ▪ Задает формат для выходного файла ▪ method – тип файла ▪ xml, html, text ▪ encoding – кодировка ▪ indent – отступы тегов для лучшей читабельности <xsl:output method=“xml” version=“1.0” encoding=“UTF-8” indent=“yes”/>
  • 7. Практика – создание XSLT-файла ▪Создать новый файл в XMLSpy ▪выбрать XSLT 1.0 ▪выбрать Generic XSL/XSLT Transformation ▪ В теге xsl:output поменять атрибут method на html ▪Сохранить файл под именем xml2html1.xslt Готовый файл можно найти в папке Chapter3transformations
  • 8. <xsl:template> ▪ Определяет какие данные войдут в результирующий файл ▪ Чтобы взять все данные из исходного файла: <xsl:template match=“/”> </xsl:template>
  • 9. <html> ▪ Внутри xsl:template настраивают содержимое выходного файла ▪ Для HTML файла: <html> <head> <title></title> </head> <body> </body> </html> ▪ XMLSpy добавит head, title и body автоматически при добавлении html
  • 10. <xsl:value-of> ▪ Помещает в результирующий файл данные из исходного ▪XPath-выражение в атрибуте select ▪названия – из ИСХОДНОГО файла <xsl:value-of select=“//product[color=‘Yellow’]/name”/>
  • 11. Практика – редактирование XSLT-файла ▪ Добавить ссылку на furniture.xml ▪ Добавить теги xsl:template и html ▪ Добавить заголовок страницы – Yellow furniture ▪ Добавить xsl:value-of в тело документа ▪ Сохранить файл под именем xml2html1.xslt ▪ Запустить трансформацию ▪ Сохранить результат под именем Output1.html ▪ Просмотреть результат в браузере Готовый файл можно найти в папке Chapter3transformations
  • 12. Практика – редактирование XSLT-файла <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> <html> <head> <title>Yellow Furniture</title> </head> <body> <xsl:value-of select="//product[color='Yellow']/name"/> </body> </html> </xsl:template> </xsl:stylesheet> Готовый файл можно найти в папке Chapter3transformations
  • 13. Циклы, форматирование, таблицы и оформление ▪<xsl:for-each> ▪<h1>,<font>,<br/> ▪<table>
  • 14. Практика – подготовка данных ▪ Открыть файл furniture.xml ▪ Переключиться в режим таблицы и просмотреть содержимое файла Готовый файл можно найти в папке Chapter3transformations
  • 15. <xsl:for-each> ▪ Отбирает набор элементов и позволяет перебрать и обработать их один за другим ▪ Пример: <xsl:for-each select=“//product[product_line=‘Boston’]”> <xsl:value-of select=“name”/> </xsl:for-each>
  • 16. <xsl:for-each> ▪ То же самое, но чуть по-другому: <xsl:for-each select= “//product[product_line=‘Boston’]/name”> <xsl:value-of select=“.”/> </xsl:for-each>
  • 17. <h1>, <font>, <br/> ▪ Форматирование данных <h1>A Quick</h1> <h2>Brown Fox</h2> <h3>Jumped<br/>Over</h3> <font style=“font: 16pt Times”> The Lazy<br/>Dogs</fonts>
  • 18. Практика – циклы ▪ Добавить тег xsl:for-each в тело файла xml2html1.xslt ▪ Поменять заголовок на Boston Products ▪ Cохранить как xml2html2.xslt ▪ Запустить трансформацию ▪ Сохранить результат как Output2.html Готовый файл можно найти в папке Chapter3transformations
  • 19. Практика – циклы <head> <title>Boston Products</title> </head> <body> <h1>Furniture Warehouse Product List</h1> <h2>Boston Product Line</h2><br/> <xsl:for-each select="//product[product_line='Boston']"> <font face="Courier" color="#F00000"> <xsl:value-of select="name"/> </font> $ <xsl:value-of select="retail_price"/><br/> </xsl:for-each> </body> Готовый файл можно найти в папке Chapter3transformations
  • 20. <table> ▪ Просто добавляем тег <table> - структура таблицы будет добавлена автоматически <table> <tbody> <tr> <td></td> </tr> </tbody> </table> ▪ Кроме tbody есть еще thead и tfoot ▪ Кроме tr и td есть еще th
  • 21. <table> <table> <thead> <tr bgcolor="#B893F4"> <th>Name</th> <th>Price</th> <th>Color</th> </tr> </thead> <tbody> <xsl:for-each select="//product"> <tr> <td bgcolor="#D9D2FF"><xsl:value-of select="name"/></td> <td bgcolor="#F9DFFF">$ <xsl:value-of select="retail_price"/></td> <td><xsl:value-of select="color"/></td> </tr> </xsl:for-each> </tbody> </table>
  • 22. Практика – таблицы ▪ В файл xml2html2.xslt добавить тег <table>, как показано на предыдущем слайде ▪ Cохранить как xml2html3.xslt ▪ Запустить трансформацию ▪ Сохранить результат как Output3.html Готовый файл можно найти в папке Chapter3transformations
  • 23. Вложенные циклы, условия, поиск элементов ▪ Чтобы просмотреть все комнаты для каждого продукта нужны вложенные циклы <xsl:for-each select=“//product”> <xsl:for-each select=“room”> <xsl:value-of select=“.”/> </xsl:for-each> </xsl:for-each>
  • 24. Вложенные циклы, условия, поиск элементов ▪ Добавляем запятые между комнатами для каждого продукта нужны вложенные циклы <xsl:for-each select=“//product”> <xsl:for-each select=“room”> <xsl:value-of select=“.”/> <xsl:if test=“position()!=last()”/>,</xsl:if> </xsl:for-each> <br/> </xsl:for-each>
  • 25. Практика – таблицы ▪ В файл xml2html3.xslt добавить вложенные циклы, как показано на предыдущем слайде ▪ Cохранить как xml2html4.xslt ▪ Запустить трансформацию ▪ Сохранить результат как Output4.html Готовый файл можно найти в папке Chapter3transformations
  • 26. Практика – использование таблицы стилей ▪ Добавить CSS-стили в тег <head> ▪ Использовать добавленные классы для стилизации таблицы ▪ Cохранить как xml2html5.xslt ▪ Запустить трансформацию ▪ Сохранить результат как Output5.html Готовый файл можно найти в папке Chapter3transformations
  • 27. Практика – использование таблицы стилей <style type="text/css"> body { font-family : Arial ; font-size : 13px ; } table { border-collapse : collapse ; } table, th, td { border : 1px ; border-color : #666 ; border-style : solid ; } td { padding : 5px ; } .Title { color : #FFF ; } </style> Готовый файл можно найти в папке Chapter3transformations <thead class="Title"> … <tfoot class="Title"> <tr style="background-color:#B893F4"> <th>===</th> <th>===</th> <th>===</th> </tr> </tfoot>
  • 29. <xsl:if> ▪ Изменение результирующих значений в зависимости от истинности условия ▪по сути, упрощенный условный оператор ▪ нет ветви else ▪test – условие (TRUE или FALSE)
  • 30. <xsl:if> - пример <xsl:if test=“product_line!=‘Boston’ and product_line!=‘Albany’”> </xsl:if>
  • 31. <xsl:sort> ▪ Сортировка набора элементов. часто – внутри цикла <xsl:for-each> ▪select – по какому ключу сортировать ▪ может быть несколько ▪order – порядок сортировки ▪data-type – название говорит за себя ▪ number или text (по умолчанию)
  • 32. <xsl:sort> - пример <xsl:for-each select=“//product”> <xsl:sort select=“retail_price” data-type=“number”/> </xsl:for-each>
  • 33. ▪ Добавить в файл xml2html5.xslt теги xsl:if для удаления двух продуктовых линий как показано на одном из предыдущих слайдов ▪ Изменить заголовок файла на All Products except Boston and Albany Product Lines ▪ Запустить преобразование ▪ Внутрь цикла добавить сортировку по полю retail_price ▪ Запустить преобразование ▪ Сохранить файл как xml2html6.xslt ▪ Сохранить результат как Output6.html Практика – фильтрация и сортировка данных Готовый файл можно найти в папке Chapter3transformations
  • 34. <xsl:choose> ▪ Проверка нескольких условий – аналог оператора варіанта ▪xsl:when с атрибутом test ▪xsl:otherwise ▪ необязательно, но это хорошая практика
  • 35. <xsl:choose> - пример <xsl:choose> <xsl:when test=“retail_price &lt; 200”>Budget</xsl:when> <xsl:when test=“retail_price &lt; 600”>Standard</xsl:when> <xsl:otherwise>Luxury</xsl:otherwise> <xsl:choose>
  • 36. ▪ Добавить в тег xsl:choose как показано на предыдущем слайде ▪ Изменить заголовок файла на All Products except Boston and Albany Product Lines ▪ Сохранить файл как xml2html7.xslt ▪ Сохранить результат как Output7.html Практика – добавление категорий Готовый файл можно найти в папке Chapter3transformations
  • 38. ▪ Добавить атрибут style, чтобы раскрасить цены в зависимости от категории ▪ Добавить еще одну таблицу – «легенду» для раскраски ▪ Сохранить файл как xml2html8.xslt ▪ Запустить трансформацию ▪ Сохранить результат как Output8.html Практика – добавление цветов и подписей Готовый файл можно найти в папке Chapter3transformations
  • 40. Визуальное XML to HTML преобразование co StyleVision ▪Воссоздание страницы из файла Output8.html ▪Создание страницы с изображениями и ссылками
  • 41. Цель работы ▪ Получить такой же результат, как в предыдущих примерах, но визуально ▪ Использовать StyleVision
  • 42. ▪ Открыть в StyleVision файл furniture.xml, создать free-flow- документ ▪ Удалить контент, добавить заголовки первого и второго уровней ▪ Добавить таблицу (Dynamic Table) ▪ Выбрать столбцы name, retail_price и room для создания заголовков ▪ Расположить столбцы в указанном выше порядке ▪ В ячейки футера добавить === ▪ Раскрасить ячейки хедера и футера (белый на #B893F4) ▪ В свойствах документа указать шрифт 12pt Arial ▪ Просмотреть результат Практика – добавление таблиц и подписей
  • 43. ▪ Вернуться в режим дизайна ▪ В контекстном меню тега product выбрать Edit Xpath Filter, попробовать варианты (с просмотром результата): ▪ product_line=“Boston” ▪ product_line!="Boston" and product_line!="Albany“ ▪ Отсортировать по полю retail_price ▪ Просмотреть результат Практика – фильтрация и сортировка
  • 44. ▪ C помощью окна Style настроить цвета фона для tcell в каждом столбце ▪ Добавить запятую перед закрывающим тегом в столбце Room ▪ Выделить запятую и в контекстном меню выбрать Enclose with > Condition ▪ Записать выражение position()!=last() ▪ Добавить $ перед контентом столбца Price ▪ Просмотреть результат Практика – форматирование тела таблицы
  • 45. ▪ Выделить содержимое ячейки столбца Price ▪ В окне Style с CTRL кликнуть на text и content ▪ Кликнуть на свойстве color ▪ Нажать кнопку Xpath ▪ Ввести выражение if (.<200) then "green" else if (.>600) then "red" else "black“ ▪ Просмотреть результат Практика – добавление категорий
  • 46. ▪ Добавить * после Price в заголовке второго столбца ▪ После таблицы вставить две пустых строки ▪ Вставить таблицу (статическая, без футера, без whole available width) c двумя столбцами и тремя строками ▪ заголовки: Color, Category ▪ содержимое по строкам: Green|Budget, Black|Standard, Red|Luxury ▪ задать цвета фона и текста для таблицы ▪ Просмотреть результат Практика – добавление легенды
  • 47. ▪ Сохранить результат как xml2html9.sps ▪ Cохранить результат как Output9.html ▪ Cгенерировать и сохранить также RTF и PDF - файлы Практика – сохранение результата
  • 48. Цель работы ▪ Мы хотим воссоздать список книг (reading_list.xml) из предыдущего модуля, но в более красивой форме ▪ Добавим изображение обложки и ссылку на описание книги в Википедии ▪ Хорошая идея – просмотреть файл в XMLSpy, в меню File выбрать XSLT и затем Produce HTML, RTF or PDF ▪ В StyleVision добавить reading_list.xml
  • 49. ▪ Добавить заголовок ▪ Добавить перед заголовком картинку book_spine.png, изменить ее размер ▪ Перетащить элемент book из окна Shema Tree и выбрать Create Table ▪ Переименовать заголовки столбцов ▪ Просмотреть результат Практика – добавление подписей, картинок и таблиц
  • 50. ▪ Кликнуть на теге title и в контекстном меню выбрать Enclose with > Hyperlink ▪ Выбрать вариант Static and Dynamic ▪статическая часть: http://en.wikipedia.org/wiki/ ▪динамическая: /wiki/book ▪ Просмотреть результат, попробовать перейти по гиперссылкам Практика – добавление гиперссылок
  • 51. ▪ Удалить все содержимое ячейки wiki ▪ Вставить в нее картинку ▪динамическая ссылка ▪ wiki/picture ▪ Просмотреть результат ▪ В окне Style изменить ширину и высоту на 1.5in ▪ Просмотреть результат Практика – добавление картинок
  • 52. ▪ Сохранить результат (Save Design) как xml2html10.sps ▪ Cохранить результат как Output10.html ▪ Cгенерировать и сохранить также RTF и PDF - файлы Практика – сохранение результата
  • 53. Подводим итоги ▪ Мы узнали как выполнить XML to HTML-преобразование ▪ Познакомились с StyleVision ▪ Изучили возможности по формированию документа ▪ Научились генерировать также RTF и PDF-файлы

Editor's Notes

  1. The correct way to declare an XSL style sheet according to the W3C XSLT Recommendation is: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> or: <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">