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


Авторские права

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

Здесь можно скачать бесплатно "Д. Стефенс - C++. Сборник рецептов" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование, издательство КУДИЦ-ПРЕСС, год 2007. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Д. Стефенс - C++. Сборник рецептов
Рейтинг:
Название:
C++. Сборник рецептов
Автор:
Издательство:
КУДИЦ-ПРЕСС
Год:
2007
ISBN:
5-91136-030-6
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "C++. Сборник рецептов"

Описание и краткое содержание "C++. Сборник рецептов" читать бесплатно онлайн.



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






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

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

      <tr><th>name:</th><td>Ben Waxman</td></tr>

      <tr><th>phone:</th><td>(801)882-3549</td></tr>

     </table>

    </td>

   </tr>

  </table>

 </body>

</html>

Обсуждение

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

 */


using namespace std;

using namespace xercesc;

using namespace xalanc;


/*

 * Определить XalanInitializer так же, как в примере 14.20

 */

int main() {


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "C++. Сборник рецептов"

Книги похожие на "C++. Сборник рецептов" читать онлайн или скачать бесплатно полные версии.


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

Все книги автора Д. Стефенс

Д. Стефенс - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

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

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

А что Вы думаете о книге? Оставьте Ваш отзыв.