Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ППТС-2 / Лекции / Lect4-08.doc
Скачиваний:
5
Добавлен:
12.05.2015
Размер:
422.91 Кб
Скачать

3. Поздравление

3. Напоминание.

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

Атрибуты level,countиfromпоказывают, как будет нумероваться текущий узел.

Атрибут countсодержит образец, которому должны удовлетворять нумеруе­мые узлы. Узлы, не соответствующие этому образцу, просто не будут при­ниматься в расчет. Значением этого атрибута по умолчанию является образец, выбирающий узлы с тем же типом и именем, что и у текущего узла (если, у него есть имя). Так, если в приведенном примере в элементеxsl:numberзаменить атрибутvalueатрибутомcount="header", то список тем примет следующий вид:

1. Поздравление

2. Напоминание.

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

<xsl:number from="header[position()=1]"/>,

то список тем примет следующий вид:

1. Поздравление

. Напоминание.

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

Атрибут levelимеет три варианта значений:single,multipleиany, значением по умолчанию являетсяsingle. Процедура вычисления номеров существенным образом зависит от того, какой из этих вариантов используется: при методеsingleсчитаются элементы на одном уровне, при методеmultiple– на нескольких уровнях и при методеany– на любых уровнях дерева.

Пример использования атрибута level в элементе xsl:number:

Пусть задано следующее шаблонное правило для вывода адресатов сообщений в документе message.xml:

<xsl:template match="to" mode="level-multiple">

<p>

<xsl:number count="header | to" level="multiple"/>

<xsl:text>. </xsl:text>

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

</p>

</xsl:template>.

Тогда при выполнении шаблонного правила:

<xsl:template match="/">

<xsl:apply-templates

select="//header/to" mode="level-multiple"/>

</xsl:template>

будет выведено:

1.1. petrov@mail.com

2.1. sidorov@mail.com.

Если же в этом примере заменить значение атрибута levelнаany, то вывод изменится следующим образом:

2. petrov@mail.com

4. sidorov@mail.com.

Атрибут langзадает язык нумерации и его значения – те же, что и для атрибутаxml:lang, например,lang="ru".

Значение строки формата в атрибуте formatможет состоять из имеющих специальное значение алфавитно-цифровых символов1,A,a,Iиi, а также из любых других символов. Символ1обозначает нумерацию арабскими буквами, символыAиa– нумерацию большими и маленькими латинскими буквами, а символыIиi– нумерацию большими и маленькими римскими цифрами. Все остальные символы передаются в выводимую строку без изменения. Так, если для выводимых номеров тем задать следующий элемент:

<xsl:number count="header" format="01). "/>,

то список тем сообщений будет выведен в такой форме:

Соседние файлы в папке Лекции