Вход/Регистрация
Технология XSLT
вернуться

Валиков Алексей Н.

Шрифт:

Таблица 8.3. Форматирующие токены

Токен Описание Примеры
Токен Преобразование
1
Форматирует номер в виде строкового представления десятичного числа
1
1
→
'1'
1
2
→
'2'
1
10
→
'10'
1
999
→
'999'
1
1000
→
'1000'
0...01
Форматирует номер в виде строкового представления десятичного числа; если получившая строка короче токена, она дополняется предшествующими нулями
0001
1
→
'0001'
001
2
→
'002'
001
10
→
'010'
01
999
→
'999'
00001
1000
→
'01000'
A
Форматирует номер в виде последовательности заглавных букв латинского алфавита
A
1
→
'A'
A
2
→
'B'
A
10
→
'J'
A
27
→
'AA'
A
999
→
'ALK'
A
1000
→
'ALL'
a
Форматирует номер в виде последовательности строчных букв латинского алфавита
a
1
→
'a'
a
2
→
'b'
a
10
→
'j'
a
27
→
'aa'
a
999
→
'alk'
a
1000
→
'all'
I
Форматирует номер заглавными римскими цифрами
I
1
→
'I'
I
2
→
'II'
I
10
→
'X'
I
27
→
'XXVII'
I
999
→
'IM'
I
1000
→
'M'
i
Форматирует номер строчными римскими цифрами
i
1
→
'i'
i
2
→
'ii'
i
10
→
'x'
i
27
→
'xxvii'
i
999
→
'im'
i
1000
→
'm'
Другой Форматирует номер
k
как
k
– й член последовательности, начинающейся этим токеном. Если нумерация таким токеном не поддерживается, вместо него используется токен
1
.
Не поддерживающийся токен
1
→
'1'
b
10
→
'k'
Б
2
→
'В'
Б
27
→
'Ы'
á
999
→
'ανψ'
å
1000
→
'βζο'

При использовании алфавитной нумерации процессор может учитывать значение атрибута

lang
элемента
xsl:number
для того, чтобы использовать буквы алфавита соответствующего языка. Однако на практике возможность эта поддерживается очень слабо: большинство процессоров поддерживают алфавитную нумерацию только с использованием латиницы. Поэтому для того, чтобы использовать при алфавитной нумерации кириллицу, вместо атрибута
lang
следует использовать форматирующие токены "
А
" (русская заглавная буква "
А
") и "
&#х430;
" (русская строчная буква "
а
").

Пример

Для форматирования номеров в последовательности

1.1.a
,
1.1.б
,
1.1.в
, …,
1.2.а
и так далее можно использовать объявление вида:

<xsl:number

 format="1.&#х430;"

 level="multiple"

 count="chapter|section"

 from="doc"/>

Представим теперь себе следующую ситуацию: нам нужно начать нумерацию с латинской буквы

i
для того, чтобы получить последовательность номеров вида
i
,
j
,
k
,
l
,
m
и так далее. Первое, что приходит в голову — это запись вида

<xsl:number format="i" ... />

Однако вместо требуемой последовательности мы получим последовательность строчных римских цифр:

i
,
ii
,
iii
и так далее. Иными словами, некоторые форматирующие токены определяют нумерующую последовательность двусмысленно: одним вариантом является алфавитная последовательность, начинающаяся этим токеном, другим — некая традиционная для данного языка (например, последовательность римских цифр для английского).Для того чтобы различать эти последовательности в двусмысленных ситуациях, в
xsl:number
существует атрибут
letter-value
. Если его значением является
"alphabetic"
, нумерующая последовательность является алфавитной, значение
"traditional"
указывает на то, что следует использовать традиционный для данного языка способ. Если атрибут
letter-value
опущен, процессор может сам выбирать между алфавитным и традиционным способами нумерации.

При использовании цифровых форматов нумерации (иными словами, токенов вида

1
,
01
,
001
и так далее) цифры в номере можно разделить на группы, получив, например, такие номера как "
2.00.00
" из
20000
или "
0-0-0-2
" из 2. Для этой цели в
xsl:number
используется пара атрибутов
grouping-separator
и
grouping-size
.

Атрибут

grouping-separator
задает символ, который следует использовать для разбивки номера на группы цифр, в то время как
grouping-size
указывает размер группы. Эти атрибуты всегда должны быть вместе — если хотя бы один из них опущен, второй просто игнорируется.

Пример

Элемент

xsl:number
вида

<xsl:number

 format="[00000001]"

 grouping-separator="."

 grouping-size="2"/>

будет генерировать номера в следующей последовательности:

1
→
'[00.00.00.01]'

2
→
'[00.00.00.02]'

...

999
→
'[00.00.09.99]'

1000
→
'[00.00.10.00]'

Пожалуй, следует упомянуть, что в значениях атрибутов

format
,
lang
, l
etter-value
,
grouping-size
и
grouping-separator
могут быть указаны шаблоны значений, иными словами могут использоваться выражения в фигурных скобках. Это может быть полезно, например, для того, чтобы сгенерировать форматирующие токены во время выполнения преобразования.

Пример

В следующем шаблоне формат номера секции зависит от значения атрибута

format
ее родительского узла:

<xsl:template match="section">

 <xsl:number

format="{../@format}-1 "

level="multiple"

count="chapter|section"/>

 <xsl:value-of select="@title"/>

</xsl:template>

При обработке входящего документа

<doc>

  • Читать дальше
  • 1
  • ...
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: