Extensible Stylesheet Language /Transformations.
Стилевая технология, предназначенная для трансформации XML-документов в другие форматы.
Таблицы стилей XSL создаются по правилам XML-документов
Таблицы стилей XSL состоят из набора шаблонов.
// Загрузка исходного XML-документа
$xml = new DomDocument();
$xml->load("catalog.xml");
// Загрузка таблицы стилей XSL
$xsl = new DomDocument();
$xsl->load("catalog.xsl");
// Создание XSLT процессора
$processor = new XSLTProcessor();
// Загрузка XSL в процессор
$processor->importStylesheet($xsl);
// Выполнение преобразования
echo $processor->transformToXML($xml);
ПРИМЕР.
catalog.xml
<?xml version="1.0" encoding="utf-8"?>
<catalog>
<book>
<author>Алекс Гомер</author>
<title>XML и IE11</title>
<pubyear>2000</pubyear>
<price>200</price>
</book>
<book>
<author>Алекс Хоумер</author>
<title>Dimanic HTML</title>
<pubyear>2004</pubyear>
<price>120</price>
</book>
<book>
<author>Алексей Валиков</author>
<title>Технология XSLT</title>
<pubyear>2006</pubyear>
<price>150</price>
</book>
<book>
<author>Стивен Холзнер</author>
<title>XSLT</title>
<pubyear>2005</pubyear>
<price>170</price>
</book>
<book>
<author>Михаил Масленников</author>
<title>Практическая криптография</title>
<pubyear>2009</pubyear>
<price>200</price>
</book>
<book>
<author>Джерри Хонейкатт</author>
<title>Реест Windows XP</title>
<pubyear>2007</pubyear>
<price>250</price>
</book>
<book>
<author>Уолтер Брюс</author>
<title>Windows XP. Средства повышения производительности</title>
<pubyear>2008</pubyear>
<price>250</price>
</book>
<book>
<author>Андрей Попов</author>
<title>Windows Script Host для Windows 2000/XP</title>
<pubyear>2002</pubyear>
<price>220</price>
</book>
<book>
<author>Джон Уокенбах</author>
<title>Excel 2002. Библия пользователя</title>
<pubyear>2003</pubyear>
<price>260</price>
</book>
<book>
<author>Сандра Э. Эдди</author>
<title>XML. Справочник</title>
<pubyear>2004</pubyear>
<price>100</price>
</book>
<book>
<author>Майкл Ховард</author>
<title>Разработка защищенных Web-приложений на платформе Windows 2000</title>
<pubyear>2006</pubyear>
<price>250</price>
</book>
<book>
<author>Михаэль Зеебергер-Вайхсельбаум</author>
<title>WAP-программирование на языке WML</title>
<pubyear>2005</pubyear>
<price>150</price>
</book>
</catalog>
catalog.xsl
<?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"
doctype-public="-//W3C//DTD HTML 4.01//EN"
doctype-system="http://www.w3.org/TR/html4/strict.dtd"
indent="yes" />
<!--
Шаблон корневого элемента
-->
<xsl:template match="/">
<html>
<head>
<title>Наши книги</title>
<style type="text/css">
* {
margin: 0px;
padding: 0px
}
h1 {
padding: 10px;
text-align: center;
background-color: #ccf
}
table {
margin: 10px;
border-collapse: collapse
}
td {
border: 1px solid gray;
padding: 5px
}
thead td {
text-align: center;
background-color: #ccf;
font-weight: bold
}
#colTitle {
width: 300px
}
#colAutor {
width: 300px
}
#colPubYear {
width: 100px
}
#colPrice {
width: 100px
}
.expenceBook td {
background-color: yellow
}
</style>
</head>
<body>
<h1>Наши книги</h1>
<table>
<thead>
<td id="colTitle">Наименование</td>
<td id="colAutor">Автор</td>
<td id="colPubYear">Год издания</td>
<td id="colPrice">Цена</td>
</thead>
<tbody>
<xsl:apply-templates select="/catalog/book" />
</tbody>
</table>
</body>
</html>
</xsl:template>
<!--
Шаблон отрисовки книги стоимостью менее 200 руб.
-->
<xsl:template match="book[price < 200]">
<tr>
<xsl:apply-templates select="./*" />
</tr>
</xsl:template>
<!--
Шаблон отрисовки книги стоимостью более 200 руб.
-->
<xsl:template match="book[price > 200]">
<tr class="expenceBook">
<xsl:apply-templates select="./*" />
</tr>
</xsl:template>
<!--
Шаблон отрисовки дочерних элементов книги
-->
<xsl:template match="book/*">
<td>
<xsl:value-of select="." />
</td>
</xsl:template>
</xsl:stylesheet>
Объединим два файла.
xslt.php
<?php
// Создание объекта XML
$xml = new DomDocument();
// Загрузка XML документа
$xml->load("catalog.xml");
// Создание объекта XSL
$xsl = new DomDocument();
// Загрузка XSL документа
$xsl->load("catalog.xsl");
// Создание XSLT парсера
$processor = new XSLTProcessor();
// Загрузка XSL объекта
$processor->importStylesheet($xsl);
// Преобразование
echo $processor->transformToXML($xml);
?>
Стилевая технология, предназначенная для трансформации XML-документов в другие форматы.
Таблицы стилей XSL создаются по правилам XML-документов
Таблицы стилей XSL состоят из набора шаблонов.
// Загрузка исходного XML-документа
$xml = new DomDocument();
$xml->load("catalog.xml");
// Загрузка таблицы стилей XSL
$xsl = new DomDocument();
$xsl->load("catalog.xsl");
// Создание XSLT процессора
$processor = new XSLTProcessor();
// Загрузка XSL в процессор
$processor->importStylesheet($xsl);
// Выполнение преобразования
echo $processor->transformToXML($xml);
ПРИМЕР.
catalog.xml
<?xml version="1.0" encoding="utf-8"?>
<catalog>
<book>
<author>Алекс Гомер</author>
<title>XML и IE11</title>
<pubyear>2000</pubyear>
<price>200</price>
</book>
<book>
<author>Алекс Хоумер</author>
<title>Dimanic HTML</title>
<pubyear>2004</pubyear>
<price>120</price>
</book>
<book>
<author>Алексей Валиков</author>
<title>Технология XSLT</title>
<pubyear>2006</pubyear>
<price>150</price>
</book>
<book>
<author>Стивен Холзнер</author>
<title>XSLT</title>
<pubyear>2005</pubyear>
<price>170</price>
</book>
<book>
<author>Михаил Масленников</author>
<title>Практическая криптография</title>
<pubyear>2009</pubyear>
<price>200</price>
</book>
<book>
<author>Джерри Хонейкатт</author>
<title>Реест Windows XP</title>
<pubyear>2007</pubyear>
<price>250</price>
</book>
<book>
<author>Уолтер Брюс</author>
<title>Windows XP. Средства повышения производительности</title>
<pubyear>2008</pubyear>
<price>250</price>
</book>
<book>
<author>Андрей Попов</author>
<title>Windows Script Host для Windows 2000/XP</title>
<pubyear>2002</pubyear>
<price>220</price>
</book>
<book>
<author>Джон Уокенбах</author>
<title>Excel 2002. Библия пользователя</title>
<pubyear>2003</pubyear>
<price>260</price>
</book>
<book>
<author>Сандра Э. Эдди</author>
<title>XML. Справочник</title>
<pubyear>2004</pubyear>
<price>100</price>
</book>
<book>
<author>Майкл Ховард</author>
<title>Разработка защищенных Web-приложений на платформе Windows 2000</title>
<pubyear>2006</pubyear>
<price>250</price>
</book>
<book>
<author>Михаэль Зеебергер-Вайхсельбаум</author>
<title>WAP-программирование на языке WML</title>
<pubyear>2005</pubyear>
<price>150</price>
</book>
</catalog>
catalog.xsl
<?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"
doctype-public="-//W3C//DTD HTML 4.01//EN"
doctype-system="http://www.w3.org/TR/html4/strict.dtd"
indent="yes" />
<!--
Шаблон корневого элемента
-->
<xsl:template match="/">
<html>
<head>
<title>Наши книги</title>
<style type="text/css">
* {
margin: 0px;
padding: 0px
}
h1 {
padding: 10px;
text-align: center;
background-color: #ccf
}
table {
margin: 10px;
border-collapse: collapse
}
td {
border: 1px solid gray;
padding: 5px
}
thead td {
text-align: center;
background-color: #ccf;
font-weight: bold
}
#colTitle {
width: 300px
}
#colAutor {
width: 300px
}
#colPubYear {
width: 100px
}
#colPrice {
width: 100px
}
.expenceBook td {
background-color: yellow
}
</style>
</head>
<body>
<h1>Наши книги</h1>
<table>
<thead>
<td id="colTitle">Наименование</td>
<td id="colAutor">Автор</td>
<td id="colPubYear">Год издания</td>
<td id="colPrice">Цена</td>
</thead>
<tbody>
<xsl:apply-templates select="/catalog/book" />
</tbody>
</table>
</body>
</html>
</xsl:template>
<!--
Шаблон отрисовки книги стоимостью менее 200 руб.
-->
<xsl:template match="book[price < 200]">
<tr>
<xsl:apply-templates select="./*" />
</tr>
</xsl:template>
<!--
Шаблон отрисовки книги стоимостью более 200 руб.
-->
<xsl:template match="book[price > 200]">
<tr class="expenceBook">
<xsl:apply-templates select="./*" />
</tr>
</xsl:template>
<!--
Шаблон отрисовки дочерних элементов книги
-->
<xsl:template match="book/*">
<td>
<xsl:value-of select="." />
</td>
</xsl:template>
</xsl:stylesheet>
Объединим два файла.
xslt.php
<?php
// Создание объекта XML
$xml = new DomDocument();
// Загрузка XML документа
$xml->load("catalog.xml");
// Создание объекта XSL
$xsl = new DomDocument();
// Загрузка XSL документа
$xsl->load("catalog.xsl");
// Создание XSLT парсера
$processor = new XSLTProcessor();
// Загрузка XSL объекта
$processor->importStylesheet($xsl);
// Преобразование
echo $processor->transformToXML($xml);
?>
Комментариев нет:
Отправить комментарий