Чтение онлайн

на главную - закладки

Жанры

C++. Сборник рецептов

Когсуэлл Джефф

Шрифт:

<th>Veterinarian</th>

<th>Trainer</th>

</tr>

<xsl:apply-templates match="animal">

</xsl:apply-templates>

</table>

</body>

</html>

 </xsl:template>

 <xsl:template match="animal">

<tr>

<td><xsl:value-of select="name"/></td>

<td><xsl:value-of select="species"/></td>

<td><xsl:value-of select="dateOfBirth"/></td>

<xsl:apply-templates select="veterinarian"/>

<xsl:apply-templates select="trainer"/>

</tr>

 </xsl:template>

 <xsl:template match="veterinarian|trainer">

<td>

<table>

<tr>

<th>name:</th>

<td>

<xsl:value-of select="attribute::name"/>

</td>

</tr>

<tr>

<th>phone:</th>

<td><xsl:value of select="attribute::phone"/></td>

</tr>

</table>

</td>

 </xsl:template>

</xsl:stylesheet>

Пример 14.20.

Применение таблицы стилей animals.xsl для файла animals.xml с использованием библиотеки Xalan

#include <exception>

#include <iostream> // cout

#include <xalanc/Include/PlatformDefinitions.hpp>

#include <xalanc/XalanTransformer/XalanTransformer.hpp>

#include <xalanc/XSLT/XSLTInputSource.hpp>

#include <xalanc/XSLT/XSLTResultTarget.hpp>

#include <xercesc/util/PlatformUtils.hpp>

#include "xerces_strings.hpp" // Пример 14.4

using namespace std;

using namespace xercesc;

using namespace xalanc;

// Утилита RAII, которая инициализирует парсер и
освобождает ресурсы

// при выходе из области видимости

struct XalanInitializer {

 XalanInitializer {

XMLPlatformUtils::Initialize;

XalanTransformer::initialize;

 }

 ~XalanInitializer {

XalanTransformer::terminate;

XMLPlatformUtils::Terminate;

 }

};

int main {

 try {

XalanInitializer init; // Инициализировать Xalan.

XalanTransformer xslt; // Конвертор XSLT.

XSLTInputSource xml("animals.xml"); // Документ XML из

// примера 14.1

XSLTInputSource xsl("animals.xsl"); // Таблица стилей из

// примера 14.19.

XSLTResultTarget html("animals.html"); // Результат выполнения xslt.

// Выполнить преобразование.

if (xslt.transform(xml, xsl, html) != 0) {

cout << "xml error: " << xslt.getLastError << "\n";

}

 } catch (const XMLException& e) {

cout << "xml error " << toNative(e.getMessage) << "\n";

return EXIT_FAILURE;

 } catch (const exception& e) {

cout << e.what << "\n";

return EXIT_FAILURE;

 }

}

Пример 14.21. Документ HTML, сгенерированный программой из примера 14.20

<html>

 <head>

<МЕТА http-equiv="Content Type" content="text/html; charset=UTF-8">

<title>Feldman Family Circus Animals</title>

 </head>

 <body>

<h1>Feldman Family Circus Animals</h1>

<table cellpadding="3" border="1">

<tr>

<th>Name</th>

<th>Species</th>

<th>Date of Birth</th>

<th>Veterinarian</th>

Поделиться:
Популярные книги

Мама из другого мира...

Рыжая Ехидна
1. Королевский приют имени графа Тадеуса Оберона
Фантастика:
фэнтези
7.54
рейтинг книги
Мама из другого мира...

Охотник за головами

Вайс Александр
1. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Охотник за головами

Санек 3

Седой Василий
3. Санек
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Санек 3

Хозяйка старой усадьбы

Скор Элен
Любовные романы:
любовно-фантастические романы
8.07
рейтинг книги
Хозяйка старой усадьбы

Мастер 7

Чащин Валерий
7. Мастер
Фантастика:
фэнтези
боевая фантастика
попаданцы
технофэнтези
аниме
5.00
рейтинг книги
Мастер 7

Девяностые приближаются

Иванов Дмитрий
3. Девяностые
Фантастика:
попаданцы
альтернативная история
7.33
рейтинг книги
Девяностые приближаются

Охота на попаданку. Бракованная жена

Герр Ольга
Любовные романы:
любовно-фантастические романы
5.60
рейтинг книги
Охота на попаданку. Бракованная жена

Метка драконов. Княжеский отбор

Максименко Анастасия
Фантастика:
фэнтези
5.50
рейтинг книги
Метка драконов. Княжеский отбор

Газлайтер. Том 5

Володин Григорий
5. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 5

Сыночек в награду. Подари мне любовь

Лесневская Вероника
1. Суровые отцы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сыночек в награду. Подари мне любовь

Сводный гад

Рам Янка
2. Самбисты
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Сводный гад

Оживший камень

Кас Маркус
1. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Оживший камень

Вдова на выданье

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Вдова на выданье

Мастер клинков. Начало пути

Распопов Дмитрий Викторович
1. Мастер клинков
Фантастика:
фэнтези
9.16
рейтинг книги
Мастер клинков. Начало пути