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

ЖАНРЫ

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

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

Шрифт:

#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>

<th>Trainer</th>

</tr>

<tr>

<td>Herby</td>

<td>elephant</td>

<td>1992-04-23</td>

<td>

<table>

<tr><th>name:</th><td>Dr. Hal Brown</td></tr>

<tr><th>phone:</th><td>(801)595-9627</td></tr>

</table>

</td>

<td>

<table>

<tr><th>name:</th><td>Bob Fisk</td></tr>

<tr><th>phone:</th><td>(801)881-2260</td></tr>

</table>

</td>

</tr>

<tr>

<td>Sheldon</td>

<td>parrot</td>

<td>1998-09-30</td>

<td>

<table>

<tr><th>name:</th><td>Dr. Kevin Wilson</td></tr>

<tr><th>phone:</th><td>(801)466-6498</td></tr>

</table>

</td>

<td>

<table>

<tr><th>name:</th><td>Eli Wendel</td></tr>

<tr><th>phone:</th><td>(801)929-2506</td></tr>

</table>

</td>

</tr>

<tr>

<td>Dippy</td>

<td>penguin</td>

<td>2001-06-08</td>

<td>

<table>

<tr><th>name:</th><td>Dr. Barbara Swayne</td></tr>

<tr><th>phone:</th><td>(801)459-7746</td></tr>

</table>

</td>

<td>

<table>

Поделиться с друзьями: