Нумерация
Нумерация
Нумерация, несомненно, является одной из самых естественных проблем, решаемых при помощи XSLT. Задача нумерации состоит в том, чтобы, исходя из позиции обрабатываемого узла в дереве документа, вычислить по заданным критериям его порядковый номер. В качестве примера такого рода задачи можно привести вывод номеров частей, разделов и глав книги, указание номеров элементов списка или строк таблицы.
Для вычисления порядковых номеров узлов в дереве в XSLT существует несколько способов. В простых случаях для достижения цели бывает достаточно воспользоваться одним из следующих XPath-выражений.
? Для того чтобы получить порядковый номер текущего узла в обрабатываемом множестве, можно использовать функцию position. Обратим внимание, что это будет позиция узла в обрабатываемом в данный момент множестве, а не в дереве исходящего документа.
? Функция count(preceding-sibling::*)+1 возвращает порядковый номер текущего элемента среди других элементов его родителя, иначе говоря, среди его братьев. Путь выборки preceding-sibling::* выбирает множество братских элементов, предшествующих текущему узлу, а функция count вычисляет их количество. Таким образом, значение count(preceding-sibling::*)+1 будет равно 1 для первого элемента (поскольку ему другие элементы не предшествуют), 2 — для второго (ему предшествует один элемент) и так далее.
? Для того чтобы учитывать при подсчете только определенные элементы, можно переписать предыдущее выражение в чуть более строгом виде. Например, выражение, считающее только элементы chapter, будет задаваться следующим образом: (preceding-sibling::chapter) +1.
? Глубина текущего узла от корня дерева может быть вычислена выражением count(ancestor-or-self::node()). Это выражение будет возвращать 1 для корневого узла, 2 для элемента документа и так далее.
Вычислять выражения и выводить вычисленные значения в результирующее дерево следует, как и обычно — при помощи элемента xsl:value-of.
Пример
<xsl:value-of select="count(preceding-sibling::chapter)+1"/>
В более сложных ситуациях бывает необходимо подсчитывать узлы, находящиеся на разных уровнях вложенности или удовлетворяющие определенным условиям, начинать отсчет с заданной позиции в документе и использовать при вычислении номера сложные выражения. Использование XPath в таких случаях может быть очень неудобным — выражения будут слишком громоздкими и вычислять их придется в несколько этапов.
Другим, несравненно более легким и удобным способом нумерации и индексирования узлов является использование элемента xsl:number.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Одноуровневая нумерация
Одноуровневая нумерация Одноуровневая нумерация — это простая нумерация, когда перенумеровываются узлы-братья на одном уровне. Этот тип нумерации установлен по умолчанию. В листинге 5.11 при помощи одноуровневой нумерации перенумеровываются планеты в planets.xml.Листинг 5.11.
Многоуровневая нумерация
Многоуровневая нумерация Элемент <xsl:number> также поддерживает многоуровневую нумерацию — такую как 3.1.2.5 и т. п. Для работы с ней нужно установить атрибут level в «multiple». При помощи атрибута count можно указать, узлы какого типа вы хотите нумеровать, установив этот атрибут в
Нумерация версий WSH
Нумерация версий WSH Скажем несколько слов относительно нумерации версий WSH. Самая первая версия WSH, входившая в качестве стандартного компонента в Windows 98, имела номер 1.0. С другой стороны, эта версия опиралась на языки сценариев JScript и VBScript версии 5.0, которые поддерживались
9.5.1. Нумерация
9.5.1. Нумерация Сначала приведем дополнительные сведения о нумерации жестких дисков в системе Linux (табл. 9.3).Таблица 9.3. Нумерация жестких дисков Тип жесткого диска Старший номер Наименование устройства Младший номер Диск 1 Диск 2 IDE на 1 контроллере 22 /dev/hda и /dev/hdb 0 … 63 64 …
10.3.1 Нумерация и подтверждение
10.3.1 Нумерация и подтверждение Для обеспечения надежной пересылки данных в TCP используются нумерация (numbering) и подтверждение (acknowledgment — ACK). Схема нумерации TCP несколько необычна: каждый пересылаемый по соединению октет рассматривается как имеющий порядковый номер.
Нумерация страниц и разделов
Нумерация страниц и разделов При работе с большими публикациями мы неизбежно сталкиваемся с необходимостью нумерации разделов и страниц. Пытаться выполнить это вручную, конечно же, бессмысленно, поэтому Adobe InDesign содержит необходимые механизмы для автоматической
Нумерация элементов массива
Нумерация элементов массива Если вы не укажете иное, элементы массива индексируются (т.е. нумеруются) начиная с 0; говоря иначе, первым в массиве будет элемент с индексом 0. По этой причине значение, задающее размерность массива в объявлении, должно быть на единицу меньше
Нумерация страниц
Нумерация страниц Если документ состоит более чем из двух страниц, перед распечаткой желательно пронумеровать страницы. Таким образом в нем будет гораздо легче ориентироваться. Для некоторых типов документов, например научных работ, нумерация является
Нумерация строк
Нумерация строк При работе с документами определенного типа (например, с юридическими договорами) иногда бывает необходимо нумеровать не только страницы, но и строки. В Microsoft Word есть возможность автоматической нумерации строк. Для этого сделайте следующее.1. Щелкните на
1.2.4. Нумерация работ и диаграмм
1.2.4. Нумерация работ и диаграмм Все работы модели нумеруются. Номер состоит из префикса и числа. Может быть использован префикс любой длины, но обычно используют префикс А. Контекстная (корневая) работа дерева имеет номер АО. Работы декомпозиции АО имеют номера Al, A2, A3 и т. д.
Разбивка на страницы и нумерация
Разбивка на страницы и нумерация Word разбивает документ на страницы автоматически, руководствуясь параметрами страницы, установленными в меню Файл/Параметры страницы (File/Page Setup). Воспользовавшись этим меню, вы можете изменить такие важные параметры, как отступ текста от
1.2.4. Нумерация работ и диаграмм
1.2.4. Нумерация работ и диаграмм Все работы модели нумеруются. Номер состоит из префикса и числа. Может быть использован префикс любой длины, но обычно используют префикс А. Контекстная (корневая) работа дерева имеет номер АО. Работы i декомпозиции АО имеют номера А1, А2, A3 и т.
Нумерация страниц
Нумерация страниц Текстовый редактор Microsoft Word обладает гибкими инструментами нумерации страниц. С их помощью можно автоматически присваивать номера страницам документа, размещать их в любом месте страницы. При этом возможно использование различных форматов
Нумерация страниц
Нумерация страниц Для нумерации страниц вам нет необходимости вручную проставлять номера на каждой из них, поскольку Word справится с этой задачей намного эффективнее и избавит вас от множества проблем. Чтобы вставить номера страниц, выполните команду Вставка ?