C++. Сборник рецептов
Шрифт:
<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)
Преобразования XSLT представляются в виде документов XML, называемых таблицами стилей (stylesheets). Таблица стилей используется для обработки исходного документа и формирования выходного документа (result document). Таблица стилей состоит из набора шаблонов, которым соответствуют узлы исходного документа
Таблица стилей представленная в примере 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
Поделиться:
Популярные книги
Секретарша генерального
Любовные романы:
современные любовные романы
эро литература
короткие любовные романы
8.46
рейтинг книги
6 Секретов мисс Недотроги
2. Мисс Недотрога
Любовные романы:
любовно-фантастические романы
эро литература
7.34
рейтинг книги
Измена. Ты меня не найдешь
2. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Инвестиго, из медика в маги
1. Инвестиго
Фантастика:
фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Генерал-адмирал. Тетралогия
Генерал-адмирал
Фантастика:
альтернативная история
8.71
рейтинг книги
Вернуть невесту. Ловушка для попаданки
1. Вернуть невесту
Любовные романы:
любовно-фантастические романы
8.49
рейтинг книги
Беглец
1. Совсем не герой
Фантастика:
фэнтези
попаданцы
8.94
рейтинг книги
Избранное. Компиляция. Книги 1-11
Фантастика:
фэнтези
героическая фантастика
5.00
рейтинг книги
Я сделаю это сама
1. Магический XVIII век
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
"Фантастика 2025-1". Книги 1-30
Фантастика 2025. Компиляция
Фантастика:
фэнтези
боевая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Бастард Императора. Том 6
6. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Локки 4 Потомок бога
4. Локки
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Брачный сезон. Сирота
Любовные романы:
любовно-фантастические романы
7.89
рейтинг книги
Владыка морей ч.1
10. Третий Рим
Фантастика:
попаданцы
альтернативная история
5.00