<img src='/images/headquarters.jpg' width='300'/>

При обработке шаблона значения атрибута двойная левая или правая фигурные скобки за пределами выражения будут заменены на одинарную фигурную скобку. Если в шаблоне значения атрибута за пределами выражения обнаружена правая фигурная скобка, но за ней нет второй правой фигурной скобки, фиксируется ошибка. В выражении внутри Literal правая фигурная скобка не воспринимается как завершающая это выражение.

В выражении фигурные скобки рекурсивно не обрабатываются. Например, использовать:

<a href='#{id({@ref})/title}'>

не разрешается. Вместо этого воспользуйтесь просто:

<a href='#{id(@ref)/title}'>

7.7 Нумерация

<!– Category: instruction ->

<xsl:number

level = «single» | «multiple» | «any»

count = pattern

from = pattern

value = number-expression

format = { string }

lang = { nmtoken }

letter-value = { «alphabetic» | «traditional» }

grouping-separator = { char }

grouping-size = { number } />

Чтобы поместить в конечное дерево форматированное число, используется элемент xsl:number. Подставляемое число может быть задано выражением. Атрибут value содержит выражение, которое обрабатывается, а полученный объект преобразуется в число, как при вызове функции number. Затем это число округляется до целого и преобразуется в строку с помощью атрибутов, описанных в [7.7.1 Атрибуты преобразования числа в строку]. В данном контексте значение каждого из этих атрибутов интерпретируется как шаблон значения атрибута. После преобразования полученная строка подставляется в конечное дерево. Например, в следующем примере требуется отсортированный набор чисел:

<xsl:template match='items'>

<xsl:for-each select='item'>

<xsl:sort select='.'/>

<p>

<xsl:number value='position()' format='1. '/>

<xsl:value-of select='.'/>

</p>

</xsl:for-each>

</xsl:template>

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

Атрибут level определяет, какие уровни исходного дерева следует рассматривать. Он имеет значения single, multiple или any. По умолчанию используется single.

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

Атрибут from является образцом, указывающим, где начинается счёт.

Кроме того, атрибуты, описанные в главе [7.7.1 Атрибуты преобразования числа в строку], используются для преобразования числа в строку, как и в случае когда указан атрибут value.

Сперва элемент xsl:number строит список положительных целых чисел, используя атрибуты level, count и from:

Если задано level='single', на оси ancesor-or-self берется первый узел, соответствующий образцу count, и строится список длиною единица, содержащий один плюс число узлов, которые соответствуют образцу count, предшествующих данному предку и имеют с ним общего родителя. Если такого предка нет, создается пустой список. Если указан атрибут from, то ищутся лишь те предки, которые являются потомками ближайшего предка, соответствующего образцу from. В этом случае предшествующие узлы, имеющие общего родителя, те же самые как при использовании оси preceding-sibling.

Если указано level='multiple', то создается перечень всех предков текущего узла в том порядке, как они встречаются в документе, а список завершает сам этот элемент. Затем из этого перечня выбираются узлы соответствующие образцу count . И, наконец, каждый узел в этом списке замещается единицей плюс количество предшествующих узлов, имеющих того же родителя и соответствующих образцу count. Если указан атрибут from, то ищутся лишь те предки, которые являются потомками ближайшего предка, соответствующего образцу from. Предшествующие узлы, имеющие того же родителя – те же самые как при использовании оси preceding-sibling.

Если указано level='any' , то создается список единичной длины,

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату