Д. Стефенс - C++. Сборник рецептов

Тут можно читать онлайн Д. Стефенс - C++. Сборник рецептов - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство КУДИЦ-ПРЕСС, год 2007. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    C++. Сборник рецептов
  • Автор:
  • Жанр:
  • Издательство:
    КУДИЦ-ПРЕСС
  • Год:
    2007
  • Город:
    Москва
  • ISBN:
    5-91136-030-6
  • Рейтинг:
    3.9/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Д. Стефенс - C++. Сборник рецептов краткое содержание

C++. Сборник рецептов - описание и краткое содержание, автор Д. Стефенс, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Данная книга написана экспертами по C++ и содержит готовые рецепты решения каждодневных задач для программистов на С++. Один из авторов является создателем библиотеки Boost Iostreams и нескольких других библиотек C++ с открытым исходным кодом. В книге затрагивается множество тем, вот лишь некоторые из них: работа с датой и временем; потоковый ввод/вывод; обработка исключений; работа с классами и объектами; сборка приложений; синтаксический анализ XML-документов; программирование математических задач. Читатель сможет использовать готовые решения, а сэкономленное время и усилия направить на решение конкретных задач.

C++. Сборник рецептов - читать онлайн бесплатно полную версию (весь текст целиком)

C++. Сборник рецептов - читать книгу онлайн бесплатно, автор Д. Стефенс
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Например, представим, что требуется с помощью веб-браузера просматривать список животных цирка из примера 14.1. Это легко сделать с помощью XSLT В примере 14.19 приводится таблица стилей XSLT, которая на входе принимает документ XML, такой как animals.xml , и формирует документ HTML, содержащий таблицу, в каждой строке которой описывается одно животное с указанием клички, вида, даты рождения, ветеринара и дрессировщика. Пример 14.20 показывает, как можно использовать библиотеку Xalan, чтобы воспользоваться этой таблицей стилей для документа animals.xml . В примере 14.21 приводится HTML, сгенерированный программой из примера 14.20; этот HTML переформатирован для лучшего восприятия.

Пример 14.19. Таблица стилей для animals.xml

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

Feldman Family Circus Animals

Name Species Date of Birth Veterinarian Trainer
name:
phone:

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

#include

#include // cout

#include

#include

#include

#include

#include

#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

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

Feldman Family Circus Animals

Name Species Date of Birth Veterinarian Trainer
Herby elephant 1992-04-23
name: Dr. Hal Brown
phone: (801)595-9627
name: Bob Fisk
phone: (801)881-2260
Sheldon parrot 1998-09-30
name: Dr. Kevin Wilson
phone: (801)466-6498
name: Eli Wendel
phone: (801)929-2506
Dippy penguin 2001-06-08
name: Dr. Barbara Swayne
phone: (801)459-7746
name: Ben Waxman
phone: (801)882-3549
Обсуждение

XSL-преобразование (стандарт XSLT) представляет собой язык преобразования документов XML в другие документы XML. XSLT является одним из элементов семейства спецификаций расширяемых языков описания таблиц стилей (Extensible Stylesheet Language — XSL), который обеспечивает базовые средства для визуального представления документов XML Однако XSLT полезен не только при форматировании; например, он используется веб-серверами при генерации HTML-документов «на лету» и такими системами генерации документов, как DocBook.

Преобразования XSLT представляются в виде документов XML, называемых таблицами стилей (stylesheets) . Таблица стилей используется для обработки исходного документа и формирования выходного документа (result document) . Таблица стилей состоит из набора шаблонов, которым соответствуют узлы исходного документа и которые применяются для получения фрагментов выходного документа. Шаблоны рекурсивно применяются к исходному документу, генерируя фрагменты выходного документа один за другим, пока не будет обнаружено ни одного соответствия. Условия соответствия записываются с помощью языка XPath, предназначенного для извлечения информационных строк, чисел, булевых значений и наборов узлов из документов XML.

Таблица стилей представленная в примере 14.19, состоит из трех шаблонов. В главном шаблоне атрибут matchравен /, т.е. он соответствует корню исходною документа, а именно узлу, который является родительским узлом по отношению к корневому элементу документа и любым инструкциям обработки и комментариям верхнего уровня. При применении этого шаблона генерируется фрагмент документа HTML, содержащий заголовок «Животные цирка Feldman Family Circus» и таблицу с одной строкой, состоящей из пяти элементов thс метками Name, Species, Date of Birth, Veterinarianи trainer. Этот шаблон содержит элемент apply-templates, которому соответствует атрибут animal. Это приводит к тому, что второй шаблон таблицы стилей с атрибутом соответствия animal— будет применяться один раз к каждому элементу animal, дочернему по отношению к корневому документу, формируя строку таблицы для каждого дочернего элемента. Строка, сгенерированная для элемента animal, состоит из пяти элементов td. Первые три элемента tdсодержат текстовое значение дочерних элементов animal( name, speciesи dateOfBirth), извлекаемое с помощью инструкции XSLT value-of. Последние два элемента tdсодержат элементы таблицы, полученные путем применения третьего шаблона таблицы стилей с атрибутом соответствия veterinarian|trainer, применяемого к дочерним элементам животного veterinarianи trainer.

Хотя в примере 14.20 мною указаны локальные файлы для таблицы стилей, исходного документа и выходного документа, XSLTInputSourcesи XSLTResultTargetsмогут быть сконструированы из потоков стандартной библиотеки C++, позволяя XalanTransformerпринимать поток ввода и генерировать результат в произвольном месте. Более того, вместо получения на входе экземпляров XSLTInputSourceконвертор XalanTransformerможет работать с предварительно скомпилированной таблицей стилей, представляющей экземпляр xalanc::XalanCompiledStylesheet, и с исходным документом, прошедшим обработку парсером и представленным экземпляром xalanc::XalanParsedSource. Это проиллюстрировано в примере 14.22. Если требуется применять одну таблицу стилей к нескольким исходным документам, гораздо более эффективный результат получается при использовании XalanCompiledStylesheet, чем XSLTInputSource.

Пример 14.22. Выполнение преобразования XSLT с применением предварительно откомпилированной таблицы стилей

/*

* те же операторы #include, которые использовались в примере 14.20

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Д. Стефенс читать все книги автора по порядку

Д. Стефенс - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге C++. Сборник рецептов, автор: Д. Стефенс. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x