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

3.3.8.3. Элементxsl:for-each

Элемент xsl:for-eachиспользуется для создания в выходящем документе повторяемых частей структуры и имеет следующий синтаксис:

<xsl:for-each

select="выражение"

>

<!--

Содержимое: элементы xsl:sort,

конструктор последовательности

-->

</xsl:for-each>

Обязательный атрибут selectуказывает вы­ражение, результатом вычисления которого должно быть множество узлов. Шаблон, содержащийся вxsl:for-each, будет выполнен процессором для каждого узла этого множества.

3.3.9. Сортировка в xslt

При преобразовании документа с помощью элементов xsl:for-eachиxsl:apply-templates, выбранные узлы по умолчанию обрабатываются в порядке про­смотра документа, который зависит от выражения, использованного в атри­бутеselectэтих элементов.

Элементы xsl:for-eachиxsl:apply-templatesмогут содержать один или несколько элементовxsl:sort, которые позволяют предварительно сорти­ровать обрабатываемое множество узлов.

Элемент xsl:sortимеет следующий синтаксис:

<xsl:sort

select = "выражение"

lang = "язык"

data-type = "text" | "number" | "имя"

order = "ascending" | "descending"

collation? = "URI"

stable = "yes" | "no"

case-order = "upper-first" | "lower-first"

data-type = "text" | "number" | "имя"

>

<!--

Содержимое: конструктор последовательности

-->

</xsl:sort>

Если xsl:for-eachиxsl:apply-templatesсодержат элементыxsl:sort, обработка множества узлов должна производиться не в порядке просмотра документа, а в порядке, который определяется ключами, вычис­ленными при помощиxsl:sort. Первый элементxsl:sort, присутствующий в родительском элементе, определяет первичный ключ сортировки, второй элемент – вторичный ключ, и так далее.

Элемент xsl:sortобладает атрибутомselect, значением которого является выражение, называемое также ключевым выражением. Это выражение вы­числяется для каждого узла обрабатываемого множества, преобразуется в строку и затем используется как значение ключа при сортировке. По умол­чанию значением этого атрибута является".", что означает, что в качестве значения ключа для каждого узла используется его строковое значение.

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

Элемент xsl:sortможет иметь следующие необязательные атрибуты, кото­рые указывают некоторые параметры сортировки:

  • Атрибут orderопределяет порядок, в котором узлы должны сортировать­ся по своим ключам. Этот атрибут может принимать только два значе­ния –"ascending", указывающее на восходящий порядок сортировки, и"descending", указывающее на нисходящий порядок (по умолчанию сортировка выполняется в восходящем порядке).

  • Атрибут langопределяет язык ключей сортировки (этот атрибут может иметь те же самые значения, что и атрибутxml:lang, например:"en","en-us","ru"и т. д.). Если значение этого атрибута не определено, процессор может либо определять язык исходя из параметров системы, либо сортировать строки исходя из порядка кодов символовUnicode.

  • Атрибут data-typeопределяет тип данных, который несут строковые значения ключей. Значение"text"(это значение по умолчанию) определяет, что ключи должны быть отсортированы в лексикографическом порядке исходя из языка, определенного атрибутомlangили парамет­рами системы. Значение"number"определяет, что ключи должны сравниваться в численном виде (если стро­ковое значение ключа не является числом, оно будет преобразовано к не-числу –NaN, и, поскольку нечисловые значения неупорядочены, соответствующий узел может появиться в отсортированном множестве где угодно). Значение"имя"тип данных, который определяется конкретным процессоромXSLT(например, сортировка дат).

  • Атрибут case-orderуказывает на порядок сортировки символов разных регистров. Если значение атрибута равно"upper-first", то заглавные символы должны идти первыми, если"lower-first" – первыми должны идти строчные символы. Значение этого атрибута по умолчанию зависит от процессора и языка сортировки. В большинстве случаев за­главные буквы идут первыми.

  • Атрибут stableзадает ("yes") или отменяет ("no") спецификацию ключа сортировки для первого сортируемого элемента. По умолчанию значение этого атрибута равно "yes".

  • Атрибут collationзадает ссылку на ресурс, содержащий правила сравнения строк.

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