Алексей Валиков - Технология XSLT

Тут можно читать онлайн Алексей Валиков - Технология XSLT - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство БХВ-Петербург, год 2002. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Технология XSLT
  • Автор:
  • Жанр:
  • Издательство:
    БХВ-Петербург
  • Год:
    2002
  • Город:
    Санкт-Петербург
  • ISBN:
    нет данных
  • Рейтинг:
    4.75/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Алексей Валиков - Технология XSLT краткое содержание

Технология XSLT - описание и краткое содержание, автор Алексей Валиков, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Книга посвящена разработке приложений для преобразования XML-документов с использованием XSLT — расширяемого языка стилей для преобразований. Обсуждается применение языков XSLT и XPath в решении практических задач: выводу документов в формате HTML, использованию различных кодировок для интернационализации и, в частности, русификации приложений, вопросам эффективности существующих подходов для решения проблем преобразования. Для иллюстрации материала используется большое количество примеров.

Для начинающих и профессиональных программистов

Технология XSLT - читать онлайн бесплатно полную версию (весь текст целиком)

Технология XSLT - читать книгу онлайн бесплатно, автор Алексей Валиков
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Область нумерации метода multipleопределяется так же, как и в случае с методом single: учитываются только потомки ближайшего предка текущего узла, удовлетворяющего паттерну, указанному в атрибуте from.

Вычисление списка номеров узлов выполняется в два этапа:

□ На первом этапе выбирается множество нумеруемых узлов, удовлетворяющее следующим условиям:

• его узлы принадлежат оси навигации ancestor-or-selfтекущего узла;

• его узлы соответствуют паттерну count;

• его узлы принадлежат области подсчета.

□ На втором этапе для каждого узла нумеруемого множества вычисляется позиция среди собратьев. Позиция нумеруемого узла будет равна 1плюс количество узлов, принадлежащих его оси навигации preceding-siblingи соответствующих паттерну count.

Пример

Для демонстрации вычисления номеров на нескольких уровнях дерева документа проследим за выполнением инструкции

format=" 1.1."

level="multiple"

count="doc|chapter|para"

from="doc"/>

при обработке того же элемента para.

Прежде всего, надо определить область подсчета. Значением атрибута fromявляется паттерн doc, значит, подсчет будет вестись среди всех потомков ближайшего к текущему элементу paraпредка, который является элементом doc. Это множество выделено на рис. 8.6 штрих-пунктирной линией.

Рис 86 Определение области подсчета Следующим шагом выберем узлы - фото 63

Рис. 8.6. Определение области подсчета

Следующим шагом выберем узлы, принадлежащие оси навигации ancestor-or-selfтекущего узла para и удовлетворяющие паттерну doc|chapter|para. Это множество будет включать сам текущий элемент, а также его предки chapterи doc. На рис. 8.7 они обведены пунктиром.

Рис 87 Первый шаг вычисления номера Следующим шагом оставим только те из - фото 64

Рис. 8.7. Первый шаг вычисления номера

Следующим шагом оставим только те из выбранных узлов, которые входят в область подсчета. Эти узлы обведены на рис. 8.8 пунктиром.

Рис 88 Второй шаг вычисления номера Мы получили множество узлов состоящее - фото 65

Рис. 8.8. Второй шаг вычисления номера

Мы получили множество узлов, состоящее всего из двух элементов — chapterи paraвследствие того, что элемент docбыл исключен как не входящий в область подсчета. Выделим множества пересчитываемых узлов, предшествующих нумеруемым элементам (рис. 8.9).

Рис 89 Третий шаг вычисления номера В этом примере элемент chapter так же - фото 66

Рис. 8.9. Третий шаг вычисления номера

В этом примере элемент chapter, так же как и элемент para, будет иметь номер 2. Соответственно, результатом выполнения инструкции xsl:numberв этом случае будет строка

2.2.paragraph 14

Метод any

Метод anyиспользуется для того, чтобы вычислить номер узла, основываясь на его позиции среди всех учитываемых узлов элемента.

Областью нумерации этого метода будет множество всех узлов, следующих в порядке просмотра документа за первым предком текущего узла, который удовлетворяет паттерну, указанному в атрибуте from.

Номер вычисляется как 1плюс количество узлов области подсчета, удовлетворяющих паттерну countи предшествующих в порядке просмотра документа текущему узлу.

Пример

В качестве примера применения метода anyвычислим порядковый номер элемента paraсреди всех элементов документа, начиная со второй главы. Инструкцию такого рода мы запишем в виде

format=" 1."

level="any"

count="*"

from="chapter[2]"/>

При ее выполнении мы сначала определим область, в которой будут подсчитываться узлы (обведены штрих-пунктирной линией на рис. 8.10).

Рис 810 Определение области подсчета узлов Следующим шагом выделим - фото 67

Рис. 8.10. Определение области подсчета узлов

Следующим шагом выделим подмножество области подсчета, предшествующее в порядке просмотра текущему узлу para(рис. 8.11).

Рис 811 Первый шаг вычисления номера Выделенное множество содержит 11 узлов - фото 68

Рис. 8.11. Первый шаг вычисления номера

Выделенное множество содержит 11 узлов, значит, искомый номер будет равен 12.

Перед тем, как перейти к рассмотрению способов форматирования номеров, приведем итоговый пример (листинг 8.34), в котором в шаблонах будут использоваться все три метода нумерации.

Листинг 8.34. Шаблон, использующий разные методы нумерации

version="1.0"

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

Resulting document

==================

level="multiple"

count="chapter|section"/>

format=" a) "

level="any"

count="para"/>

Опишем словесно нумерацию, которая будет применяться в этом преобразовании.

□ Элементы chapterбудут нумероваться в соответствии со своей позицией среди других элементов chapterтого же уровня.

□ Элементы sectionбудут нумероваться при помощи многоуровневой нумерации — номер будет состоять из номера элемента chapterи номера самого элемента section.

□ Элементы paraбудут нумероваться исходя из своей позиции среди всех остальных элементов paraвне зависимости от того, на каких уровнях в документе они находятся.

Результатом применения этого преобразования к документу, приведенному в листинге 8.31, будет следующий текст.

Листинг 8.35. Выходящий документ

Resulting document

==================

1. First chapter

1.1 First section

a) paragraph 1

b) paragraph 2

c) paragraph 3

1.2. Second section

d) paragraph 4

e) paragraph 5

2. Second chapter

2.1 Third section

f) paragraph 6

g) paragraph 7

h) paragraph 8

i) paragraph 9

2.2 Forth section

j) paragraph 10

k) paragraph 11

l) paragraph 12

2.3 Fifth section

m) paragraph 13

n) paragraph 14

o) paragraph 15

p) paragraph 16

3. Third chapter

3.1 Sixth section

q) paragraph 17

r) paragraph 18

Форматирование номеров

Возвращаясь немного назад, напомним, что результатом первого этапа выполнения xsl:numberявляется список номеров, который может быть пустым или содержать одно или несколько чисел. Несложно увидеть, что количество номеров в этом списке будет зависеть от следующих условий.

□ Список номеров будет пустым, если в области нумерации не оказалось нумеруемых узлов.

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

Интервал:

Закладка:

Сделать


Алексей Валиков читать все книги автора по порядку

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




Технология XSLT отзывы


Отзывы читателей о книге Технология XSLT, автор: Алексей Валиков. Читайте комментарии и мнения людей о произведении.


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

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